import * as data from '../data/index.js'; import * as dto from '../dto/index.js'; import * as plugins from '../plugins.js'; export interface IReq_GetOrganizationById extends plugins.typedRequestInterfaces.implementsTR { method: 'getOrganizationById'; request: { jwt: string; id: string; }; response: { organization: dto.IOrganizationDto; }; } export interface IReq_CreateOrganization extends plugins.typedRequestInterfaces.implementsTR { method: 'createOrganization'; request: { jwt: string; userId: string; organizationName: string; organizationSlug: string; action: 'checkAvailability' | 'manifest'; }; response: { nameAvailable: boolean; resultingOrganization?: dto.IOrganizationDto; role?: dto.IRoleDto; }; } export interface IReq_UpdateOrganization extends plugins.typedRequestInterfaces.implementsTR { method: 'updateOrganization'; request: { jwt: string; organizationId: string; name?: string; slug?: string; confirmationText: string; }; response: { success: boolean; organization: dto.IOrganizationDto; message?: string; }; } export interface IReq_DeleteOrganization extends plugins.typedRequestInterfaces.implementsTR { method: 'deleteOrganization'; request: { jwt: string; organizationId: string; confirmationText: string; }; response: { success: boolean; deletedOrganizationId: string; message?: string; }; } export interface IReq_GetOrgRoleDefinitions extends plugins.typedRequestInterfaces.implementsTR { method: 'getOrgRoleDefinitions'; request: { jwt: string; organizationId: string; }; response: { roleDefinitions: dto.IOrgRoleDefinitionDto[]; }; } export interface IReq_UpsertOrgRoleDefinition extends plugins.typedRequestInterfaces.implementsTR { method: 'upsertOrgRoleDefinition'; request: { jwt: string; organizationId: string; roleDefinition: { key: string; name: string; description?: string; capabilities: data.TDelegableTenantCapability[]; }; }; response: { success: boolean; roleDefinitions: dto.IOrgRoleDefinitionDto[]; message?: string; }; } export interface IReq_DeleteOrgRoleDefinition extends plugins.typedRequestInterfaces.implementsTR { method: 'deleteOrgRoleDefinition'; request: { jwt: string; organizationId: string; roleKey: string; confirmationText: string; }; response: { success: boolean; roleDefinitions: dto.IOrgRoleDefinitionDto[]; message?: string; }; } /** * One typed record of an organization data export. */ export type TOrgExportRecord = { kind: 'organization'; payload: dto.IOrganizationDto; } | { kind: 'member'; payload: { user: dto.IUserProfileDto; roles: string[]; }; } | { kind: 'invitation'; payload: dto.IUserInvitationDto; } | { kind: 'ssoConnection'; payload: dto.ISsoConnectionDto; } | { kind: 'scimToken'; payload: dto.IScimTokenDto; } | { kind: 'activity'; payload: dto.TActivityEventDto; }; /** * Cursor-paged export of an organization's data (data portability / * compliance evidence). Owner-only. Streams redacted DTOs — never token * hashes, certificates' private material, or member credentials. Iterate * until nextCursor is absent. */ export interface IReq_ExportOrgData extends plugins.typedRequestInterfaces.implementsTR { method: 'exportOrgData'; request: { jwt: string; organizationId: string; /** opaque cursor from the previous page */ cursor?: string; /** page size, capped server-side */ limit?: number; }; response: { records: TOrgExportRecord[]; /** absent when the export is complete */ nextCursor?: string; }; }