@calljmp/cli
Version:
254 lines • 8.57 kB
TypeScript
export declare enum OrganizationMembershipStatus {
Active = "active",
Pending = "pending",
Suspended = "suspended"
}
export declare enum OrganizationInvitationStatus {
Pending = "pending",
Accepted = "accepted",
Revoked = "revoked"
}
export interface OrganizationPermissions {
projects?: {
create?: boolean;
read?: boolean;
update?: boolean;
delete?: boolean;
transfer?: boolean;
};
members?: {
invite?: boolean;
remove?: boolean;
updateRoles?: boolean;
view?: boolean;
};
organization?: {
view?: boolean;
update?: boolean;
delete?: boolean;
};
billing?: {
view?: boolean;
manage?: boolean;
};
roles?: {
create?: boolean;
update?: boolean;
delete?: boolean;
};
}
export interface OrganizationSettings {
[key: string]: unknown;
}
export interface Organization {
id: number;
name: string;
slug: string;
description: string | null;
avatarUrl: string | null;
settings: OrganizationSettings | null;
ownerId: number;
createdAt: Date;
updatedAt: Date;
}
export interface OrganizationRole {
id: number;
organizationId: number;
name: string;
description: string | null;
permissions: OrganizationPermissions;
createdAt: Date;
updatedAt: Date;
}
export type OrganizationPredefinedRole = keyof typeof OrganizationRoleTemplates;
export declare const OrganizationRoleTemplates: {
readonly admin: {
readonly name: "Admin";
readonly description: "Full access to organization, projects, and team management";
readonly permissions: {
readonly projects: {
readonly create: true;
readonly read: true;
readonly update: true;
readonly delete: true;
readonly transfer: true;
};
readonly members: {
readonly invite: true;
readonly view: true;
readonly updateRoles: true;
readonly remove: true;
};
readonly organization: {
readonly view: true;
readonly update: true;
readonly delete: true;
};
readonly billing: {
readonly view: true;
readonly manage: true;
};
readonly roles: {
readonly create: true;
readonly update: true;
readonly delete: true;
};
};
};
readonly developer: {
readonly name: "Developer";
readonly description: "Can create and manage projects, collaborate with team members";
readonly permissions: {
readonly projects: {
readonly create: true;
readonly read: true;
readonly update: true;
readonly delete: true;
readonly transfer: false;
};
readonly members: {
readonly invite: false;
readonly view: true;
readonly updateRoles: false;
readonly remove: false;
};
readonly organization: {
readonly view: true;
readonly update: false;
readonly delete: false;
};
readonly billing: {
readonly view: false;
readonly manage: false;
};
readonly roles: {
readonly create: false;
readonly update: false;
readonly delete: false;
};
};
};
readonly viewer: {
readonly name: "Viewer";
readonly description: "Read-only access to projects and organization. Cannot make changes.";
readonly permissions: {
readonly projects: {
readonly create: false;
readonly read: true;
readonly update: false;
readonly delete: false;
readonly transfer: false;
};
readonly members: {
readonly invite: false;
readonly view: true;
readonly updateRoles: false;
readonly remove: false;
};
readonly organization: {
readonly view: true;
readonly update: false;
readonly delete: false;
};
readonly billing: {
readonly view: false;
readonly manage: false;
};
readonly roles: {
readonly create: false;
readonly update: false;
readonly delete: false;
};
};
};
};
export interface OrganizationMembership {
id: number;
organizationId: number;
accountId: number;
roleId: number;
status: OrganizationMembershipStatus;
invitedBy: number | null;
invitedAt: Date | null;
createdAt: Date;
updatedAt: Date;
}
export interface OrganizationInvitation {
id: number;
organizationId: number;
email: string;
roleId: number;
token: string;
invitedBy: number;
status: OrganizationInvitationStatus;
expiresAt: Date;
acceptedAt: Date | null;
createdAt: Date;
updatedAt: Date;
}
export interface OrganizationMember {
createdAt: Date;
updatedAt: Date;
status: OrganizationMembershipStatus;
accountId: number;
accountEmail: string;
accountName: string;
accountAvatarUrl: string | null;
roleId: number;
roleName: string;
roleDescription: string | null;
rolePermissions: OrganizationPermissions;
}
export interface OrganizationOwner {
createdAt: Date;
updatedAt: Date;
accountId: number;
accountName: string;
accountEmail: string;
accountAvatarUrl: string | null;
}
export interface OrganizationInvitedMember {
id: number;
createdAt: Date;
updatedAt: Date;
expiresAt: Date;
acceptedAt: Date | null;
inviteeEmail: string;
inviteeId?: number;
inviteeName?: string;
inviteeAvatarUrl?: string | null;
status: OrganizationInvitationStatus;
roleId: number;
roleName: string;
roleDescription: string | null;
rolePermissions: OrganizationPermissions;
inviterId: number;
inviterName: string;
inviterEmail: string;
inviterAvatarUrl: string | null;
organizationId: number;
}
export declare function jsonToOrganizationInvitedMember(json: Record<string, any>): OrganizationInvitedMember;
export declare function organizationInvitedMemberToJson(member: OrganizationInvitedMember): Record<string, any>;
export declare function jsonToOrganizationOwner(json: Record<string, any>): OrganizationOwner;
export declare function organizationOwnerToJson(owner: OrganizationOwner): Record<string, any>;
export declare function jsonToOrganizationMember(json: Record<string, any>): OrganizationMember;
export declare function organizationMemberToJson(member: OrganizationMember): Record<string, any>;
export declare function jsonToOrganization(json: Record<string, any>): Organization;
export declare function organizationToJson(organization: Organization): Record<string, any>;
export declare function jsonToOrganizationRole(json: Record<string, any>): OrganizationRole;
export declare function organizationRoleToJson(role: OrganizationRole): Record<string, any>;
export declare function jsonToOrganizationMembership(json: Record<string, any>): OrganizationMembership;
export declare function organizationMembershipToJson(membership: OrganizationMembership): Record<string, any>;
export declare function jsonToOrganizationInvitation(json: Record<string, any>): OrganizationInvitation;
export declare function organizationInvitationToJson(invitation: OrganizationInvitation): Record<string, any>;
type PermissionKeys<T> = {
[K in keyof T]: T[K] extends Record<string, any> ? {
[P in keyof T[K]]: `${string & K}.${string & P}`;
}[keyof T[K]] : never;
}[keyof T];
export type OrganizationPermissionKey = PermissionKeys<Required<OrganizationPermissions>>;
export declare function hasOrganizationPermission(role: OrganizationRole | undefined, permission: OrganizationPermissionKey): boolean;
export declare function organizationPermissionLevel(permissions: OrganizationPermissions): 'none' | 'read' | 'limited' | 'full';
export {};
//# sourceMappingURL=organizations.d.ts.map