@zpg6-test-pkgs/better-auth
Version:
The most comprehensive authentication library for TypeScript.
1,297 lines (1,293 loc) • 390 kB
TypeScript
import * as z from 'zod/v4';
import { U as User, S as Session, q as AuthContext, L as FieldAttribute, ai as InferAdditionalFieldsFromPluginOptions, G as GenericEndpointContext } from '../../shared/better-auth.p_7brNZN.js';
import { AccessControl, Role, Statements } from '../access/index.js';
import * as better_call from 'better-call';
import { Prettify } from 'better-call';
import { defaultRoles } from './access/index.js';
export { adminAc, defaultAc, defaultStatements, memberAc, ownerAc } from './access/index.js';
import 'kysely';
import '../../shared/better-auth.DTtXpZYr.js';
import '../../shared/better-auth.Duv5fZ_i.js';
import 'jose';
import 'zod/v4/core';
import 'zod';
import 'better-sqlite3';
import 'bun:sqlite';
interface OrganizationOptions {
/**
* Configure whether new users are able to create new organizations.
* You can also pass a function that returns a boolean.
*
* @example
* ```ts
* allowUserToCreateOrganization: async (user) => {
* const plan = await getUserPlan(user);
* return plan.name === "pro";
* }
* ```
* @default true
*/
allowUserToCreateOrganization?: boolean | ((user: User & Record<string, any>) => Promise<boolean> | boolean);
/**
* The maximum number of organizations a user can create.
*
* You can also pass a function that returns a boolean
*/
organizationLimit?: number | ((user: User) => Promise<boolean> | boolean);
/**
* The role that is assigned to the creator of the
* organization.
*
* @default "owner"
*/
creatorRole?: string;
/**
* The maximum number of members allowed in an organization.
*
* @default 100
*/
membershipLimit?: number;
/**
* Configure the roles and permissions for the
* organization plugin.
*/
ac?: AccessControl;
/**
* Custom permissions for roles.
*/
roles?: {
[key in string]?: Role<any>;
};
/**
* Support for team.
*/
teams?: {
/**
* Enable team features.
*/
enabled: boolean;
/**
* Default team configuration
*/
defaultTeam?: {
/**
* Enable creating a default team when an organization is created
*
* @default true
*/
enabled: boolean;
/**
* Pass a custom default team creator function
*/
customCreateDefaultTeam?: (organization: Organization & Record<string, any>, request?: Request) => Promise<Team & Record<string, any>>;
};
/**
* Maximum number of teams an organization can have.
*
* You can pass a number or a function that returns a number
*
* @default "unlimited"
*
* @param organization
* @param request
* @returns
*/
maximumTeams?: ((data: {
organizationId: string;
session: {
user: User;
session: Session;
} | null;
}, request?: Request) => number | Promise<number>) | number;
/**
* The maximum number of members per team.
*
* if `undefined`, there is no limit.
*
* @default undefined
*/
maximumMembersPerTeam?: number | ((data: {
teamId: string;
session: {
user: User;
session: Session;
};
organizationId: string;
}) => Promise<number> | number) | undefined;
/**
* By default, if an organization does only have one team, they'll not be able to remove it.
*
* You can disable this behavior by setting this to `false.
*
* @default false
*/
allowRemovingAllTeams?: boolean;
};
/**
* The expiration time for the invitation link.
*
* @default 48 hours
*/
invitationExpiresIn?: number;
/**
* The maximum invitation a user can send.
*
* @default 100
*/
invitationLimit?: number | ((data: {
user: User;
organization: Organization;
member: Member;
}, ctx: AuthContext) => Promise<number> | number);
/**
* Cancel pending invitations on re-invite.
*
* @default false
*/
cancelPendingInvitationsOnReInvite?: boolean;
/**
* Require email verification on accepting or rejecting an invitation
*
* @default false
*/
requireEmailVerificationOnInvitation?: boolean;
/**
* Send an email with the
* invitation link to the user.
*
* Note: Better Auth doesn't
* generate invitation URLs.
* You'll need to construct the
* URL using the invitation ID
* and pass it to the
* acceptInvitation endpoint for
* the user to accept the
* invitation.
*
* @example
* ```ts
* sendInvitationEmail: async (data) => {
* const url = `https://yourapp.com/organization/
* accept-invitation?id=${data.id}`;
* await sendEmail(data.email, "Invitation to join
* organization", `Click the link to join the
* organization: ${url}`);
* }
* ```
*/
sendInvitationEmail?: (data: {
/**
* the invitation id
*/
id: string;
/**
* the role of the user
*/
role: string;
/**
* the email of the user
*/
email: string;
/**
* the organization the user is invited to join
*/
organization: Organization;
/**
* the invitation object
*/
invitation: Invitation;
/**
* the member who is inviting the user
*/
inviter: Member & {
user: User;
};
},
/**
* The request object
*/
request?: Request) => Promise<void>;
/**
* The schema for the organization plugin.
*/
schema?: {
session?: {
fields?: {
activeOrganizationId?: string;
activeTeamId?: string;
};
};
organization?: {
modelName?: string;
fields?: {
[key in keyof Omit<Organization, "id">]?: string;
};
additionalFields?: {
[key in string]: FieldAttribute;
};
};
member?: {
modelName?: string;
fields?: {
[key in keyof Omit<Member, "id">]?: string;
};
additionalFields?: {
[key in string]: FieldAttribute;
};
};
invitation?: {
modelName?: string;
fields?: {
[key in keyof Omit<Invitation, "id">]?: string;
};
additionalFields?: {
[key in string]: FieldAttribute;
};
};
team?: {
modelName?: string;
fields?: {
[key in keyof Omit<Team, "id">]?: string;
};
additionalFields?: {
[key in string]: FieldAttribute;
};
};
teamMember?: {
modelName?: string;
fields?: {
[key in keyof Omit<TeamMember, "id">]?: string;
};
};
};
/**
* Configure how organization deletion is handled
*/
organizationDeletion?: {
/**
* disable deleting organization
*/
disabled?: boolean;
/**
* A callback that runs before the organization is
* deleted
*
* @param data - organization and user object
* @param request - the request object
* @returns
*/
beforeDelete?: (data: {
organization: Organization;
user: User;
}, request?: Request) => Promise<void>;
/**
* A callback that runs after the organization is
* deleted
*
* @param data - organization and user object
* @param request - the request object
* @returns
*/
afterDelete?: (data: {
organization: Organization;
user: User;
}, request?: Request) => Promise<void>;
};
organizationCreation?: {
disabled?: boolean;
beforeCreate?: (data: {
organization: Omit<Organization, "id"> & Record<string, any>;
user: User;
}, request?: Request) => Promise<void | {
data: Record<string, any>;
}>;
afterCreate?: (data: {
organization: Organization & Record<string, any>;
member: Member & Record<string, any>;
user: User;
}, request?: Request) => Promise<void>;
};
/**
* Automatically create an organization for the user on sign up.
*
* @default false
*/
autoCreateOrganizationOnSignUp?: boolean;
}
declare const role: z.ZodString;
declare const invitationStatus: z.ZodDefault<z.ZodEnum<{
accepted: "accepted";
canceled: "canceled";
rejected: "rejected";
pending: "pending";
}>>;
declare const organizationSchema: z.ZodObject<{
id: z.ZodDefault<z.ZodString>;
name: z.ZodString;
slug: z.ZodString;
logo: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
metadata: z.ZodOptional<z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodPipe<z.ZodString, z.ZodTransform<any, string>>]>>;
createdAt: z.ZodDate;
}, z.core.$strip>;
declare const memberSchema: z.ZodObject<{
id: z.ZodDefault<z.ZodString>;
organizationId: z.ZodString;
userId: z.ZodCoercedString<unknown>;
role: z.ZodString;
createdAt: z.ZodDefault<z.ZodDate>;
}, z.core.$strip>;
declare const invitationSchema: z.ZodObject<{
id: z.ZodDefault<z.ZodString>;
organizationId: z.ZodString;
email: z.ZodString;
role: z.ZodString;
status: z.ZodDefault<z.ZodEnum<{
accepted: "accepted";
canceled: "canceled";
rejected: "rejected";
pending: "pending";
}>>;
teamId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
inviterId: z.ZodString;
expiresAt: z.ZodDate;
}, z.core.$strip>;
declare const teamSchema: z.ZodObject<{
id: z.ZodDefault<z.ZodString>;
name: z.ZodString;
organizationId: z.ZodString;
createdAt: z.ZodDate;
updatedAt: z.ZodOptional<z.ZodDate>;
}, z.core.$strip>;
declare const teamMemberSchema: z.ZodObject<{
id: z.ZodDefault<z.ZodString>;
teamId: z.ZodString;
userId: z.ZodString;
createdAt: z.ZodDefault<z.ZodDate>;
}, z.core.$strip>;
type Organization = z.infer<typeof organizationSchema>;
type Member = z.infer<typeof memberSchema>;
type TeamMember = z.infer<typeof teamMemberSchema>;
type Team = z.infer<typeof teamSchema>;
type Invitation = z.infer<typeof invitationSchema>;
type InvitationInput = z.input<typeof invitationSchema>;
type MemberInput = z.input<typeof memberSchema>;
type TeamMemberInput = z.input<typeof teamMemberSchema>;
type OrganizationInput = z.input<typeof organizationSchema>;
type TeamInput = z.infer<typeof teamSchema>;
declare const defaultRolesSchema: z.ZodUnion<readonly [z.ZodEnum<{
owner: "owner";
member: "member";
admin: "admin";
}>, z.ZodArray<z.ZodEnum<{
owner: "owner";
member: "member";
admin: "admin";
}>>]>;
type CustomRolesSchema<O> = O extends {
roles: {
[key: string]: any;
};
} ? z.ZodType<keyof O["roles"] | Array<keyof O["roles"]>> : typeof defaultRolesSchema;
type InferOrganizationZodRolesFromOption<O extends OrganizationOptions | undefined> = CustomRolesSchema<O>;
type InferOrganizationRolesFromOption<O extends OrganizationOptions | undefined> = O extends {
roles: any;
} ? keyof O["roles"] : "admin" | "member" | "owner";
type InvitationStatus = "pending" | "accepted" | "rejected" | "canceled";
type InferMember<O extends OrganizationOptions> = O["teams"] extends {
enabled: true;
} ? {
id: string;
organizationId: string;
role: InferOrganizationRolesFromOption<O>;
createdAt: Date;
userId: string;
teamId?: string;
user: {
email: string;
name: string;
image?: string;
};
} : {
id: string;
organizationId: string;
role: InferOrganizationRolesFromOption<O>;
createdAt: Date;
userId: string;
user: {
email: string;
name: string;
image?: string;
};
};
type InferOrganization<O extends OrganizationOptions, isClientSide extends boolean = true> = Prettify<Organization & InferAdditionalFieldsFromPluginOptions<"organization", O, isClientSide>>;
type InferTeam<O extends OrganizationOptions> = Prettify<Team & InferAdditionalFieldsFromPluginOptions<"team", O>>;
type InferInvitation<O extends OrganizationOptions> = (O["teams"] extends {
enabled: true;
} ? {
id: string;
organizationId: string;
email: string;
role: InferOrganizationRolesFromOption<O>;
status: InvitationStatus;
inviterId: string;
expiresAt: Date;
teamId?: string;
} : {
id: string;
organizationId: string;
email: string;
role: InferOrganizationRolesFromOption<O>;
status: InvitationStatus;
inviterId: string;
expiresAt: Date;
}) & InferAdditionalFieldsFromPluginOptions<"invitation", O, false>;
declare const getFullOrganization: <O extends OrganizationOptions>(options: O) => {
<AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
body?: undefined;
} & {
method?: "GET" | undefined;
} & {
query?: {
organizationId?: string | undefined;
organizationSlug?: string | undefined;
membersLimit?: string | number | undefined;
} | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: better_call.Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
headers: Headers;
response: (O["teams"] extends {
enabled: true;
} ? {
members: InferMember<O>[];
invitations: InferInvitation<O>[];
teams: Team[];
} & ({
id: string;
name: string;
slug: string;
createdAt: Date;
logo?: string | null | undefined;
metadata?: any;
} & InferAdditionalFieldsFromPluginOptions<"organization", O, true> extends infer T ? { [K in keyof T]: T[K]; } : never) : {
members: InferMember<O>[];
invitations: InferInvitation<O>[];
} & ({
id: string;
name: string;
slug: string;
createdAt: Date;
logo?: string | null | undefined;
metadata?: any;
} & InferAdditionalFieldsFromPluginOptions<"organization", O, true> extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never)) | null;
} : (O["teams"] extends {
enabled: true;
} ? {
members: InferMember<O>[];
invitations: InferInvitation<O>[];
teams: Team[];
} & ({
id: string;
name: string;
slug: string;
createdAt: Date;
logo?: string | null | undefined;
metadata?: any;
} & InferAdditionalFieldsFromPluginOptions<"organization", O, true> extends infer T_2 ? { [K in keyof T_2]: T_2[K]; } : never) : {
members: InferMember<O>[];
invitations: InferInvitation<O>[];
} & ({
id: string;
name: string;
slug: string;
createdAt: Date;
logo?: string | null | undefined;
metadata?: any;
} & InferAdditionalFieldsFromPluginOptions<"organization", O, true> extends infer T_3 ? { [K in keyof T_3]: T_3[K]; } : never)) | null>;
options: {
method: "GET";
query: z.ZodOptional<z.ZodObject<{
organizationId: z.ZodOptional<z.ZodString>;
organizationSlug: z.ZodOptional<z.ZodString>;
membersLimit: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
}, z.core.$strip>>;
requireHeaders: true;
use: (((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
orgOptions: OrganizationOptions;
roles: typeof defaultRoles & {
[key: string]: Role<{}>;
};
getSession: (context: GenericEndpointContext) => Promise<{
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
}>;
}>) | ((inputContext: better_call.MiddlewareInputContext<{
use: ((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
session: {
session: Record<string, any> & {
id: string;
userId: string;
expiresAt: Date;
createdAt: Date;
updatedAt: Date;
token: string;
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
};
user: Record<string, any> & {
id: string;
email: string;
emailVerified: boolean;
name: string;
createdAt: Date;
updatedAt: Date;
image?: string | null | undefined;
};
};
}>)[];
}>) => Promise<{
session: {
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
};
}>))[];
metadata: {
openapi: {
description: string;
responses: {
"200": {
description: string;
content: {
"application/json": {
schema: {
type: "object";
description: string;
$ref: string;
};
};
};
};
};
};
};
} & {
use: any[];
};
path: "/organization/get-full-organization";
};
declare function parseRoles(roles: string | string[]): string;
/**
* Organization plugin for Better Auth. Organization allows you to create teams, members,
* and manage access control for your users.
*
* @example
* ```ts
* const auth = betterAuth({
* plugins: [
* organization({
* allowUserToCreateOrganization: true,
* }),
* ],
* });
* ```
*/
declare const organization: <O extends OrganizationOptions>(options?: O) => {
id: "organization";
endpoints: (O["teams"] extends {
enabled: true;
} ? {
/**
* ### Endpoint
*
* POST `/organization/create-team`
*
* ### API Methods
*
* **server:**
* `auth.api.createTeam`
*
* **client:**
* `authClient.organization.createTeam`
*
* @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/organization#api-method-organization-create-team)
*/
createTeam: {
<AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(...inputCtx: better_call.HasRequiredKeys<better_call.InputContext<"/organization/create-team", {
method: "POST";
body: z.ZodObject<{
name: z.ZodString;
organizationId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
use: ((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
orgOptions: OrganizationOptions;
roles: typeof defaultRoles & {
[key: string]: Role<{}>;
};
getSession: (context: GenericEndpointContext) => Promise<{
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
}>;
}>)[];
metadata: {
$Infer: {
body: {
name: string;
organizationId?: string | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>;
};
openapi: {
description: string;
responses: {
"200": {
description: string;
content: {
"application/json": {
schema: {
type: "object";
properties: {
id: {
type: string;
description: string;
};
name: {
type: string;
description: string;
};
organizationId: {
type: string;
description: string;
};
createdAt: {
type: string;
format: string;
description: string;
};
updatedAt: {
type: string;
format: string;
description: string;
};
};
required: string[];
};
};
};
};
};
};
};
} & {
use: any[];
}>> extends true ? [better_call.InferBodyInput<{
method: "POST";
body: z.ZodObject<{
name: z.ZodString;
organizationId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
use: ((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
orgOptions: OrganizationOptions;
roles: typeof defaultRoles & {
[key: string]: Role<{}>;
};
getSession: (context: GenericEndpointContext) => Promise<{
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
}>;
}>)[];
metadata: {
$Infer: {
body: {
name: string;
organizationId?: string | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>;
};
openapi: {
description: string;
responses: {
"200": {
description: string;
content: {
"application/json": {
schema: {
type: "object";
properties: {
id: {
type: string;
description: string;
};
name: {
type: string;
description: string;
};
organizationId: {
type: string;
description: string;
};
createdAt: {
type: string;
format: string;
description: string;
};
updatedAt: {
type: string;
format: string;
description: string;
};
};
required: string[];
};
};
};
};
};
};
};
} & {
use: any[];
}, {
name: string;
organizationId?: string | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>> & {
method?: "POST" | undefined;
} & {
query?: Record<string, any> | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers?: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: better_call.Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}] : [((better_call.InferBodyInput<{
method: "POST";
body: z.ZodObject<{
name: z.ZodString;
organizationId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
use: ((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
orgOptions: OrganizationOptions;
roles: typeof defaultRoles & {
[key: string]: Role<{}>;
};
getSession: (context: GenericEndpointContext) => Promise<{
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
}>;
}>)[];
metadata: {
$Infer: {
body: {
name: string;
organizationId?: string | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>;
};
openapi: {
description: string;
responses: {
"200": {
description: string;
content: {
"application/json": {
schema: {
type: "object";
properties: {
id: {
type: string;
description: string;
};
name: {
type: string;
description: string;
};
organizationId: {
type: string;
description: string;
};
createdAt: {
type: string;
format: string;
description: string;
};
updatedAt: {
type: string;
format: string;
description: string;
};
};
required: string[];
};
};
};
};
};
};
};
} & {
use: any[];
}, {
name: string;
organizationId?: string | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>> & {
method?: "POST" | undefined;
} & {
query?: Record<string, any> | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers?: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: better_call.Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}) | undefined)?]): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
headers: Headers;
response: {
id: string;
name: string;
organizationId: string;
createdAt: Date;
updatedAt?: Date | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true> extends infer T ? { [K in keyof T]: T[K]; } : never;
} : {
id: string;
name: string;
organizationId: string;
createdAt: Date;
updatedAt?: Date | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true> extends infer T_1 ? { [K in keyof T_1]: T_1[K]; } : never>;
options: {
method: "POST";
body: z.ZodObject<{
name: z.ZodString;
organizationId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
use: ((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
orgOptions: OrganizationOptions;
roles: typeof defaultRoles & {
[key: string]: Role<{}>;
};
getSession: (context: GenericEndpointContext) => Promise<{
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
}>;
}>)[];
metadata: {
$Infer: {
body: {
name: string;
organizationId?: string | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>;
};
openapi: {
description: string;
responses: {
"200": {
description: string;
content: {
"application/json": {
schema: {
type: "object";
properties: {
id: {
type: string;
description: string;
};
name: {
type: string;
description: string;
};
organizationId: {
type: string;
description: string;
};
createdAt: {
type: string;
format: string;
description: string;
};
updatedAt: {
type: string;
format: string;
description: string;
};
};
required: string[];
};
};
};
};
};
};
};
} & {
use: any[];
};
path: "/organization/create-team";
};
/**
* ### Endpoint
*
* GET `/organization/list-teams`
*
* ### API Methods
*
* **server:**
* `auth.api.listOrganizationTeams`
*
* **client:**
* `authClient.organization.listTeams`
*
* @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/organization#api-method-organization-list-teams)
*/
listOrganizationTeams: {
<AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
body?: undefined;
} & {
method?: "GET" | undefined;
} & {
query?: {
organizationId?: string | undefined;
} | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: better_call.Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
headers: Headers;
response: {
id: string;
name: string;
organizationId: string;
createdAt: Date;
updatedAt?: Date | undefined;
}[];
} : {
id: string;
name: string;
organizationId: string;
createdAt: Date;
updatedAt?: Date | undefined;
}[]>;
options: {
method: "GET";
query: z.ZodOptional<z.ZodObject<{
organizationId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>>;
requireHeaders: true;
metadata: {
openapi: {
description: string;
responses: {
"200": {
description: string;
content: {
"application/json": {
schema: {
type: "array";
items: {
type: string;
properties: {
id: {
type: string;
description: string;
};
name: {
type: string;
description: string;
};
organizationId: {
type: string;
description: string;
};
createdAt: {
type: string;
format: string;
description: string;
};
updatedAt: {
type: string;
format: string;
description: string;
};
};
required: string[];
};
description: string;
};
};
};
};
};
};
};
use: (((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
orgOptions: OrganizationOptions;
roles: typeof defaultRoles & {
[key: string]: Role<{}>;
};
getSession: (context: GenericEndpointContext) => Promise<{
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
}>;
}>) | ((inputContext: better_call.MiddlewareInputContext<{
use: ((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
session: {
session: Record<string, any> & {
id: string;
userId: string;
expiresAt: Date;
createdAt: Date;
updatedAt: Date;
token: string;
ipAddress?: string | null | undefined;
userAgent?: string | null | undefined;
};
user: Record<string, any> & {
id: string;
email: string;
emailVerified: boolean;
name: string;
createdAt: Date;
updatedAt: Date;
image?: string | null | undefined;
};
};
}>)[];
}>) => Promise<{
session: {
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
};
}>))[];
} & {
use: any[];
};
path: "/organization/list-teams";
};
/**
* ### Endpoint
*
* POST `/organization/remove-team`
*
* ### API Methods
*
* **server:**
* `auth.api.removeTeam`
*
* **client:**
* `authClient.organization.removeTeam`
*
* @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/organization#api-method-organization-remove-team)
*/
removeTeam: {
<AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
body: {
teamId: string;
organizationId?: string | undefined;
};
} & {
method?: "POST" | undefined;
} & {
query?: Record<string, any> | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers?: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: better_call.Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
headers: Headers;
response: {
message: string;
} | null;
} : {
message: string;
} | null>;
options: {
method: "POST";
body: z.ZodObject<{
teamId: z.ZodString;
organizationId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
use: ((inputContext: better_call.MiddlewareInputContext<better_call.MiddlewareOptions>) => Promise<{
orgOptions: OrganizationOptions;
roles: typeof defaultRoles & {
[key: string]: Role<{}>;
};
getSession: (context: GenericEndpointContext) => Promise<{
session: Session & {
activeTeamId?: string;
activeOrganizationId?: string;
};
user: User;
}>;
}>)[];
metadata: {
openapi: {
description: string;
responses: {
"200": {
description: string;
content: {
"application/json": {
schema: {
type: "object";
properties: {
message: {
type: string;
description: string;
enum: string[];
};
};
required: string[];
};
};
};
};
};
};
};
} & {
use: any[];
};
path: "/organization/remove-team";
};
/**
* ### Endpoint
*
* POST `/organization/update-team`
*
* ### API Methods
*
* **server:**
* `auth.api.updateTeam`
*
* **client:**
* `authClient.organization.updateTeam`
*
* @see [Read our docs to learn more.](https://better-auth.com/docs/plugins/organization#api-method-organization-update-team)
*/
updateTeam: {
<AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: {
body: {
teamId: string;
data: Partial<{
name: string;
organizationId: string;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>>;
};
} & {
method?: "POST" | undefined;
} & {
query?: Record<string, any> | undefined;
} & {
params?: Record<string, any>;
} & {
request?: Request;
} & {
headers: HeadersInit;
} & {
asResponse?: boolean;
returnHeaders?: boolean;
use?: better_call.Middleware[];
path?: string;
} & {
asResponse?: AsResponse | undefined;
returnHeaders?: ReturnHeaders | undefined;
}): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? {
headers: Headers;
response: ({
id: string;
name: string;
organizationId: string;
createdAt: Date;
updatedAt?: Date | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>) | null;
} : ({
id: string;
name: string;
organizationId: string;
createdAt: Date;
updatedAt?: Date | undefined;
} & InferAdditionalFieldsFromPluginOptions<"team", O, true>) | null>;
options: {
method: "POST";
body: z.ZodObject<{
teamId: z.ZodString;
data: z.ZodObject<{
id: z.ZodOptional<z.ZodDefault<z.ZodString>>;
name: z.ZodOptional<z.ZodString>;
organizationId: z.ZodOptional<z.ZodString>;
createdAt: z.ZodOptional<z.ZodDate>;
updatedAt: z.ZodOptional<z.ZodOptional<z.ZodDate>>;
}, z.core.$strip>;
}, z.core.$strip>;
requireHeaders: true;
use: (((inputContext: better_call.MiddlewareInputContext<better_call.Midd