UNPKG

@zpg6-test-pkgs/better-auth

Version:

The most comprehensive authentication library for TypeScript.

1,297 lines (1,293 loc) 390 kB
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