Utviklere
Dataene dine er dine. Les og endre dem gjennom GraphQL-API-et, og få en signert webhook når noe skjer.
API-tokens
Opprett et token i Kontrollpanel under Data og integrasjoner, og velg hva det kan lese eller endre. Send det som et Bearer-token til /graphql-endepunktet for bedriften din. Hele skjemaet finner du på /graphql/schema.
curl https://your-business.appointier.com/graphql \
-H "Authorization: Bearer $APPOINTIER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"{ customers(first: 5) { edges { node { firstName lastName email } } } }"}'Tilganger
Et token har tilgangene du velger. Rapporter og innstillinger er skrivebeskyttet, alle andre områder har en lese- og en skrivetilgang. Rollen til personen som opprettet tokenet setter fortsatt grensen for hva det når.
- read
- write
- customers.read
- customers.write
- appointments.read
- appointments.write
- catalog.read
- catalog.write
- packages.read
- packages.write
- sales.read
- sales.write
- invoices.read
- invoices.write
- reports.read
- settings.read
Webhooks
Hver leveranse har en Appointier-Signature-header med et tidsstempel og en HMAC-SHA256 av tidsstempelet og den uendrede innholdsdelen, nøklet med hemmeligheten til endepunktet ditt. Avvis alt som er eldre enn fem minutter.
import crypto from "node:crypto";
export function verify(body, header, secret, toleranceSeconds = 300) {
const parts = Object.fromEntries(header.split(",").map((part) => part.split("=")));
const age = Math.abs(Date.now() / 1000 - Number(parts.t));
if (age > toleranceSeconds) return false;
const expected = crypto
.createHmac("sha256", secret)
.update(`${parts.t}.${body}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}Hendelser
- appointment.created
- appointment.updated
- appointment.canceled
- appointment.completed
- appointment.no_show
- customer.created
- customer.updated
- sale.completed
- sale.voided
- package.sold
- package.redeemed
- package.reversed
- invoice.paid
En mislykket levering prøves på nytt etter 1 minutt, 5 minutter, 30 minutter, 2 timer og 12 timer. Etter 10 mislykkede forsøk på rad settes endepunktet på pause, og eieren får en e-post. Alle leveringer kan sendes på nytt fra loggen.
Full eksport
Eiere kan be om en ZIP-fil med hver tabell som CSV og JSON Lines, pluss bilder, signerte skjemaer, notater som PDF og en oversikt med antall rader. Lenken kommer på e-post og virker i 24 timer.
- customers
- appointments
- catalog
- staff
- locations
- packages
- memberships
- gift_cards
- forms
- notes
- products
- sales
- invoices
- payments
- notifications
- audits
Den samme ZIP-filen kan leveres hver dag eller hver uke til en Amazon S3-bøtte, en S3-kompatibel lagringstjeneste eller en SFTP-server.
Forespørselsgrenser
Hvert token kan sende 600 forespørsler i minuttet, og hvert svar inneholder X-RateLimit-Limit og X-RateLimit-Remaining.