Function: taprootOrganizationOptions()
function taprootOrganizationOptions<O extends OrganizationConventionSettings>(settings: O): {
organizationHooks: {
afterAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterAddMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
afterCreateInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
afterCreateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;
afterRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterUpdateMemberRole?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
previousRole: string;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterUpdateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: | {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>
| null;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeAddMember: | ((input: {
member: {
[key: string]: any;
organizationId: string;
role: string;
userId: string;
};
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
beforeCreateInvitation: | ((input: {
invitation: {
[key: string]: any;
email: string;
inviterId: string;
organizationId: string;
role: string;
teamId?: string;
};
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeCreateOrganization: | ((input: {
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;
beforeRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeUpdateMemberRole: | ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
newRole: string;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
role: string;
};
}>)
| undefined;
beforeUpdateOrganization: | ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
}>)
| undefined;
};
schema: {
member: {
additionalFields: NonNullable<NonNullable<O["schema"]>["member"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};
organization: {
additionalFields: NonNullable<NonNullable<O["schema"]>["organization"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};
};
};Defined in: server/auth/organization-overrides.ts:132
Adds Taproot fields and protected hooks without database access. Soft deletion is application-owned; upstream deletion hooks pass through.
Type Parameters
| Type Parameter |
|---|
O extends OrganizationConventionSettings |
Parameters
| Parameter | Type |
|---|---|
settings | O |
Returns
{
organizationHooks: {
afterAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterAddMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
afterCreateInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
afterCreateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;
afterRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterUpdateMemberRole?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
previousRole: string;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterUpdateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: | {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>
| null;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeAddMember: | ((input: {
member: {
[key: string]: any;
organizationId: string;
role: string;
userId: string;
};
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
beforeCreateInvitation: | ((input: {
invitation: {
[key: string]: any;
email: string;
inviterId: string;
organizationId: string;
role: string;
teamId?: string;
};
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeCreateOrganization: | ((input: {
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;
beforeRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeUpdateMemberRole: | ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
newRole: string;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
role: string;
};
}>)
| undefined;
beforeUpdateOrganization: | ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
}>)
| undefined;
};
schema: {
member: {
additionalFields: NonNullable<NonNullable<O["schema"]>["member"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};
organization: {
additionalFields: NonNullable<NonNullable<O["schema"]>["organization"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};
};
}organizationHooks
organizationHooks: {
afterAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterAddMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
afterCreateInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
afterCreateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;
afterRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterUpdateMemberRole?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
previousRole: string;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
afterUpdateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: | {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>
| null;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeAddMember: | ((input: {
member: {
[key: string]: any;
organizationId: string;
role: string;
userId: string;
};
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;
beforeCreateInvitation: | ((input: {
invitation: {
[key: string]: any;
email: string;
inviterId: string;
organizationId: string;
role: string;
teamId?: string;
};
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeCreateOrganization: | ((input: {
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;
beforeDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;
beforeRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;
beforeUpdateMemberRole: | ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
newRole: string;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
role: string;
};
}>)
| undefined;
beforeUpdateOrganization: | ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
}>)
| undefined;
};organizationHooks.afterAcceptInvitation?
optional afterAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after an invitation is accepted
Parameters
| Parameter | Type |
|---|---|
data | { invitation: { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any>; member: { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.invitation | { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any> |
data.member | { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterAddMember?
optional afterAddMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after a member is added to an organization
Parameters
| Parameter | Type |
|---|---|
data | { member: { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.member | { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterCancelInvitation?
optional afterCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after an invitation is cancelled
Parameters
| Parameter | Type |
|---|---|
data | { cancelledBy: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; invitation: { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; } |
data.cancelledBy | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
data.invitation | { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterCreateInvitation?
optional afterCreateInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after an invitation is created
Parameters
| Parameter | Type |
|---|---|
data | { invitation: { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any>; inviter: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; } |
data.invitation | { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any> |
data.inviter | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterCreateOrganization?
optional afterCreateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after the organization is created
Parameters
| Parameter | Type |
|---|---|
data | { member: { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.member | { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterDeleteOrganization?
optional afterDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;A callback that runs after the organization is deleted
Parameters
| Parameter | Type |
|---|---|
data | { organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user? | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
ctx? | GenericEndpointContext |
Returns
Promise<void>
organizationHooks.afterRejectInvitation?
optional afterRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after an invitation is rejected
Parameters
| Parameter | Type |
|---|---|
data | { invitation: { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.invitation | { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterRemoveMember?
optional afterRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after a member is removed from an organization
Parameters
| Parameter | Type |
|---|---|
data | { member: { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.member | { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterUpdateMemberRole?
optional afterUpdateMemberRole?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
previousRole: string;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after a member's role is updated
Parameters
| Parameter | Type |
|---|---|
data | { member: { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; previousRole: string; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.member | { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.previousRole | string |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.afterUpdateOrganization?
optional afterUpdateOrganization?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: | {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>
| null;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs after the organization is updated
Parameters
| Parameter | Type | Description |
|---|---|---|
data | { member: { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any>; organization: | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> | null; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } | - |
data.member | { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any> | - |
data.organization | | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> | null | Updated organization object This could be null if an adapter doesn't return updated organization. |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> | - |
Returns
Promise<void>
Example
afterUpdateOrganization: async (data) => {
console.log(data.organization);
}organizationHooks.beforeAcceptInvitation?
optional beforeAcceptInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs before an invitation is accepted
Parameters
| Parameter | Type |
|---|---|
data | { invitation: { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.invitation | { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.beforeAddMember
beforeAddMember:
| ((input: {
member: {
[key: string]: any;
organizationId: string;
role: string;
userId: string;
};
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;organizationHooks.beforeCancelInvitation?
optional beforeCancelInvitation?: (data: {
cancelledBy: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<void>;A callback that runs before an invitation is cancelled
Parameters
| Parameter | Type |
|---|---|
data | { cancelledBy: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; invitation: { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; } |
data.cancelledBy | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
data.invitation | { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.beforeCreateInvitation
beforeCreateInvitation:
| ((input: {
invitation: {
[key: string]: any;
email: string;
inviterId: string;
organizationId: string;
role: string;
teamId?: string;
};
inviter: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;organizationHooks.beforeCreateOrganization
beforeCreateOrganization:
| ((input: {
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: Record<string, any>;
}>)
| undefined;organizationHooks.beforeDeleteOrganization?
optional beforeDeleteOrganization?: (data: {
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}, ctx?: GenericEndpointContext) => Promise<void>;A callback that runs before the organization is deleted
Parameters
| Parameter | Type |
|---|---|
data | { organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user? | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
ctx? | GenericEndpointContext |
Returns
Promise<void>
organizationHooks.beforeRejectInvitation?
optional beforeRejectInvitation?: (data: {
invitation: {
createdAt: Date;
email: string;
expiresAt: Date;
id: string;
inviterId: string;
organizationId: string;
role: string;
status: "pending" | "rejected" | "canceled" | "accepted";
teamId?: string | null;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs before an invitation is rejected
Parameters
| Parameter | Type |
|---|---|
data | { invitation: { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.invitation | { createdAt: Date; email: string; expiresAt: Date; id: string; inviterId: string; organizationId: string; role: string; status: "pending" | "rejected" | "canceled" | "accepted"; teamId?: string | null; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.beforeRemoveMember?
optional beforeRemoveMember?: (data: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<void>;A callback that runs before a member is removed from an organization
Parameters
| Parameter | Type |
|---|---|
data | { member: { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any>; organization: { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any>; user: { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any>; } |
data.member | { createdAt: Date; id: string; organizationId: string; role: string; userId: string; } & Record<string, any> |
data.organization | { createdAt: Date; id: string; logo?: string | null; metadata?: any; name: string; slug: string; } & Record<string, any> |
data.user | { createdAt: Date; email: string; emailVerified: boolean; id: string; image?: string | null; name: string; updatedAt: Date; } & Record<string, any> |
Returns
Promise<void>
organizationHooks.beforeUpdateMemberRole
beforeUpdateMemberRole:
| ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
newRole: string;
organization: {
createdAt: Date;
id: string;
logo?: string | null;
metadata?: any;
name: string;
slug: string;
} & Record<string, any>;
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
role: string;
};
}>)
| undefined;organizationHooks.beforeUpdateOrganization
beforeUpdateOrganization:
| ((input: {
member: {
createdAt: Date;
id: string;
organizationId: string;
role: string;
userId: string;
} & Record<string, any>;
organization: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
user: {
createdAt: Date;
email: string;
emailVerified: boolean;
id: string;
image?: string | null;
name: string;
updatedAt: Date;
} & Record<string, any>;
}) => Promise<
| void
| {
data: {
[key: string]: any;
logo?: string | null;
metadata?: Record<string, any>;
name?: string;
slug?: string;
};
}>)
| undefined;schema
schema: {
member: {
additionalFields: NonNullable<NonNullable<O["schema"]>["member"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};
organization: {
additionalFields: NonNullable<NonNullable<O["schema"]>["organization"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};
};schema.member
member: {
additionalFields: NonNullable<NonNullable<O["schema"]>["member"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};schema.member.additionalFields
additionalFields: NonNullable<NonNullable<O["schema"]>["member"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};Type Declaration
deletedAt
readonly deletedAt: {
input: false;
required: false;
type: "date";
};deletedAt.input
readonly input: false = false;deletedAt.required
readonly required: false = false;deletedAt.type
readonly type: "date" = "date";schema.organization
organization: {
additionalFields: NonNullable<NonNullable<O["schema"]>["organization"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};
};schema.organization.additionalFields
additionalFields: NonNullable<NonNullable<O["schema"]>["organization"]>["additionalFields"] & {
deletedAt: {
input: false;
required: false;
type: "date";
};
};Type Declaration
deletedAt
readonly deletedAt: {
input: false;
required: false;
type: "date";
};deletedAt.input
readonly input: false = false;deletedAt.required
readonly required: false = false;deletedAt.type
readonly type: "date" = "date";