/* tslint:disable */
/* eslint-disable */
/**
 * authentik
 * Making authentication simple.
 *
 * The version of the OpenAPI document: 2025.10.0-rc1
 * Contact: hello@goauthentik.io
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import * as runtime from '../runtime';
import type {
  ExtraRoleObjectPermission,
  ExtraRoleObjectPermissionRequest,
  ExtraUserObjectPermission,
  ExtraUserObjectPermissionRequest,
  GenericError,
  InitialPermissions,
  InitialPermissionsRequest,
  PaginatedExtraRoleObjectPermissionList,
  PaginatedExtraUserObjectPermissionList,
  PaginatedInitialPermissionsList,
  PaginatedPermissionList,
  PaginatedRoleAssignedObjectPermissionList,
  PaginatedRoleList,
  PaginatedUserAssignedObjectPermissionList,
  PatchedExtraRoleObjectPermissionRequest,
  PatchedExtraUserObjectPermissionRequest,
  PatchedInitialPermissionsRequest,
  PatchedPermissionAssignRequest,
  PatchedRoleRequest,
  Permission,
  PermissionAssignRequest,
  PermissionAssignResult,
  Role,
  RoleRequest,
  UsedBy,
  ValidationError,
} from '../models/index';
import {
    ExtraRoleObjectPermissionFromJSON,
    ExtraRoleObjectPermissionToJSON,
    ExtraRoleObjectPermissionRequestFromJSON,
    ExtraRoleObjectPermissionRequestToJSON,
    ExtraUserObjectPermissionFromJSON,
    ExtraUserObjectPermissionToJSON,
    ExtraUserObjectPermissionRequestFromJSON,
    ExtraUserObjectPermissionRequestToJSON,
    GenericErrorFromJSON,
    GenericErrorToJSON,
    InitialPermissionsFromJSON,
    InitialPermissionsToJSON,
    InitialPermissionsRequestFromJSON,
    InitialPermissionsRequestToJSON,
    PaginatedExtraRoleObjectPermissionListFromJSON,
    PaginatedExtraRoleObjectPermissionListToJSON,
    PaginatedExtraUserObjectPermissionListFromJSON,
    PaginatedExtraUserObjectPermissionListToJSON,
    PaginatedInitialPermissionsListFromJSON,
    PaginatedInitialPermissionsListToJSON,
    PaginatedPermissionListFromJSON,
    PaginatedPermissionListToJSON,
    PaginatedRoleAssignedObjectPermissionListFromJSON,
    PaginatedRoleAssignedObjectPermissionListToJSON,
    PaginatedRoleListFromJSON,
    PaginatedRoleListToJSON,
    PaginatedUserAssignedObjectPermissionListFromJSON,
    PaginatedUserAssignedObjectPermissionListToJSON,
    PatchedExtraRoleObjectPermissionRequestFromJSON,
    PatchedExtraRoleObjectPermissionRequestToJSON,
    PatchedExtraUserObjectPermissionRequestFromJSON,
    PatchedExtraUserObjectPermissionRequestToJSON,
    PatchedInitialPermissionsRequestFromJSON,
    PatchedInitialPermissionsRequestToJSON,
    PatchedPermissionAssignRequestFromJSON,
    PatchedPermissionAssignRequestToJSON,
    PatchedRoleRequestFromJSON,
    PatchedRoleRequestToJSON,
    PermissionFromJSON,
    PermissionToJSON,
    PermissionAssignRequestFromJSON,
    PermissionAssignRequestToJSON,
    PermissionAssignResultFromJSON,
    PermissionAssignResultToJSON,
    RoleFromJSON,
    RoleToJSON,
    RoleRequestFromJSON,
    RoleRequestToJSON,
    UsedByFromJSON,
    UsedByToJSON,
    ValidationErrorFromJSON,
    ValidationErrorToJSON,
} from '../models/index';

export interface RbacInitialPermissionsCreateRequest {
    initialPermissionsRequest: InitialPermissionsRequest;
}

export interface RbacInitialPermissionsDestroyRequest {
    id: number;
}

export interface RbacInitialPermissionsListRequest {
    name?: string;
    ordering?: string;
    page?: number;
    pageSize?: number;
    search?: string;
}

export interface RbacInitialPermissionsPartialUpdateRequest {
    id: number;
    patchedInitialPermissionsRequest?: PatchedInitialPermissionsRequest;
}

export interface RbacInitialPermissionsRetrieveRequest {
    id: number;
}

export interface RbacInitialPermissionsUpdateRequest {
    id: number;
    initialPermissionsRequest: InitialPermissionsRequest;
}

export interface RbacInitialPermissionsUsedByListRequest {
    id: number;
}

export interface RbacPermissionsAssignedByRolesAssignRequest {
    uuid: string;
    permissionAssignRequest: PermissionAssignRequest;
}

export interface RbacPermissionsAssignedByRolesListRequest {
    model: RbacPermissionsAssignedByRolesListModelEnum;
    objectPk?: string;
    ordering?: string;
    page?: number;
    pageSize?: number;
    search?: string;
}

export interface RbacPermissionsAssignedByRolesUnassignPartialUpdateRequest {
    uuid: string;
    patchedPermissionAssignRequest?: PatchedPermissionAssignRequest;
}

export interface RbacPermissionsAssignedByUsersAssignRequest {
    id: number;
    permissionAssignRequest: PermissionAssignRequest;
}

export interface RbacPermissionsAssignedByUsersListRequest {
    model: RbacPermissionsAssignedByUsersListModelEnum;
    objectPk?: string;
    ordering?: string;
    page?: number;
    pageSize?: number;
    search?: string;
}

export interface RbacPermissionsAssignedByUsersUnassignPartialUpdateRequest {
    id: number;
    patchedPermissionAssignRequest?: PatchedPermissionAssignRequest;
}

export interface RbacPermissionsListRequest {
    codename?: string;
    contentTypeAppLabel?: string;
    contentTypeModel?: string;
    ordering?: string;
    page?: number;
    pageSize?: number;
    role?: string;
    search?: string;
    user?: number;
}

export interface RbacPermissionsRetrieveRequest {
    id: number;
}

export interface RbacPermissionsRolesDestroyRequest {
    id: number;
}

export interface RbacPermissionsRolesListRequest {
    ordering?: string;
    page?: number;
    pageSize?: number;
    search?: string;
    uuid?: string;
}

export interface RbacPermissionsRolesPartialUpdateRequest {
    id: number;
    patchedExtraRoleObjectPermissionRequest?: PatchedExtraRoleObjectPermissionRequest;
}

export interface RbacPermissionsRolesRetrieveRequest {
    id: number;
}

export interface RbacPermissionsRolesUpdateRequest {
    id: number;
    extraRoleObjectPermissionRequest: ExtraRoleObjectPermissionRequest;
}

export interface RbacPermissionsUsersDestroyRequest {
    id: number;
}

export interface RbacPermissionsUsersListRequest {
    ordering?: string;
    page?: number;
    pageSize?: number;
    search?: string;
    userId?: number;
}

export interface RbacPermissionsUsersPartialUpdateRequest {
    id: number;
    patchedExtraUserObjectPermissionRequest?: PatchedExtraUserObjectPermissionRequest;
}

export interface RbacPermissionsUsersRetrieveRequest {
    id: number;
}

export interface RbacPermissionsUsersUpdateRequest {
    id: number;
    extraUserObjectPermissionRequest: ExtraUserObjectPermissionRequest;
}

export interface RbacRolesCreateRequest {
    roleRequest: RoleRequest;
}

export interface RbacRolesDestroyRequest {
    uuid: string;
}

export interface RbacRolesListRequest {
    groupName?: string;
    ordering?: string;
    page?: number;
    pageSize?: number;
    search?: string;
}

export interface RbacRolesPartialUpdateRequest {
    uuid: string;
    patchedRoleRequest?: PatchedRoleRequest;
}

export interface RbacRolesRetrieveRequest {
    uuid: string;
}

export interface RbacRolesUpdateRequest {
    uuid: string;
    roleRequest: RoleRequest;
}

export interface RbacRolesUsedByListRequest {
    uuid: string;
}

/**
 * 
 */
export class RbacApi extends runtime.BaseAPI {

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsCreateRaw(requestParameters: RbacInitialPermissionsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<InitialPermissions>> {
        if (requestParameters['initialPermissionsRequest'] == null) {
            throw new runtime.RequiredError(
                'initialPermissionsRequest',
                'Required parameter "initialPermissionsRequest" was null or undefined when calling rbacInitialPermissionsCreate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/initial_permissions/`;

        const response = await this.request({
            path: urlPath,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: InitialPermissionsRequestToJSON(requestParameters['initialPermissionsRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => InitialPermissionsFromJSON(jsonValue));
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsCreate(requestParameters: RbacInitialPermissionsCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<InitialPermissions> {
        const response = await this.rbacInitialPermissionsCreateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsDestroyRaw(requestParameters: RbacInitialPermissionsDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacInitialPermissionsDestroy().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/initial_permissions/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsDestroy(requestParameters: RbacInitialPermissionsDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.rbacInitialPermissionsDestroyRaw(requestParameters, initOverrides);
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsListRaw(requestParameters: RbacInitialPermissionsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedInitialPermissionsList>> {
        const queryParameters: any = {};

        if (requestParameters['name'] != null) {
            queryParameters['name'] = requestParameters['name'];
        }

        if (requestParameters['ordering'] != null) {
            queryParameters['ordering'] = requestParameters['ordering'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['pageSize'] != null) {
            queryParameters['page_size'] = requestParameters['pageSize'];
        }

        if (requestParameters['search'] != null) {
            queryParameters['search'] = requestParameters['search'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/initial_permissions/`;

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedInitialPermissionsListFromJSON(jsonValue));
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsList(requestParameters: RbacInitialPermissionsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedInitialPermissionsList> {
        const response = await this.rbacInitialPermissionsListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsPartialUpdateRaw(requestParameters: RbacInitialPermissionsPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<InitialPermissions>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacInitialPermissionsPartialUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/initial_permissions/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'PATCH',
            headers: headerParameters,
            query: queryParameters,
            body: PatchedInitialPermissionsRequestToJSON(requestParameters['patchedInitialPermissionsRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => InitialPermissionsFromJSON(jsonValue));
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsPartialUpdate(requestParameters: RbacInitialPermissionsPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<InitialPermissions> {
        const response = await this.rbacInitialPermissionsPartialUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsRetrieveRaw(requestParameters: RbacInitialPermissionsRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<InitialPermissions>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacInitialPermissionsRetrieve().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/initial_permissions/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => InitialPermissionsFromJSON(jsonValue));
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsRetrieve(requestParameters: RbacInitialPermissionsRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<InitialPermissions> {
        const response = await this.rbacInitialPermissionsRetrieveRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsUpdateRaw(requestParameters: RbacInitialPermissionsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<InitialPermissions>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacInitialPermissionsUpdate().'
            );
        }

        if (requestParameters['initialPermissionsRequest'] == null) {
            throw new runtime.RequiredError(
                'initialPermissionsRequest',
                'Required parameter "initialPermissionsRequest" was null or undefined when calling rbacInitialPermissionsUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/initial_permissions/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: InitialPermissionsRequestToJSON(requestParameters['initialPermissionsRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => InitialPermissionsFromJSON(jsonValue));
    }

    /**
     * InitialPermissions viewset
     */
    async rbacInitialPermissionsUpdate(requestParameters: RbacInitialPermissionsUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<InitialPermissions> {
        const response = await this.rbacInitialPermissionsUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a list of all objects that use this object
     */
    async rbacInitialPermissionsUsedByListRaw(requestParameters: RbacInitialPermissionsUsedByListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<UsedBy>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacInitialPermissionsUsedByList().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/initial_permissions/{id}/used_by/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON));
    }

    /**
     * Get a list of all objects that use this object
     */
    async rbacInitialPermissionsUsedByList(requestParameters: RbacInitialPermissionsUsedByListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<UsedBy>> {
        const response = await this.rbacInitialPermissionsUsedByListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Assign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally.
     */
    async rbacPermissionsAssignedByRolesAssignRaw(requestParameters: RbacPermissionsAssignedByRolesAssignRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PermissionAssignResult>>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling rbacPermissionsAssignedByRolesAssign().'
            );
        }

        if (requestParameters['permissionAssignRequest'] == null) {
            throw new runtime.RequiredError(
                'permissionAssignRequest',
                'Required parameter "permissionAssignRequest" was null or undefined when calling rbacPermissionsAssignedByRolesAssign().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/assigned_by_roles/{uuid}/assign/`;
        urlPath = urlPath.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid'])));

        const response = await this.request({
            path: urlPath,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: PermissionAssignRequestToJSON(requestParameters['permissionAssignRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PermissionAssignResultFromJSON));
    }

    /**
     * Assign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally.
     */
    async rbacPermissionsAssignedByRolesAssign(requestParameters: RbacPermissionsAssignedByRolesAssignRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PermissionAssignResult>> {
        const response = await this.rbacPermissionsAssignedByRolesAssignRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get assigned object permissions for a single object
     */
    async rbacPermissionsAssignedByRolesListRaw(requestParameters: RbacPermissionsAssignedByRolesListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedRoleAssignedObjectPermissionList>> {
        if (requestParameters['model'] == null) {
            throw new runtime.RequiredError(
                'model',
                'Required parameter "model" was null or undefined when calling rbacPermissionsAssignedByRolesList().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['model'] != null) {
            queryParameters['model'] = requestParameters['model'];
        }

        if (requestParameters['objectPk'] != null) {
            queryParameters['object_pk'] = requestParameters['objectPk'];
        }

        if (requestParameters['ordering'] != null) {
            queryParameters['ordering'] = requestParameters['ordering'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['pageSize'] != null) {
            queryParameters['page_size'] = requestParameters['pageSize'];
        }

        if (requestParameters['search'] != null) {
            queryParameters['search'] = requestParameters['search'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/assigned_by_roles/`;

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedRoleAssignedObjectPermissionListFromJSON(jsonValue));
    }

    /**
     * Get assigned object permissions for a single object
     */
    async rbacPermissionsAssignedByRolesList(requestParameters: RbacPermissionsAssignedByRolesListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedRoleAssignedObjectPermissionList> {
        const response = await this.rbacPermissionsAssignedByRolesListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Unassign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally.
     */
    async rbacPermissionsAssignedByRolesUnassignPartialUpdateRaw(requestParameters: RbacPermissionsAssignedByRolesUnassignPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling rbacPermissionsAssignedByRolesUnassignPartialUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/assigned_by_roles/{uuid}/unassign/`;
        urlPath = urlPath.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid'])));

        const response = await this.request({
            path: urlPath,
            method: 'PATCH',
            headers: headerParameters,
            query: queryParameters,
            body: PatchedPermissionAssignRequestToJSON(requestParameters['patchedPermissionAssignRequest']),
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Unassign permission(s) to role. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally.
     */
    async rbacPermissionsAssignedByRolesUnassignPartialUpdate(requestParameters: RbacPermissionsAssignedByRolesUnassignPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.rbacPermissionsAssignedByRolesUnassignPartialUpdateRaw(requestParameters, initOverrides);
    }

    /**
     * Assign permission(s) to user
     */
    async rbacPermissionsAssignedByUsersAssignRaw(requestParameters: RbacPermissionsAssignedByUsersAssignRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PermissionAssignResult>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsAssignedByUsersAssign().'
            );
        }

        if (requestParameters['permissionAssignRequest'] == null) {
            throw new runtime.RequiredError(
                'permissionAssignRequest',
                'Required parameter "permissionAssignRequest" was null or undefined when calling rbacPermissionsAssignedByUsersAssign().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/assigned_by_users/{id}/assign/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: PermissionAssignRequestToJSON(requestParameters['permissionAssignRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PermissionAssignResultFromJSON));
    }

    /**
     * Assign permission(s) to user
     */
    async rbacPermissionsAssignedByUsersAssign(requestParameters: RbacPermissionsAssignedByUsersAssignRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PermissionAssignResult>> {
        const response = await this.rbacPermissionsAssignedByUsersAssignRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get assigned object permissions for a single object
     */
    async rbacPermissionsAssignedByUsersListRaw(requestParameters: RbacPermissionsAssignedByUsersListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedUserAssignedObjectPermissionList>> {
        if (requestParameters['model'] == null) {
            throw new runtime.RequiredError(
                'model',
                'Required parameter "model" was null or undefined when calling rbacPermissionsAssignedByUsersList().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['model'] != null) {
            queryParameters['model'] = requestParameters['model'];
        }

        if (requestParameters['objectPk'] != null) {
            queryParameters['object_pk'] = requestParameters['objectPk'];
        }

        if (requestParameters['ordering'] != null) {
            queryParameters['ordering'] = requestParameters['ordering'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['pageSize'] != null) {
            queryParameters['page_size'] = requestParameters['pageSize'];
        }

        if (requestParameters['search'] != null) {
            queryParameters['search'] = requestParameters['search'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/assigned_by_users/`;

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedUserAssignedObjectPermissionListFromJSON(jsonValue));
    }

    /**
     * Get assigned object permissions for a single object
     */
    async rbacPermissionsAssignedByUsersList(requestParameters: RbacPermissionsAssignedByUsersListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedUserAssignedObjectPermissionList> {
        const response = await this.rbacPermissionsAssignedByUsersListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Unassign permission(s) to user. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally.
     */
    async rbacPermissionsAssignedByUsersUnassignPartialUpdateRaw(requestParameters: RbacPermissionsAssignedByUsersUnassignPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsAssignedByUsersUnassignPartialUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/assigned_by_users/{id}/unassign/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'PATCH',
            headers: headerParameters,
            query: queryParameters,
            body: PatchedPermissionAssignRequestToJSON(requestParameters['patchedPermissionAssignRequest']),
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Unassign permission(s) to user. When `object_pk` is set, the permissions are only assigned to the specific object, otherwise they are assigned globally.
     */
    async rbacPermissionsAssignedByUsersUnassignPartialUpdate(requestParameters: RbacPermissionsAssignedByUsersUnassignPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.rbacPermissionsAssignedByUsersUnassignPartialUpdateRaw(requestParameters, initOverrides);
    }

    /**
     * Read-only list of all permissions, filterable by model and app
     */
    async rbacPermissionsListRaw(requestParameters: RbacPermissionsListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedPermissionList>> {
        const queryParameters: any = {};

        if (requestParameters['codename'] != null) {
            queryParameters['codename'] = requestParameters['codename'];
        }

        if (requestParameters['contentTypeAppLabel'] != null) {
            queryParameters['content_type__app_label'] = requestParameters['contentTypeAppLabel'];
        }

        if (requestParameters['contentTypeModel'] != null) {
            queryParameters['content_type__model'] = requestParameters['contentTypeModel'];
        }

        if (requestParameters['ordering'] != null) {
            queryParameters['ordering'] = requestParameters['ordering'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['pageSize'] != null) {
            queryParameters['page_size'] = requestParameters['pageSize'];
        }

        if (requestParameters['role'] != null) {
            queryParameters['role'] = requestParameters['role'];
        }

        if (requestParameters['search'] != null) {
            queryParameters['search'] = requestParameters['search'];
        }

        if (requestParameters['user'] != null) {
            queryParameters['user'] = requestParameters['user'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/`;

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedPermissionListFromJSON(jsonValue));
    }

    /**
     * Read-only list of all permissions, filterable by model and app
     */
    async rbacPermissionsList(requestParameters: RbacPermissionsListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedPermissionList> {
        const response = await this.rbacPermissionsListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Read-only list of all permissions, filterable by model and app
     */
    async rbacPermissionsRetrieveRaw(requestParameters: RbacPermissionsRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Permission>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsRetrieve().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PermissionFromJSON(jsonValue));
    }

    /**
     * Read-only list of all permissions, filterable by model and app
     */
    async rbacPermissionsRetrieve(requestParameters: RbacPermissionsRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Permission> {
        const response = await this.rbacPermissionsRetrieveRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesDestroyRaw(requestParameters: RbacPermissionsRolesDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsRolesDestroy().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/roles/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesDestroy(requestParameters: RbacPermissionsRolesDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.rbacPermissionsRolesDestroyRaw(requestParameters, initOverrides);
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesListRaw(requestParameters: RbacPermissionsRolesListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedExtraRoleObjectPermissionList>> {
        const queryParameters: any = {};

        if (requestParameters['ordering'] != null) {
            queryParameters['ordering'] = requestParameters['ordering'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['pageSize'] != null) {
            queryParameters['page_size'] = requestParameters['pageSize'];
        }

        if (requestParameters['search'] != null) {
            queryParameters['search'] = requestParameters['search'];
        }

        if (requestParameters['uuid'] != null) {
            queryParameters['uuid'] = requestParameters['uuid'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/roles/`;

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedExtraRoleObjectPermissionListFromJSON(jsonValue));
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesList(requestParameters: RbacPermissionsRolesListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedExtraRoleObjectPermissionList> {
        const response = await this.rbacPermissionsRolesListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesPartialUpdateRaw(requestParameters: RbacPermissionsRolesPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ExtraRoleObjectPermission>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsRolesPartialUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/roles/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'PATCH',
            headers: headerParameters,
            query: queryParameters,
            body: PatchedExtraRoleObjectPermissionRequestToJSON(requestParameters['patchedExtraRoleObjectPermissionRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ExtraRoleObjectPermissionFromJSON(jsonValue));
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesPartialUpdate(requestParameters: RbacPermissionsRolesPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ExtraRoleObjectPermission> {
        const response = await this.rbacPermissionsRolesPartialUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesRetrieveRaw(requestParameters: RbacPermissionsRolesRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ExtraRoleObjectPermission>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsRolesRetrieve().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/roles/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ExtraRoleObjectPermissionFromJSON(jsonValue));
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesRetrieve(requestParameters: RbacPermissionsRolesRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ExtraRoleObjectPermission> {
        const response = await this.rbacPermissionsRolesRetrieveRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesUpdateRaw(requestParameters: RbacPermissionsRolesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ExtraRoleObjectPermission>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsRolesUpdate().'
            );
        }

        if (requestParameters['extraRoleObjectPermissionRequest'] == null) {
            throw new runtime.RequiredError(
                'extraRoleObjectPermissionRequest',
                'Required parameter "extraRoleObjectPermissionRequest" was null or undefined when calling rbacPermissionsRolesUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/roles/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: ExtraRoleObjectPermissionRequestToJSON(requestParameters['extraRoleObjectPermissionRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ExtraRoleObjectPermissionFromJSON(jsonValue));
    }

    /**
     * Get a role\'s assigned object permissions
     */
    async rbacPermissionsRolesUpdate(requestParameters: RbacPermissionsRolesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ExtraRoleObjectPermission> {
        const response = await this.rbacPermissionsRolesUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersDestroyRaw(requestParameters: RbacPermissionsUsersDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsUsersDestroy().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/users/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersDestroy(requestParameters: RbacPermissionsUsersDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.rbacPermissionsUsersDestroyRaw(requestParameters, initOverrides);
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersListRaw(requestParameters: RbacPermissionsUsersListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedExtraUserObjectPermissionList>> {
        const queryParameters: any = {};

        if (requestParameters['ordering'] != null) {
            queryParameters['ordering'] = requestParameters['ordering'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['pageSize'] != null) {
            queryParameters['page_size'] = requestParameters['pageSize'];
        }

        if (requestParameters['search'] != null) {
            queryParameters['search'] = requestParameters['search'];
        }

        if (requestParameters['userId'] != null) {
            queryParameters['user_id'] = requestParameters['userId'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/users/`;

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedExtraUserObjectPermissionListFromJSON(jsonValue));
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersList(requestParameters: RbacPermissionsUsersListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedExtraUserObjectPermissionList> {
        const response = await this.rbacPermissionsUsersListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersPartialUpdateRaw(requestParameters: RbacPermissionsUsersPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ExtraUserObjectPermission>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsUsersPartialUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/users/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'PATCH',
            headers: headerParameters,
            query: queryParameters,
            body: PatchedExtraUserObjectPermissionRequestToJSON(requestParameters['patchedExtraUserObjectPermissionRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ExtraUserObjectPermissionFromJSON(jsonValue));
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersPartialUpdate(requestParameters: RbacPermissionsUsersPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ExtraUserObjectPermission> {
        const response = await this.rbacPermissionsUsersPartialUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersRetrieveRaw(requestParameters: RbacPermissionsUsersRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ExtraUserObjectPermission>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsUsersRetrieve().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/users/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ExtraUserObjectPermissionFromJSON(jsonValue));
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersRetrieve(requestParameters: RbacPermissionsUsersRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ExtraUserObjectPermission> {
        const response = await this.rbacPermissionsUsersRetrieveRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersUpdateRaw(requestParameters: RbacPermissionsUsersUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ExtraUserObjectPermission>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling rbacPermissionsUsersUpdate().'
            );
        }

        if (requestParameters['extraUserObjectPermissionRequest'] == null) {
            throw new runtime.RequiredError(
                'extraUserObjectPermissionRequest',
                'Required parameter "extraUserObjectPermissionRequest" was null or undefined when calling rbacPermissionsUsersUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/permissions/users/{id}/`;
        urlPath = urlPath.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id'])));

        const response = await this.request({
            path: urlPath,
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: ExtraUserObjectPermissionRequestToJSON(requestParameters['extraUserObjectPermissionRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ExtraUserObjectPermissionFromJSON(jsonValue));
    }

    /**
     * Get a users\'s assigned object permissions
     */
    async rbacPermissionsUsersUpdate(requestParameters: RbacPermissionsUsersUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ExtraUserObjectPermission> {
        const response = await this.rbacPermissionsUsersUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Role viewset
     */
    async rbacRolesCreateRaw(requestParameters: RbacRolesCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Role>> {
        if (requestParameters['roleRequest'] == null) {
            throw new runtime.RequiredError(
                'roleRequest',
                'Required parameter "roleRequest" was null or undefined when calling rbacRolesCreate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/roles/`;

        const response = await this.request({
            path: urlPath,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: RoleRequestToJSON(requestParameters['roleRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue));
    }

    /**
     * Role viewset
     */
    async rbacRolesCreate(requestParameters: RbacRolesCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Role> {
        const response = await this.rbacRolesCreateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Role viewset
     */
    async rbacRolesDestroyRaw(requestParameters: RbacRolesDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling rbacRolesDestroy().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/roles/{uuid}/`;
        urlPath = urlPath.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid'])));

        const response = await this.request({
            path: urlPath,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Role viewset
     */
    async rbacRolesDestroy(requestParameters: RbacRolesDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.rbacRolesDestroyRaw(requestParameters, initOverrides);
    }

    /**
     * Role viewset
     */
    async rbacRolesListRaw(requestParameters: RbacRolesListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedRoleList>> {
        const queryParameters: any = {};

        if (requestParameters['groupName'] != null) {
            queryParameters['group__name'] = requestParameters['groupName'];
        }

        if (requestParameters['ordering'] != null) {
            queryParameters['ordering'] = requestParameters['ordering'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['pageSize'] != null) {
            queryParameters['page_size'] = requestParameters['pageSize'];
        }

        if (requestParameters['search'] != null) {
            queryParameters['search'] = requestParameters['search'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/roles/`;

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedRoleListFromJSON(jsonValue));
    }

    /**
     * Role viewset
     */
    async rbacRolesList(requestParameters: RbacRolesListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedRoleList> {
        const response = await this.rbacRolesListRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Role viewset
     */
    async rbacRolesPartialUpdateRaw(requestParameters: RbacRolesPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Role>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling rbacRolesPartialUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/roles/{uuid}/`;
        urlPath = urlPath.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid'])));

        const response = await this.request({
            path: urlPath,
            method: 'PATCH',
            headers: headerParameters,
            query: queryParameters,
            body: PatchedRoleRequestToJSON(requestParameters['patchedRoleRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue));
    }

    /**
     * Role viewset
     */
    async rbacRolesPartialUpdate(requestParameters: RbacRolesPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Role> {
        const response = await this.rbacRolesPartialUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Role viewset
     */
    async rbacRolesRetrieveRaw(requestParameters: RbacRolesRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Role>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling rbacRolesRetrieve().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/roles/{uuid}/`;
        urlPath = urlPath.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid'])));

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue));
    }

    /**
     * Role viewset
     */
    async rbacRolesRetrieve(requestParameters: RbacRolesRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Role> {
        const response = await this.rbacRolesRetrieveRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Role viewset
     */
    async rbacRolesUpdateRaw(requestParameters: RbacRolesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Role>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling rbacRolesUpdate().'
            );
        }

        if (requestParameters['roleRequest'] == null) {
            throw new runtime.RequiredError(
                'roleRequest',
                'Required parameter "roleRequest" was null or undefined when calling rbacRolesUpdate().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/roles/{uuid}/`;
        urlPath = urlPath.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid'])));

        const response = await this.request({
            path: urlPath,
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: RoleRequestToJSON(requestParameters['roleRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => RoleFromJSON(jsonValue));
    }

    /**
     * Role viewset
     */
    async rbacRolesUpdate(requestParameters: RbacRolesUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Role> {
        const response = await this.rbacRolesUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get a list of all objects that use this object
     */
    async rbacRolesUsedByListRaw(requestParameters: RbacRolesUsedByListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<UsedBy>>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling rbacRolesUsedByList().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("authentik", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }

        let urlPath = `/rbac/roles/{uuid}/used_by/`;
        urlPath = urlPath.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid'])));

        const response = await this.request({
            path: urlPath,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UsedByFromJSON));
    }

    /**
     * Get a list of all objects that use this object
     */
    async rbacRolesUsedByList(requestParameters: RbacRolesUsedByListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<UsedBy>> {
        const response = await this.rbacRolesUsedByListRaw(requestParameters, initOverrides);
        return await response.value();
    }

}

/**
 * @export
 */
export const RbacPermissionsAssignedByRolesListModelEnum = {
    AuthentikBlueprintsBlueprintinstance: 'authentik_blueprints.blueprintinstance',
    AuthentikBrandsBrand: 'authentik_brands.brand',
    AuthentikCoreApplication: 'authentik_core.application',
    AuthentikCoreApplicationentitlement: 'authentik_core.applicationentitlement',
    AuthentikCoreGroup: 'authentik_core.group',
    AuthentikCoreToken: 'authentik_core.token',
    AuthentikCoreUser: 'authentik_core.user',
    AuthentikCryptoCertificatekeypair: 'authentik_crypto.certificatekeypair',
    AuthentikEnterpriseLicense: 'authentik_enterprise.license',
    AuthentikEventsEvent: 'authentik_events.event',
    AuthentikEventsNotification: 'authentik_events.notification',
    AuthentikEventsNotificationrule: 'authentik_events.notificationrule',
    AuthentikEventsNotificationtransport: 'authentik_events.notificationtransport',
    AuthentikEventsNotificationwebhookmapping: 'authentik_events.notificationwebhookmapping',
    AuthentikFlowsFlow: 'authentik_flows.flow',
    AuthentikFlowsFlowstagebinding: 'authentik_flows.flowstagebinding',
    AuthentikOutpostsDockerserviceconnection: 'authentik_outposts.dockerserviceconnection',
    AuthentikOutpostsKubernetesserviceconnection: 'authentik_outposts.kubernetesserviceconnection',
    AuthentikOutpostsOutpost: 'authentik_outposts.outpost',
    AuthentikPoliciesPolicybinding: 'authentik_policies.policybinding',
    AuthentikPoliciesDummyDummypolicy: 'authentik_policies_dummy.dummypolicy',
    AuthentikPoliciesEventMatcherEventmatcherpolicy: 'authentik_policies_event_matcher.eventmatcherpolicy',
    AuthentikPoliciesExpiryPasswordexpirypolicy: 'authentik_policies_expiry.passwordexpirypolicy',
    AuthentikPoliciesExpressionExpressionpolicy: 'authentik_policies_expression.expressionpolicy',
    AuthentikPoliciesGeoipGeoippolicy: 'authentik_policies_geoip.geoippolicy',
    AuthentikPoliciesPasswordPasswordpolicy: 'authentik_policies_password.passwordpolicy',
    AuthentikPoliciesReputationReputationpolicy: 'authentik_policies_reputation.reputationpolicy',
    AuthentikPoliciesUniquePasswordUniquepasswordpolicy: 'authentik_policies_unique_password.uniquepasswordpolicy',
    AuthentikProvidersGoogleWorkspaceGoogleworkspaceprovider: 'authentik_providers_google_workspace.googleworkspaceprovider',
    AuthentikProvidersGoogleWorkspaceGoogleworkspaceprovidermapping: 'authentik_providers_google_workspace.googleworkspaceprovidermapping',
    AuthentikProvidersLdapLdapprovider: 'authentik_providers_ldap.ldapprovider',
    AuthentikProvidersMicrosoftEntraMicrosoftentraprovider: 'authentik_providers_microsoft_entra.microsoftentraprovider',
    AuthentikProvidersMicrosoftEntraMicrosoftentraprovidermapping: 'authentik_providers_microsoft_entra.microsoftentraprovidermapping',
    AuthentikProvidersOauth2Oauth2provider: 'authentik_providers_oauth2.oauth2provider',
    AuthentikProvidersOauth2Scopemapping: 'authentik_providers_oauth2.scopemapping',
    AuthentikProvidersProxyProxyprovider: 'authentik_providers_proxy.proxyprovider',
    AuthentikProvidersRacEndpoint: 'authentik_providers_rac.endpoint',
    AuthentikProvidersRacRacpropertymapping: 'authentik_providers_rac.racpropertymapping',
    AuthentikProvidersRacRacprovider: 'authentik_providers_rac.racprovider',
    AuthentikProvidersRadiusRadiusprovider: 'authentik_providers_radius.radiusprovider',
    AuthentikProvidersRadiusRadiusproviderpropertymapping: 'authentik_providers_radius.radiusproviderpropertymapping',
    AuthentikProvidersSamlSamlpropertymapping: 'authentik_providers_saml.samlpropertymapping',
    AuthentikProvidersSamlSamlprovider: 'authentik_providers_saml.samlprovider',
    AuthentikProvidersScimScimmapping: 'authentik_providers_scim.scimmapping',
    AuthentikProvidersScimScimprovider: 'authentik_providers_scim.scimprovider',
    AuthentikProvidersSsfSsfprovider: 'authentik_providers_ssf.ssfprovider',
    AuthentikRbacInitialpermissions: 'authentik_rbac.initialpermissions',
    AuthentikRbacRole: 'authentik_rbac.role',
    AuthentikSourcesKerberosGroupkerberossourceconnection: 'authentik_sources_kerberos.groupkerberossourceconnection',
    AuthentikSourcesKerberosKerberossource: 'authentik_sources_kerberos.kerberossource',
    AuthentikSourcesKerberosKerberossourcepropertymapping: 'authentik_sources_kerberos.kerberossourcepropertymapping',
    AuthentikSourcesKerberosUserkerberossourceconnection: 'authentik_sources_kerberos.userkerberossourceconnection',
    AuthentikSourcesLdapGroupldapsourceconnection: 'authentik_sources_ldap.groupldapsourceconnection',
    AuthentikSourcesLdapLdapsource: 'authentik_sources_ldap.ldapsource',
    AuthentikSourcesLdapLdapsourcepropertymapping: 'authentik_sources_ldap.ldapsourcepropertymapping',
    AuthentikSourcesLdapUserldapsourceconnection: 'authentik_sources_ldap.userldapsourceconnection',
    AuthentikSourcesOauthGroupoauthsourceconnection: 'authentik_sources_oauth.groupoauthsourceconnection',
    AuthentikSourcesOauthOauthsource: 'authentik_sources_oauth.oauthsource',
    AuthentikSourcesOauthOauthsourcepropertymapping: 'authentik_sources_oauth.oauthsourcepropertymapping',
    AuthentikSourcesOauthUseroauthsourceconnection: 'authentik_sources_oauth.useroauthsourceconnection',
    AuthentikSourcesPlexGroupplexsourceconnection: 'authentik_sources_plex.groupplexsourceconnection',
    AuthentikSourcesPlexPlexsource: 'authentik_sources_plex.plexsource',
    AuthentikSourcesPlexPlexsourcepropertymapping: 'authentik_sources_plex.plexsourcepropertymapping',
    AuthentikSourcesPlexUserplexsourceconnection: 'authentik_sources_plex.userplexsourceconnection',
    AuthentikSourcesSamlGroupsamlsourceconnection: 'authentik_sources_saml.groupsamlsourceconnection',
    AuthentikSourcesSamlSamlsource: 'authentik_sources_saml.samlsource',
    AuthentikSourcesSamlSamlsourcepropertymapping: 'authentik_sources_saml.samlsourcepropertymapping',
    AuthentikSourcesSamlUsersamlsourceconnection: 'authentik_sources_saml.usersamlsourceconnection',
    AuthentikSourcesScimScimsource: 'authentik_sources_scim.scimsource',
    AuthentikSourcesScimScimsourcepropertymapping: 'authentik_sources_scim.scimsourcepropertymapping',
    AuthentikStagesAuthenticatorDuoAuthenticatorduostage: 'authentik_stages_authenticator_duo.authenticatorduostage',
    AuthentikStagesAuthenticatorDuoDuodevice: 'authentik_stages_authenticator_duo.duodevice',
    AuthentikStagesAuthenticatorEmailAuthenticatoremailstage: 'authentik_stages_authenticator_email.authenticatoremailstage',
    AuthentikStagesAuthenticatorEmailEmaildevice: 'authentik_stages_authenticator_email.emaildevice',
    AuthentikStagesAuthenticatorEndpointGdtcAuthenticatorendpointgdtcstage: 'authentik_stages_authenticator_endpoint_gdtc.authenticatorendpointgdtcstage',
    AuthentikStagesAuthenticatorSmsAuthenticatorsmsstage: 'authentik_stages_authenticator_sms.authenticatorsmsstage',
    AuthentikStagesAuthenticatorSmsSmsdevice: 'authentik_stages_authenticator_sms.smsdevice',
    AuthentikStagesAuthenticatorStaticAuthenticatorstaticstage: 'authentik_stages_authenticator_static.authenticatorstaticstage',
    AuthentikStagesAuthenticatorStaticStaticdevice: 'authentik_stages_authenticator_static.staticdevice',
    AuthentikStagesAuthenticatorTotpAuthenticatortotpstage: 'authentik_stages_authenticator_totp.authenticatortotpstage',
    AuthentikStagesAuthenticatorTotpTotpdevice: 'authentik_stages_authenticator_totp.totpdevice',
    AuthentikStagesAuthenticatorValidateAuthenticatorvalidatestage: 'authentik_stages_authenticator_validate.authenticatorvalidatestage',
    AuthentikStagesAuthenticatorWebauthnAuthenticatorwebauthnstage: 'authentik_stages_authenticator_webauthn.authenticatorwebauthnstage',
    AuthentikStagesAuthenticatorWebauthnWebauthndevice: 'authentik_stages_authenticator_webauthn.webauthndevice',
    AuthentikStagesCaptchaCaptchastage: 'authentik_stages_captcha.captchastage',
    AuthentikStagesConsentConsentstage: 'authentik_stages_consent.consentstage',
    AuthentikStagesConsentUserconsent: 'authentik_stages_consent.userconsent',
    AuthentikStagesDenyDenystage: 'authentik_stages_deny.denystage',
    AuthentikStagesDummyDummystage: 'authentik_stages_dummy.dummystage',
    AuthentikStagesEmailEmailstage: 'authentik_stages_email.emailstage',
    AuthentikStagesIdentificationIdentificationstage: 'authentik_stages_identification.identificationstage',
    AuthentikStagesInvitationInvitation: 'authentik_stages_invitation.invitation',
    AuthentikStagesInvitationInvitationstage: 'authentik_stages_invitation.invitationstage',
    AuthentikStagesMtlsMutualtlsstage: 'authentik_stages_mtls.mutualtlsstage',
    AuthentikStagesPasswordPasswordstage: 'authentik_stages_password.passwordstage',
    AuthentikStagesPromptPrompt: 'authentik_stages_prompt.prompt',
    AuthentikStagesPromptPromptstage: 'authentik_stages_prompt.promptstage',
    AuthentikStagesRedirectRedirectstage: 'authentik_stages_redirect.redirectstage',
    AuthentikStagesSourceSourcestage: 'authentik_stages_source.sourcestage',
    AuthentikStagesUserDeleteUserdeletestage: 'authentik_stages_user_delete.userdeletestage',
    AuthentikStagesUserLoginUserloginstage: 'authentik_stages_user_login.userloginstage',
    AuthentikStagesUserLogoutUserlogoutstage: 'authentik_stages_user_logout.userlogoutstage',
    AuthentikStagesUserWriteUserwritestage: 'authentik_stages_user_write.userwritestage',
    AuthentikTasksSchedulesSchedule: 'authentik_tasks_schedules.schedule',
    AuthentikTenantsDomain: 'authentik_tenants.domain',
    UnknownDefaultOpenApi: '11184809'
} as const;
export type RbacPermissionsAssignedByRolesListModelEnum = typeof RbacPermissionsAssignedByRolesListModelEnum[keyof typeof RbacPermissionsAssignedByRolesListModelEnum];
/**
 * @export
 */
export const RbacPermissionsAssignedByUsersListModelEnum = {
    AuthentikBlueprintsBlueprintinstance: 'authentik_blueprints.blueprintinstance',
    AuthentikBrandsBrand: 'authentik_brands.brand',
    AuthentikCoreApplication: 'authentik_core.application',
    AuthentikCoreApplicationentitlement: 'authentik_core.applicationentitlement',
    AuthentikCoreGroup: 'authentik_core.group',
    AuthentikCoreToken: 'authentik_core.token',
    AuthentikCoreUser: 'authentik_core.user',
    AuthentikCryptoCertificatekeypair: 'authentik_crypto.certificatekeypair',
    AuthentikEnterpriseLicense: 'authentik_enterprise.license',
    AuthentikEventsEvent: 'authentik_events.event',
    AuthentikEventsNotification: 'authentik_events.notification',
    AuthentikEventsNotificationrule: 'authentik_events.notificationrule',
    AuthentikEventsNotificationtransport: 'authentik_events.notificationtransport',
    AuthentikEventsNotificationwebhookmapping: 'authentik_events.notificationwebhookmapping',
    AuthentikFlowsFlow: 'authentik_flows.flow',
    AuthentikFlowsFlowstagebinding: 'authentik_flows.flowstagebinding',
    AuthentikOutpostsDockerserviceconnection: 'authentik_outposts.dockerserviceconnection',
    AuthentikOutpostsKubernetesserviceconnection: 'authentik_outposts.kubernetesserviceconnection',
    AuthentikOutpostsOutpost: 'authentik_outposts.outpost',
    AuthentikPoliciesPolicybinding: 'authentik_policies.policybinding',
    AuthentikPoliciesDummyDummypolicy: 'authentik_policies_dummy.dummypolicy',
    AuthentikPoliciesEventMatcherEventmatcherpolicy: 'authentik_policies_event_matcher.eventmatcherpolicy',
    AuthentikPoliciesExpiryPasswordexpirypolicy: 'authentik_policies_expiry.passwordexpirypolicy',
    AuthentikPoliciesExpressionExpressionpolicy: 'authentik_policies_expression.expressionpolicy',
    AuthentikPoliciesGeoipGeoippolicy: 'authentik_policies_geoip.geoippolicy',
    AuthentikPoliciesPasswordPasswordpolicy: 'authentik_policies_password.passwordpolicy',
    AuthentikPoliciesReputationReputationpolicy: 'authentik_policies_reputation.reputationpolicy',
    AuthentikPoliciesUniquePasswordUniquepasswordpolicy: 'authentik_policies_unique_password.uniquepasswordpolicy',
    AuthentikProvidersGoogleWorkspaceGoogleworkspaceprovider: 'authentik_providers_google_workspace.googleworkspaceprovider',
    AuthentikProvidersGoogleWorkspaceGoogleworkspaceprovidermapping: 'authentik_providers_google_workspace.googleworkspaceprovidermapping',
    AuthentikProvidersLdapLdapprovider: 'authentik_providers_ldap.ldapprovider',
    AuthentikProvidersMicrosoftEntraMicrosoftentraprovider: 'authentik_providers_microsoft_entra.microsoftentraprovider',
    AuthentikProvidersMicrosoftEntraMicrosoftentraprovidermapping: 'authentik_providers_microsoft_entra.microsoftentraprovidermapping',
    AuthentikProvidersOauth2Oauth2provider: 'authentik_providers_oauth2.oauth2provider',
    AuthentikProvidersOauth2Scopemapping: 'authentik_providers_oauth2.scopemapping',
    AuthentikProvidersProxyProxyprovider: 'authentik_providers_proxy.proxyprovider',
    AuthentikProvidersRacEndpoint: 'authentik_providers_rac.endpoint',
    AuthentikProvidersRacRacpropertymapping: 'authentik_providers_rac.racpropertymapping',
    AuthentikProvidersRacRacprovider: 'authentik_providers_rac.racprovider',
    AuthentikProvidersRadiusRadiusprovider: 'authentik_providers_radius.radiusprovider',
    AuthentikProvidersRadiusRadiusproviderpropertymapping: 'authentik_providers_radius.radiusproviderpropertymapping',
    AuthentikProvidersSamlSamlpropertymapping: 'authentik_providers_saml.samlpropertymapping',
    AuthentikProvidersSamlSamlprovider: 'authentik_providers_saml.samlprovider',
    AuthentikProvidersScimScimmapping: 'authentik_providers_scim.scimmapping',
    AuthentikProvidersScimScimprovider: 'authentik_providers_scim.scimprovider',
    AuthentikProvidersSsfSsfprovider: 'authentik_providers_ssf.ssfprovider',
    AuthentikRbacInitialpermissions: 'authentik_rbac.initialpermissions',
    AuthentikRbacRole: 'authentik_rbac.role',
    AuthentikSourcesKerberosGroupkerberossourceconnection: 'authentik_sources_kerberos.groupkerberossourceconnection',
    AuthentikSourcesKerberosKerberossource: 'authentik_sources_kerberos.kerberossource',
    AuthentikSourcesKerberosKerberossourcepropertymapping: 'authentik_sources_kerberos.kerberossourcepropertymapping',
    AuthentikSourcesKerberosUserkerberossourceconnection: 'authentik_sources_kerberos.userkerberossourceconnection',
    AuthentikSourcesLdapGroupldapsourceconnection: 'authentik_sources_ldap.groupldapsourceconnection',
    AuthentikSourcesLdapLdapsource: 'authentik_sources_ldap.ldapsource',
    AuthentikSourcesLdapLdapsourcepropertymapping: 'authentik_sources_ldap.ldapsourcepropertymapping',
    AuthentikSourcesLdapUserldapsourceconnection: 'authentik_sources_ldap.userldapsourceconnection',
    AuthentikSourcesOauthGroupoauthsourceconnection: 'authentik_sources_oauth.groupoauthsourceconnection',
    AuthentikSourcesOauthOauthsource: 'authentik_sources_oauth.oauthsource',
    AuthentikSourcesOauthOauthsourcepropertymapping: 'authentik_sources_oauth.oauthsourcepropertymapping',
    AuthentikSourcesOauthUseroauthsourceconnection: 'authentik_sources_oauth.useroauthsourceconnection',
    AuthentikSourcesPlexGroupplexsourceconnection: 'authentik_sources_plex.groupplexsourceconnection',
    AuthentikSourcesPlexPlexsource: 'authentik_sources_plex.plexsource',
    AuthentikSourcesPlexPlexsourcepropertymapping: 'authentik_sources_plex.plexsourcepropertymapping',
    AuthentikSourcesPlexUserplexsourceconnection: 'authentik_sources_plex.userplexsourceconnection',
    AuthentikSourcesSamlGroupsamlsourceconnection: 'authentik_sources_saml.groupsamlsourceconnection',
    AuthentikSourcesSamlSamlsource: 'authentik_sources_saml.samlsource',
    AuthentikSourcesSamlSamlsourcepropertymapping: 'authentik_sources_saml.samlsourcepropertymapping',
    AuthentikSourcesSamlUsersamlsourceconnection: 'authentik_sources_saml.usersamlsourceconnection',
    AuthentikSourcesScimScimsource: 'authentik_sources_scim.scimsource',
    AuthentikSourcesScimScimsourcepropertymapping: 'authentik_sources_scim.scimsourcepropertymapping',
    AuthentikStagesAuthenticatorDuoAuthenticatorduostage: 'authentik_stages_authenticator_duo.authenticatorduostage',
    AuthentikStagesAuthenticatorDuoDuodevice: 'authentik_stages_authenticator_duo.duodevice',
    AuthentikStagesAuthenticatorEmailAuthenticatoremailstage: 'authentik_stages_authenticator_email.authenticatoremailstage',
    AuthentikStagesAuthenticatorEmailEmaildevice: 'authentik_stages_authenticator_email.emaildevice',
    AuthentikStagesAuthenticatorEndpointGdtcAuthenticatorendpointgdtcstage: 'authentik_stages_authenticator_endpoint_gdtc.authenticatorendpointgdtcstage',
    AuthentikStagesAuthenticatorSmsAuthenticatorsmsstage: 'authentik_stages_authenticator_sms.authenticatorsmsstage',
    AuthentikStagesAuthenticatorSmsSmsdevice: 'authentik_stages_authenticator_sms.smsdevice',
    AuthentikStagesAuthenticatorStaticAuthenticatorstaticstage: 'authentik_stages_authenticator_static.authenticatorstaticstage',
    AuthentikStagesAuthenticatorStaticStaticdevice: 'authentik_stages_authenticator_static.staticdevice',
    AuthentikStagesAuthenticatorTotpAuthenticatortotpstage: 'authentik_stages_authenticator_totp.authenticatortotpstage',
    AuthentikStagesAuthenticatorTotpTotpdevice: 'authentik_stages_authenticator_totp.totpdevice',
    AuthentikStagesAuthenticatorValidateAuthenticatorvalidatestage: 'authentik_stages_authenticator_validate.authenticatorvalidatestage',
    AuthentikStagesAuthenticatorWebauthnAuthenticatorwebauthnstage: 'authentik_stages_authenticator_webauthn.authenticatorwebauthnstage',
    AuthentikStagesAuthenticatorWebauthnWebauthndevice: 'authentik_stages_authenticator_webauthn.webauthndevice',
    AuthentikStagesCaptchaCaptchastage: 'authentik_stages_captcha.captchastage',
    AuthentikStagesConsentConsentstage: 'authentik_stages_consent.consentstage',
    AuthentikStagesConsentUserconsent: 'authentik_stages_consent.userconsent',
    AuthentikStagesDenyDenystage: 'authentik_stages_deny.denystage',
    AuthentikStagesDummyDummystage: 'authentik_stages_dummy.dummystage',
    AuthentikStagesEmailEmailstage: 'authentik_stages_email.emailstage',
    AuthentikStagesIdentificationIdentificationstage: 'authentik_stages_identification.identificationstage',
    AuthentikStagesInvitationInvitation: 'authentik_stages_invitation.invitation',
    AuthentikStagesInvitationInvitationstage: 'authentik_stages_invitation.invitationstage',
    AuthentikStagesMtlsMutualtlsstage: 'authentik_stages_mtls.mutualtlsstage',
    AuthentikStagesPasswordPasswordstage: 'authentik_stages_password.passwordstage',
    AuthentikStagesPromptPrompt: 'authentik_stages_prompt.prompt',
    AuthentikStagesPromptPromptstage: 'authentik_stages_prompt.promptstage',
    AuthentikStagesRedirectRedirectstage: 'authentik_stages_redirect.redirectstage',
    AuthentikStagesSourceSourcestage: 'authentik_stages_source.sourcestage',
    AuthentikStagesUserDeleteUserdeletestage: 'authentik_stages_user_delete.userdeletestage',
    AuthentikStagesUserLoginUserloginstage: 'authentik_stages_user_login.userloginstage',
    AuthentikStagesUserLogoutUserlogoutstage: 'authentik_stages_user_logout.userlogoutstage',
    AuthentikStagesUserWriteUserwritestage: 'authentik_stages_user_write.userwritestage',
    AuthentikTasksSchedulesSchedule: 'authentik_tasks_schedules.schedule',
    AuthentikTenantsDomain: 'authentik_tenants.domain',
    UnknownDefaultOpenApi: '11184809'
} as const;
export type RbacPermissionsAssignedByUsersListModelEnum = typeof RbacPermissionsAssignedByUsersListModelEnum[keyof typeof RbacPermissionsAssignedByUsersListModelEnum];
