Creați cu Praxium.

Composabil prin design

Conectați instrumentele preferate la Praxium. API-uri REST, un SDK TypeScript tip și webhook-uri semnate pentru fluxurile de lucru din domeniul sănătății.

Începeți în 5 minute

Alege-ți calea. Oricare rută vă oferă o integrare API funcțională în aceeași sesiune.

Nou în Praxium

Proces de autoservire

  1. Înscrie-te

    Porniți o organizație în mai puțin de 5 minute. Fără card de credit.

  2. Eșantion de date, gata de plecare

    Tenanturile de probă includ exemple de personal, clienți și programări. Reinițializarea datelor demo restabilește oricând un set de date curat.

  3. Creați un profil API + cheie

    Administrator → API profiluri. Fiecare profil primește propria sa cheie HMAC și decide ce tipuri de entități și câmpuri personalizate le expune.

  4. Apelați API-urile

    Folosiți @praxium/sdk sau curl împotriva https://{your-slug}.admin.praxium.nl.

Începeți proba gratuită
Sunteți deja client?

Adu-ți propriul administrator

  1. Întrebați-vă administratorul

    Un administrator din tenantul dvs. poate crea un profil API și poate partaja cheia acestuia — profilul decide ce câmpuri puteți citi.

  2. Apelați API-urile

    Folosiți @praxium/sdk sau curl cu cheia pe care o distribuie administratorul.

API-urile REST

  • Rutare — REST în funcție de tenant la /api/{tenant-slug}/...
  • Autentificare — cheie API HMAC în Authorization: Bearer, niciodată în adrese URL
  • Permisiuni — fiecare cheie legată de un profil API care definește tipurile de entități și câmpurile pe care le poate citi
  • Limbi — utilizați Accept-Language: nl, en sau ro; preferințele neacceptate folosesc limba implicită a tenantului.
  • Descoperire - Descris de OpenAPI, navigabil în UI Scalar
  • Observabilitate - fiecare apel înregistrat cu stare, latență, profil, IP (reținere de 90 de zile, vizibil de administrator)
bash
curl -H "Authorization: Bearer $PRAXIUM_API_KEY" \  https://demo.admin.praxium.nl/api/demo/team
Cum funcționează auth

Cheile API sunt semnate HMAC la creare: cheia în sine conține propria sa dovadă de integritate în formatul praxium_v1_<tenant>_<profile>_<timestamp>_<signature>, unde semnătura este derivată din partea serverului HMAC-SHA256 dintr-un secret de semnare per profil care trăiește criptat în repaus în baza de date - nu produce niciodată decât secretul semnăturii. Slug-ul tenantului este legat criptografic în semnătură, astfel încât o cheie emisă pentru tenantul A nu poate fi redirecționată către tenantul B fără a întrerupe verificarea. La sosire, serverul verifică integritatea cheii de la un capăt la altul înainte ca orice date să fie returnate, iar cheile falsificate sau redirecționate sunt respinse cu 403.

Solicitările se autentifică prin Authorization: Bearer <key> standard peste HTTPS — același model folosit de GitHub, OpenAI, Slack și Notion.

În partea de sus, fiecare cheie este încadrată într-un singur profil API, care definește exact ce tipuri de entități și câmpuri poate citi. Fiecare integrare interacționează doar cu datele de care are nevoie - principiul cel mai mic privilegiu, aplicat la nivel de câmp, mai degrabă decât la nivel de punct final. Revocarea sau rotația se face pe profil din portalul de administrare.

Cum funcționează conținutul localizat

Trimiteți Accept-Language: nl, Accept-Language: en sau Accept-Language: ro atunci când site-ul redă o singură limbă. API-urile tenant folosesc limba solicitată numai dacă este activată pentru tenant; altfel folosesc limba implicită a tenantului.

Fiecare endpoint păstrează o singură formă documentată a răspunsului. Câmpurile documentate ca localizate—precum numele categoriilor FAQ, întrebările și răspunsurile, precum și etichetele și valorile câmpurilor personalizate ale echipei—revin ca șiruri. Câmpurile documentate în OpenAPI ca hărți de locale își păstrează forma stabilă.

Pentru câmpurile localizate, o traducere lipsă revine la cel mai bun text publicat disponibil în locul unui șir gol.

Deschideți referința interactivă API la /api-docs

Înlocuiți {tenant} cu tenantul dvs.

Încearcă-l

@praxium/sdk

npm install @praxium/sdk
  • Tipuri — Client TypeScript cu completare automată pentru fiecare punct final
  • Auth — chei API derivate din HMAC semnate automat, fără boilerplate
  • Limbi — setați locale la nl, en sau ro; fiecare metodă păstrează un singur tip de răspuns TypeScript
  • Timp de execuție — Node.js 20+, timpi de execuție Edge, orice mediu capabil de preluare
ts
import { createPraxiumClient } from '@praxium/sdk'
const client = createPraxiumClient({  baseUrl: process.env.PRAXIUM_API_URL!,  apiKey: process.env.PRAXIUM_API_KEY!,  locale: 'nl',  // 'nl' | 'en' | 'ro'})
const location = client.location('amsterdam')const hours = await location.getOpeningHours()const team = await location.getTeamMembers()const faq = await location.getFaq()

Începeți cu SDK-ul: @praxium/sdk sau sari la metodele disponibile

Cum se autentifică SDK-ul

SDK-ul folosește același model de autentificare ca REST API de mai sus — aceleași chei praxium_v1_…, aceeași verificare HMAC pe server, același 403 pentru cheile modificate sau redirecționate. Ceea ce adaugă SDK-ul: derivă automat slug-ul tenantului din cheie (fără configurație separată), atașează Authorization: Bearer <PRAXIUM_API_KEY> la fiecare solicitare și oferă metode tipizate pentru locații (await client.location('amsterdam').getTeamMembers(), await client.location('amsterdam').getOpeningHours(), …), eliminând codul repetitiv pentru fetch.

Stocarea cheilor rămâne responsabilitatea dvs.: încărcați-o la runtime dintr-un manager de secrete sau dintr-o variabilă de mediu (PRAXIUM_API_KEY este convenția, dar numele este alegerea dvs.), nu o includeți niciodată în controlul sursei și rotiți-o prin portalul de administrare când personalul se schimbă sau cheia ar fi putut fi expusă. Cheile generate sunt afișate o singură dată la creare — se stochează doar hash-ul SHA-256, deci o cheie pierdută nu poate fi recuperată (generați una nouă și revocați-o pe cea veche).

Cum funcționează conținutul localizat în SDK

Setați locale la nl, en sau ro. SDK-ul trimite valoarea ca Accept-Language la fiecare solicitare, iar o limbă dezactivată pentru tenant revine la limba implicită a tenantului.

Fiecare metodă are un singur tip de răspuns TypeScript. getFaq() returnează numele localizate ale categoriilor, întrebările și răspunsurile; etichetele și valorile câmpurilor personalizate ale echipei sunt rezolvate la fel. Câmpurile generate ca hărți de locale își păstrează forma documentată și pot fi redate cu utilitarele i18n ale aplicației.

Vizualizare pe npm

Webhook-uri

Abonați-vă la un tip de resursă și la una sau mai multe acțiuni ale ciclului de viață, cu o condiție opțională specifică resursei; de exemplu: tip resursă = service, acțiune ciclu de viață = updated, condiție = Locația conține IJFysio.

  • CloudEvents — un ID al evenimentului pentru deduplicarea reîncercărilor și tipul plus ID-ul resursei modificate în subject și data
  • Livrare durabilă — semnături HMAC-SHA256 legate de marcajul de timp, reîncercări automate și jurnale de livrare păstrate 90 de zile
http
POST /your-endpoint
X-Praxium-Signature: t=1784023200,sha256=<64-character-hex-digest>Content-Type: application/cloudevents+json
{  "specversion": "1.0",  "id": "019f60d2-3c47-7bb1-816f-458b53f520b5",  "type": "service.updated",  "source": "urn:praxium:tenant:019f5b62-21fa-7b40-88ee-9be2d71da2a1",  "subject": "service/019f5c7e-87f6-7449-9138-b0bc38d5bc65",  "time": "2026-07-14T12:00:00.000Z",  "data": {    "resource": {      "type": "service",      "id": "019f5c7e-87f6-7449-9138-b0bc38d5bc65"    }  }}

Toate ajutoarele webhook și tipurile de evenimente → Referință pentru webhooks @praxium/sdk

Cum funcționează semnăturile și cum să le verifici

Fiecare livrare include un singur antet X-Praxium-Signature: t=<unix_ts>,sha256=<hmac_hex>, unde HMAC-SHA256 este calculat pe partea de server peste ${timestamp}.${rawBody} folosind secretul per-webhook. Secretul partajat nu traversează niciodată firul - doar ieșirea HMAC o face. Semnătura demonstrează două lucruri simultan: corpul nu a fost manipulat în tranzit (integritate), iar apelul a venit cu adevărat de la Praxium și nu de la un atacator care a ghicit punctul tău final URL (autenticitate). Toate livrările sunt expediate prin HTTPS — Praxium refuză să înregistreze URL-uri webhook care nu sunt HTTPS în mediile implementate.

În calitate de destinatar webhook, sunteți responsabil pentru verificarea fiecărei livrări — Praxium semne și expedieri, dar aplicarea are loc în operatorul dvs. Dacă utilizați @praxium/sdk, nu scrieți nimic din acestea manual: processWebhook() (agnostic de cadru) și createRevalidationHandler() (Next.js ISR) coaceți în toți cei patru pași plus protecție la reluare. Implementare manuală într-un alt timp de execuție? Cei patru pași sunt: ​​(1) analizați marcajul de timp și semnătura din antet, (2) respingeți livrările mai vechi decât fereastra de reluare - 5 minute este standardul, (3) recalculați HMAC-ul pe ${timestamp}.${rawBody} cu secretul dvs. partajat, (4) comparați cu compararea în timp constant (de exemplu, crypto.timingSafeEqual).

Aceasta este aceeași schemă pe care o folosește Stripe pentru semnăturile webhook. Secretele per-webhook sunt returnate exact o dată - în răspunsul când creați webhook-ul și în fiecare răspuns de rotație - și nu reapar niciodată după aceea. Acest model cu o singură expunere înseamnă că nu există o suprafață de atac de lungă durată pentru secretul din partea platformei: nici măcar o sesiune de administrare compromisă nu o poate scoate din nou. Ai nevoie de unul proaspăt? Rotiți din portalul de administrare — noul secret sosește în răspunsul de rotație, cel anterior este invalidat imediat și alte abonamente nu sunt atinse.

Modele de integrare.

Extrageți date atunci când site-ul dvs. are nevoie de ele. Reacționează la schimbări în momentul în care acestea se întâmplă.

Afișați datele Praxium pe propriul dvs. site

Site-ul dvs. preia personal, servicii, locații și întrebări frecvente prin SDK. Abonați-vă la evenimentele explicite ale ciclului lor de viață și invalidați layout-ul localizat când sosește un eveniment semnat — fără listă de pagini și fără conținut învechit.

Eveniment de resursă + extragere de date SDK

Reacționați la schimbările de entități în propriile instrumente

Endpoint-ul webhook primește un CloudEvent semnat cu ID-ul evenimentului și ID-ul resursei modificate. Redirecționați-l către Slack, CRM, un lac de date sau altă conductă — Praxium semnează și reîncearcă evenimentul sursă, iar dvs. alegeți reacția.

Webhook-uri de ieșire