Saltar al contenido
CADCAMFUN
Documentos

Documentación

Autenticación

Inicio de sesión de cuenta, registro, recuperación, verificación, enlaces mágicos, búsqueda de sesión y registro de clave de acceso.

Traducido automáticamente del inglés. Ver el original en inglés

Área de pruebas

Envíe estas solicitudes a su propio sidecar en funcionamiento. Los valores permanecen en este navegador.

No conectado
¿Cómo funciona esto?

El sidecar escucha en un puerto loopback elegido al inicio y lo imprime en su ready línea; use esa URL y el CADCAMFUN_TOKEN se empezó con. Las solicitudes van directamente desde esta página a esa dirección.

El sidecar envía encabezados CORS solo a los orígenes Tauri y a http://localhost o http://127.0.0.1 en cualquier puerto. Desde los documentos alojados, el navegador bloquea la respuesta, así que ejecute los documentos localmente (bun run dev en packages/web) para usar el área de juegos o copiar la solicitud como curl. Para experimentar sin tocar datos reales, inicie el sidecar con CADCAMFUN_DATA_DIR apuntado a un directorio desechable - ver el tutorial de la API.

Operaciones

15 endpoints en el auth grupo, generado a partir del propio sidecar Documento OpenAPI. Las operaciones protegidas toman Authorization: Bearer $CADCAMFUN_TOKEN; ver autenticación. El comportamiento y los límites están en la guía del subsistema.

correo /api/auth/identity/start auth.identityStart
correo /api/auth/identity/poll auth.identityPoll
correo /api/auth/identity/cancel auth.identityCancel
correo /api/auth/forgot-password auth.forgotPassword
correo /api/auth/reset-password auth.resetPassword
correo /api/auth/send-magic-link auth.sendMagicLink
correo /api/auth/send-verification-email auth.sendVerificationEmail
correo /api/auth/verify-email auth.verifyEmail
correo /api/auth/signout auth.signout
conseguir /api/auth/get-session auth.getSession
correo /api/auth/signin-direct auth.signinDirect
correo /api/auth/signup auth.signup
correo /api/auth/test-direct-create auth.testDirectCreate
correo /api/auth/verify-magic-link auth.verifyMagicLink
correo /api/auth/passkey-register auth.registerPasskey
Operaciones de autenticación en 3D Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
Un bloque por operación (15), apilado por sección de recursos de esta página y coloreado por método: GET verde, POST naranja, PUT azul, PATCH violeta, DELETE rojo. Generado a partir del documento OpenAPI en el momento de la compilación.

/api/auth/identity

correo /api/auth/identity/start # auth.identityStart

Requiere Authorization: Bearer <token>.

Respuestas
200 objeto application/json
{
  id: string
  url: string
  issuer: string
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
buscar ejemplo
auth.identityStart
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/auth/identity/start`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/auth/identidad/inicio
curl --request POST "${CADCAMFUN_URL}/api/auth/identity/start" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo
correo /api/auth/identity/poll # auth.identityPoll

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  id: string
}
Respuestas
200 objeto | objeto | objeto application/json
{
  status: "pending"
} | {
  status: "complete"
  tokens: {
    access: string
    refresh: string
    expiresAt: number | "Infinity" | "-Infinity" | "NaN"
  }
} | {
  status: "failed"
  message: string
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
buscar ejemplo
auth.identityPoll
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/auth/identity/poll`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/auth/identidad/encuesta
curl --request POST "${CADCAMFUN_URL}/api/auth/identity/poll" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo
correo /api/auth/identity/cancel # auth.identityCancel

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  id: string
}
Respuestas
200 objeto application/json
{
  success: true
  message: string
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
buscar ejemplo
auth.identityCancel
// Not generated in the Promise SDK (multipart, binary or raw body): call it with fetch.
const response = await fetch(`${process.env.CADCAMFUN_URL}/api/auth/identity/cancel`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
curl
POST /api/auth/identidad/cancelar
curl --request POST "${CADCAMFUN_URL}/api/auth/identity/cancel" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/forgot-password

correo /api/auth/forgot-password # auth.forgotPassword

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  email?: string | null
  callbackURL?: string | null
}
Respuestas
200 objeto application/json
{
  success: true
  message: string
  debugResetLink?: string | null
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Ejemplo de SDK
auth.forgotPassword
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AuthForgotPasswordInput
const result = await client.auth.forgotPassword({
  email: "",
  callbackURL: ""
})
curl
POST /api/auth/olvidé mi contraseña
curl --request POST "${CADCAMFUN_URL}/api/auth/forgot-password" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/reset-password

correo /api/auth/reset-password # auth.resetPassword

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  token?: string | null
  newPassword?: string | null
  confirmPassword?: string | null
}
Respuestas
200 objeto application/json
{
  success: true
  message: string
  user: {
    id: string
    email: string
    name: string | null
  }
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 AuthNotFoundEncoded application/json
AuthNotFoundEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Ejemplo de SDK
auth.resetPassword
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AuthResetPasswordInput
const result = await client.auth.resetPassword({
  token: "",
  newPassword: "",
  confirmPassword: ""
})
curl
POST /api/auth/reset-contraseña
curl --request POST "${CADCAMFUN_URL}/api/auth/reset-password" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/send-verification-email

correo /api/auth/send-verification-email # auth.sendVerificationEmail

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  email?: string | null
  callbackURL?: string | null
}
Respuestas
200 objeto application/json
{
  success: true
  message: string
  debug: {
    link: string
  }
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 AuthNotFoundEncoded application/json
AuthNotFoundEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Ejemplo de SDK
auth.sendVerificationEmail
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AuthSendVerificationEmailInput
const result = await client.auth.sendVerificationEmail({
  email: "",
  callbackURL: ""
})
curl
POST /api/auth/enviar-correo electrónico de verificación
curl --request POST "${CADCAMFUN_URL}/api/auth/send-verification-email" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/verify-email

correo /api/auth/verify-email # auth.verifyEmail

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  token?: string | null
}
Respuestas
200 objeto application/json
{
  success: true
  message: string
  user: {
    id: string
    email: string
    name: string | null
    emailVerified: string
  }
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
404 AuthNotFoundEncoded application/json
AuthNotFoundEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Ejemplo de SDK
auth.verifyEmail
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AuthVerifyEmailInput
const result = await client.auth.verifyEmail({
  token: ""
})
curl
POST /api/auth/verificar-correo electrónico
curl --request POST "${CADCAMFUN_URL}/api/auth/verify-email" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/signout

correo /api/auth/signout # auth.signout

Requiere Authorization: Bearer <token>.

Respuestas
200 objeto application/json
{
  success: true
  message: string
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
Ejemplo de SDK
auth.signout
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.auth.signout()
curl
ENVIAR /api/auth/signout
curl --request POST "${CADCAMFUN_URL}/api/auth/signout" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo

/api/auth/get-session

conseguir /api/auth/get-session # auth.getSession

Requiere Authorization: Bearer <token>.

Respuestas
200 objeto application/json
{
  session: {
    user: {
      id: string
      email: string | null
      name: string | null
      emailVerified: string | null
      createdAt: string
      updatedAt: string
    }
    expires: string
    sessionToken?: string | null
  }
}
401 Autenticación no autorizada codificada | No autorizadoCodificado application/json
AuthUnauthorizedEncoded | UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Ejemplo de respuesta capturado · 200
OBTENER /api/auth/get-session
{
  "session": {
    "user": {
      "id": "c942817d-0162-4291-84ff-77321d387acc",
      "email": "local@cadcamfun.local",
      "name": "Local user",
      "emailVerified": null,
      "createdAt": "2026-10-15T04:52:06.538Z",
      "updatedAt": "2026-10-15T04:52:06.538Z"
    },
    "expires": "2026-10-22T04:52:23.311Z"
  }
}
Ejemplo de SDK
auth.getSession
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.auth.getSession()
curl
OBTENER /api/auth/get-session
curl --request GET "${CADCAMFUN_URL}/api/auth/get-session" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo

/api/auth/signin-direct

correo /api/auth/signin-direct # auth.signinDirect

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  email?: string | null
  password?: string | null
}
Respuestas
200 objeto application/json
{
  success: true
  message: string
  user: {
    id: string
    email: string | null
    name: string | null
    emailVerified: string | null
    createdAt: string
  }
  token: string
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 Autenticación no autorizada codificada | No autorizadoCodificado application/json
AuthUnauthorizedEncoded | UnauthorizedEncoded
404 AuthNotFoundEncoded application/json
AuthNotFoundEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Ejemplo de SDK
auth.signinDirect
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AuthSigninDirectInput
const result = await client.auth.signinDirect({
  email: "",
  password: ""
})
curl
POST /api/auth/signin-directo
curl --request POST "${CADCAMFUN_URL}/api/auth/signin-direct" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/signup

correo /api/auth/signup # auth.signup

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  email?: string | null
  password?: string | null
  confirmPassword?: string | null
  name?: string | null
}
Respuestas
201 objeto application/json
{
  success: true
  message: string
  user: {
    id: string
    email: string | null
    name: string | null
    emailVerified: string | null
    createdAt: string
  }
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Ejemplo de SDK
auth.signup
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AuthSignupInput
const result = await client.auth.signup({
  email: "",
  password: "",
  confirmPassword: "",
  name: ""
})
curl
ENVIAR /api/auth/signup
curl --request POST "${CADCAMFUN_URL}/api/auth/signup" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/test-direct-create

correo /api/auth/test-direct-create # auth.testDirectCreate

Requiere Authorization: Bearer <token>.

Cuerpo de la solicitud · requerido · aplicación/json
{
  email?: string | null
  password?: string | null
  name?: string | null
}
Respuestas
201 objeto application/json
{
  success: true
  message: string
  user: {
    id: string
    email: string | null
    name: string | null
    emailVerified: string | null
    createdAt: string
  }
}
400 TestCreateBadRequestEncoded application/json
TestCreateBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 TestCreateFailureEncoded application/json
TestCreateFailureEncoded
Ejemplo de SDK
auth.testDirectCreate
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// AuthTestDirectCreateInput
const result = await client.auth.testDirectCreate({
  email: "",
  password: "",
  name: ""
})
curl
POST /api/auth/test-direct-create
curl --request POST "${CADCAMFUN_URL}/api/auth/test-direct-create" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Pruébalo

/api/auth/passkey-register

correo /api/auth/passkey-register # auth.registerPasskey

Requiere Authorization: Bearer <token>.

Respuestas
200 cualquier valor JSON application/json
unknown
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
501 PasskeyNotImplementedEncoded application/json
PasskeyNotImplementedEncoded
Ejemplo de SDK
auth.registerPasskey
import { CadCam } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

// no input
const result = await client.auth.registerPasskey()
curl
POST /api/auth/contraseña-registro
curl --request POST "${CADCAMFUN_URL}/api/auth/passkey-register" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Pruébalo

esquemas

Esquemas con nombre accesibles desde los parámetros, cuerpos y respuestas de este grupo. A ? marca un campo opcional; | null marca un campo que puede estar presente con un valor nulo.

AuthBadRequestEncoded
{
  _tag: "AuthBadRequest"
  error: string
  details: string
}
AuthInternalEncoded
{
  _tag: "AuthInternal"
  error: string
  details: string
}
AuthNotFoundEncoded
{
  _tag: "AuthNotFound"
  error: string
  details: string
}
AuthUnauthorizedEncoded
{
  _tag: "AuthUnauthorized"
  error: string
  details: string
}
PasskeyNotImplementedEncoded
{
  _tag: "PasskeyNotImplemented"
  error: string
  details: string
  todoImplementation: {
    webauthn: string
    challengeGeneration: string
    credentialStorage: string
    userVerification: string
  }
}
TestCreateBadRequestEncoded
{
  _tag: "TestCreateBadRequest"
  error: string
}
TestCreateFailureEncoded
{
  _tag: "TestCreateFailure"
  error: string
  message: string
}
UnauthorizedEncoded
{
  _tag: "Unauthorized"
  message: string
}

Llamando a este grupo

Los identificadores de operación tienen la forma auth.<name>. El SDK de promesa generado (@cadcamfun/api/sdk) expone la mayoría de ellos como client.<namespace>.<method>(input), dónde input es un objeto plano de parámetros de ruta y campos de cuerpo; El ejemplo de SDK de cada tarjeta muestra el acceso exacto y el tipo de entrada. No se generan cargas de varias partes, respuestas binarias o JavaScript ni webhooks sin formato; esas tarjetas muestran fetch en su lugar.

Errores del SDK de Promise
import { CadCam, ClientError } from "@cadcamfun/api/sdk"

const client = CadCam.make({
  baseUrl: process.env.CADCAMFUN_URL!,
  headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})

try {
  await client.projects.list()
} catch (error) {
  if (error instanceof ClientError) {
    // Transport | UnexpectedStatus | UnsupportedContentType | MalformedResponse | SseEventTooLarge
  } else {
    // a declared error body: switch on error._tag
  }
}

Solución de problemas

Síntomacausa probableArreglar
401 en cada llamadaToken de un lanzamiento anterior o faltante Bearer prefijoEnviar Authorization: Bearer <token> con la ficha con la que se inició el sidecar.
400 antes de que ocurra algoEl cuerpo o el parámetro no coincide con el esquemaCompare la carga útil con el esquema de solicitud en la tarjeta.
403 o 404 en un registro que puedes ver en otro sitioLa cuenta de actuación difiere.enviar la derecha x-session-tokeno utilice el perfil local propietario del registro.
409Estado conflictivo, como un nombre duplicado o un encabezado de sucursal obsoletoVuelva a leer el recurso y vuelva a intentarlo con los datos actuales.
Pruébelo, dice "bloqueado por CORS"Los documentos se entregan desde un origen sin bucle invertido.Ejecute los documentos localmente o copie la solicitud como curl.
Conexión rechazadaEl sidecar se reinició en un nuevo puerto.Leer el puerto del nuevo ready línea.