Vai al contenuto
CADCAMFUN
Documentazione

Documentazione

Autenticazione

Accesso all'account, registrazione, ripristino, verifica, collegamenti magici, ricerca di sessioni e registrazione della passkey.

Tradotto automaticamente dall'inglese. Vedi l'originale in inglese

Playground

Invia queste richieste al tuo sidecar in corsa. I valori rimangono in questo browser.

Non connesso
Come funziona

Il sidecar resta in ascolto su una porta di loopback scelta all'avvio e la stampa nel suo file ready linea; usa quell'URL e il file CADCAMFUN_TOKEN è stato iniziato con. Le richieste vanno direttamente da questa pagina a quell'indirizzo.

Il sidecar invia intestazioni CORS solo alle origini Tauri e a http://localhost o http://127.0.0.1 su qualsiasi porto. Dai documenti ospitati il browser blocca la risposta, quindi esegui i documenti localmente (bun run dev in packages/web) per utilizzare il parco giochi, oppure copiare la richiesta come ricciolo. Per sperimentare senza toccare i dati reali, avvia il sidecar con CADCAMFUN_DATA_DIR indicato in una directory usa e getta - vedi la procedura dettagliata dell'API.

Operazioni

15 endpoint nel auth gruppo, generato da quello del sidecar Documento OpenAPI. Le operazioni protette richiedono Authorization: Bearer $CADCAMFUN_TOKEN; vedere autenticazione. Comportamenti e limiti sono entrati la guida del sottosistema.

inviare /api/auth/identity/start auth.identityStart
inviare /api/auth/identity/poll auth.identityPoll
inviare /api/auth/identity/cancel auth.identityCancel
inviare /api/auth/forgot-password auth.forgotPassword
inviare /api/auth/reset-password auth.resetPassword
inviare /api/auth/send-magic-link auth.sendMagicLink
inviare /api/auth/send-verification-email auth.sendVerificationEmail
inviare /api/auth/verify-email auth.verifyEmail
inviare /api/auth/signout auth.signout
ottenere /api/auth/get-session auth.getSession
inviare /api/auth/signin-direct auth.signinDirect
inviare /api/auth/signup auth.signup
inviare /api/auth/test-direct-create auth.testDirectCreate
inviare /api/auth/verify-magic-link auth.verifyMagicLink
inviare /api/auth/passkey-register auth.registerPasskey
Operazioni di autenticazione in 3D Trascina per orbitare · scorri per ingrandire · trascina con il tasto destro per eseguire la panoramica
Un blocco per operazione (15), impilato per sezione di risorse di questa pagina e colorato in base al metodo: verde GET, arancione POST, blu PUT, viola PATCH, rosso DELETE. Generato dal documento OpenAPI in fase di compilazione.

/api/auth/identity

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

Richiede Authorization: Bearer <token>.

Risposte
200 oggetto application/json
{
  id: string
  url: string
  issuer: string
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
prendere esempio
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/identity/start
curl --request POST "${CADCAMFUN_URL}/api/auth/identity/start" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Provalo
inviare /api/auth/identity/poll # auth.identityPoll

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  id: string
}
Risposte
200 oggetto | oggetto | oggetto 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
prendere esempio
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/identity/poll
curl --request POST "${CADCAMFUN_URL}/api/auth/identity/poll" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Provalo
inviare /api/auth/identity/cancel # auth.identityCancel

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  id: string
}
Risposte
200 oggetto application/json
{
  success: true
  message: string
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
prendere esempio
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/identity/cancel
curl --request POST "${CADCAMFUN_URL}/api/auth/identity/cancel" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Provalo

/api/auth/forgot-password

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

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  email?: string | null
  callbackURL?: string | null
}
Risposte
200 oggetto application/json
{
  success: true
  message: string
  debugResetLink?: string | null
}
400 AuthBadRequestEncoded application/json
AuthBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Esempio dell'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/password dimenticata
curl --request POST "${CADCAMFUN_URL}/api/auth/forgot-password" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Provalo

/api/auth/reset-password

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

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  token?: string | null
  newPassword?: string | null
  confirmPassword?: string | null
}
Risposte
200 oggetto 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
Esempio dell'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/reimposta-password
curl --request POST "${CADCAMFUN_URL}/api/auth/reset-password" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Provalo

/api/auth/send-verification-email

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

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  email?: string | null
  callbackURL?: string | null
}
Risposte
200 oggetto 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
Esempio dell'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/send-verification-email
curl --request POST "${CADCAMFUN_URL}/api/auth/send-verification-email" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Provalo

/api/auth/verify-email

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

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  token?: string | null
}
Risposte
200 oggetto 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
Esempio dell'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/verify-email
curl --request POST "${CADCAMFUN_URL}/api/auth/verify-email" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Provalo

/api/auth/signout

inviare /api/auth/signout # auth.signout

Richiede Authorization: Bearer <token>.

Risposte
200 oggetto application/json
{
  success: true
  message: string
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
Esempio dell'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
POST /api/auth/signout
curl --request POST "${CADCAMFUN_URL}/api/auth/signout" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Provalo

/api/auth/get-session

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

Richiede Authorization: Bearer <token>.

Risposte
200 oggetto 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 AuthUnauthorizedEncoded | NonautorizzatoCodificato application/json
AuthUnauthorizedEncoded | UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Risposta di esempio catturato · 200
GET /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"
  }
}
Esempio dell'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
GET /api/auth/get-session
curl --request GET "${CADCAMFUN_URL}/api/auth/get-session" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Provalo

/api/auth/signin-direct

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

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  email?: string | null
  password?: string | null
}
Risposte
200 oggetto 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 AuthUnauthorizedEncoded | NonautorizzatoCodificato application/json
AuthUnauthorizedEncoded | UnauthorizedEncoded
404 AuthNotFoundEncoded application/json
AuthNotFoundEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
Esempio dell'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-direct
curl --request POST "${CADCAMFUN_URL}/api/auth/signin-direct" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
  --header "Content-Type: application/json" \
  --data-binary @request.json
Provalo

/api/auth/signup

inviare /api/auth/signup # auth.signup

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  email?: string | null
  password?: string | null
  confirmPassword?: string | null
  name?: string | null
}
Risposte
201 oggetto 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
Esempio dell'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
POST /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
Provalo

/api/auth/test-direct-create

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

Richiede Authorization: Bearer <token>.

Corpo della richiesta · obbligatorio · application/json
{
  email?: string | null
  password?: string | null
  name?: string | null
}
Risposte
201 oggetto 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
Esempio dell'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
Provalo

/api/auth/passkey-register

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

Richiede Authorization: Bearer <token>.

Risposte
200 qualsiasi valore JSON application/json
unknown
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AuthInternalEncoded application/json
AuthInternalEncoded
501 PasskeyNotImplementedEncoded application/json
PasskeyNotImplementedEncoded
Esempio dell'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/passkey-register
curl --request POST "${CADCAMFUN_URL}/api/auth/passkey-register" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
Provalo

Schemi

Schemi denominati raggiungibili dai parametri, dai corpi e dalle risposte di questo gruppo. UN ? contrassegna un campo facoltativo; | null contrassegna un campo che può essere presente con un valore nullo.

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
}

Chiamando questo gruppo

Gli ID operazione hanno il formato auth.<name>. L'SDK Promise generato (@cadcamfun/api/sdk) ne espone la maggior parte come client.<namespace>.<method>(input), dove input è un oggetto piatto di parametri di percorso e campi del corpo; l'esempio dell'SDK di ciascuna scheda mostra l'esatto accessor e il tipo di input. Non vengono generati caricamenti in più parti, risposte binarie o JavaScript e webhook grezzi; quelle carte mostrano fetch invece.

Errori dall'SDK 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
  }
}

Risoluzione dei problemi

SintomoProbabile causaAggiustare
401 a ogni chiamataToken di un lancio precedente o mancante Bearer prefissoInviare Authorization: Bearer <token> con il gettone con cui è stato avviato il sidecar.
400 prima che accada qualcosaIl corpo o il parametro non corrisponde allo schemaConfronta il payload con lo schema di richiesta sulla carta.
403 o 404 su un record visibile altroveIl resoconto della recitazione è diversoInvia il diritto x-session-tokenoppure utilizzare il profilo locale proprietario del record.
409Stato in conflitto, ad esempio un nome duplicato o una testa di ramo obsoletaRileggere la risorsa e riprovare con i dati correnti.
Prova, dice "bloccato da CORS"I documenti vengono serviti da un'origine non di loopbackEsegui i documenti localmente o copia la richiesta come curl.
Connessione rifiutataIl sidecar è ripartito su una nuova portaLeggi il porto dal nuovo ready riga.