Kaizen
Browse modulesAuthenticationauth/serverauth/server/organizationFunctions

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

ParameterType
settingsO

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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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.previousRolestring
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
ParameterTypeDescription
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> | nullUpdated 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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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
ParameterType
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";

On this page