> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Referencia rápida del SDK de Base44

> Firmas de método compactas para todos los módulos SDK. Verifica contra esto antes de escribir código.

<Warning>
  Esta página es parte de una habilidad de agente de codificación con IA y está escrita para agentes, no para humanos. Para la documentación de Base44 legible por humanos, consulta la [documentación para desarrolladores](/developers).
</Warning>

# Referencia rápida del SDK de Base44

Firmas de método compactas para todos los módulos SDK. **Verifica contra esto antes de escribir código.**

***

## Auth (`base44.auth.*`)

```
loginViaEmailPassword(email, password, turnstileToken?) → Promise<{access_token, user}>
loginWithProvider('google' | 'microsoft' | 'facebook', fromUrl?) → void
me() → Promise<User | null>
updateMe(data) → Promise<User>
isAuthenticated() → Promise<boolean>
logout(redirectUrl?) → void
redirectToLogin(nextUrl) → void              # ⚠️ Evitar - prefiere UI de login personalizada
register({email, password, turnstile_token?, referral_code?}) → Promise<any>
verifyOtp({email, otpCode}) → Promise<any>
resendOtp(email) → Promise<any>
inviteUser(userEmail, role) → Promise<any>
resetPasswordRequest(email) → Promise<any>
resetPassword({resetToken, newPassword}) → Promise<any>
changePassword({userId, currentPassword, newPassword}) → Promise<any>
setToken(token, saveToStorage?) → void
```

***

## Entidades (`base44.entities.EntityName.*`)

```
create(data) → Promise<T>
bulkCreate(dataArray) → Promise<T[]>
list(sort?, limit?, skip?, fields?) → Promise<Pick<T, K>[]>
filter(query, sort?, limit?, skip?, fields?) → Promise<Pick<T, K>[]>
get(id) → Promise<T>
update(id, data) → Promise<T>
updateMany(query, mongoUpdateOp) → Promise<UpdateManyResult>   // por ejemplo, { $set: { field: val } }
bulkUpdate(dataArray) → Promise<T[]>                           // cada elemento debe tener id
delete(id) → Promise<DeleteResult>
deleteMany(query) → Promise<DeleteManyResult>
importEntities(file) → Promise<ImportResult<T>>                // solo frontend
subscribe(callback) → () => void                               // devuelve función unsubscribe
```

**Ordenación:** Usa `SortField<T>`: `-fieldName` para descendente (por ejemplo, `-created_date`). Máximo 5.000 por solicitud para list/filter.

***

## Funciones (`base44.functions.*`)

```
invoke(functionName, data?) → Promise<AxiosResponse>  // tu JSON está en .data; lanza en no-2xx (err.response.data)
fetch(path, init?) → Promise<Response>   // bajo nivel, para streaming/métodos personalizados
```

**Backend:** Usa `base44.asServiceRole.functions.invoke()` para acceso de administrador.

***

## Integraciones (`base44.integrations.Core.*`)

```
InvokeLLM({prompt, add_context_from_internet?, response_json_schema?, file_urls?}) → Promise<string | object>
GenerateImage({prompt}) → Promise<{url}>
SendEmail({to, subject, body, from_name?}) → Promise<any>
UploadFile({file}) → Promise<{file_url}>
UploadPrivateFile({file}) → Promise<{file_uri}>
CreateFileSignedUrl({file_uri, expires_in?}) → Promise<{signed_url}>
ExtractDataFromUploadedFile({file_url, json_schema}) → Promise<object>
```

### Integraciones personalizadas (`base44.integrations.custom.*`)

```
call(slug, operationId, {payload?, pathParams?, queryParams?}?) → Promise<{success, status_code, data}>
```

**Formato operationId:** `"method:/path"` (por ejemplo, `"get:/contacts"`, `"post:/users/{id}"`)

***

## Analytics (`base44.analytics.*`)

```
track({eventName, properties?}) → void
```

***

## App Logs (`base44.appLogs.*`)

```
logUserInApp(pageName) → Promise<void>
fetchLogs(params?) → Promise<any>
getStats(params?) → Promise<any>
```

***

## Users (`base44.users.*`)

```
inviteUser(userEmail, role) → Promise<any>    // role: 'user' | 'admin'
```

***

## Conectores de rol de servicio (`base44.asServiceRole.connectors.*`)

**Solo backend, se requiere rol de servicio.** Con ámbito de app (cuenta compartida).

```
getConnection(integrationType) → Promise<{accessToken, connectionConfig}>   // recomendado
getAccessToken(integrationType) → Promise<string>                           // obsoleto
```

**Tipos:** Ejecuta `npx base44 connectors list-available` para ver todos los tipos de integración disponibles.

***

## SSO (`base44.asServiceRole.sso.*`)

**Solo backend, se requiere rol de servicio.**

```
getAccessToken(userId) → Promise<{access_token}>
```

***

## Acceso de rol de servicio

**Solo funciones de backend.** Prefija cualquier módulo con `asServiceRole` para acceso de administrador:

```javascript theme={null}
base44.asServiceRole.entities.Task.list()
base44.asServiceRole.functions.invoke('name', data)
base44.asServiceRole.connectors.getConnection('slack')
base44.asServiceRole.sso.getAccessToken(userId)
```

***

## Plantilla de función de backend

```javascript theme={null}
import { createClientFromRequest } from "@base44/sdk";

Deno.serve(async (req) => {
  const base44 = createClientFromRequest(req);
  const data = await req.json();
  
  // Contexto de usuario
  const user = await base44.auth.me();
  
  // Rol de servicio para operaciones de administrador
  const allRecords = await base44.asServiceRole.entities.Task.list();
  
  return Response.json({ success: true });
});
```

***

## Inicialización del cliente (apps externas)

```javascript theme={null}
import { createClient } from "@base44/sdk";

const base44 = createClient({ appId: "your-app-id" });  // DEBE usar 'appId'
```

***

## Registros de tipos TypeScript

Para entidades, nombres de función y nombres de agente tipados (autocompletado y comprobación de tipos), la CLI de Base44 genera tipos y los cablea en tu proyecto. Usa la habilidad **base44-cli** para saber cómo generar tipos.

<Note>Esta página fue traducida usando IA. Para obtener la información más precisa y actualizada, consulta la [versión en inglés](/).</Note>
