Utvecklare
Dina data är dina. Läs och ändra dem via GraphQL-API:et och få en signerad webhook när något händer.
API-token
Skapa en token i Kontrollpanel under Data och integrationer och välj vad den får läsa eller ändra. Skicka den som en Bearer-token till /graphql-slutpunkten för ditt företag. Hela schemat finns 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 } } } }"}'Behörigheter
En token har de behörigheter du väljer. Rapporter och inställningar är skrivskyddade, alla andra områden har en läs- och en skrivbehörighet. Rollen hos personen som skapade token avgränsar fortfarande vad den kan nå.
- 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
Varje leverans innehåller en Appointier-Signature-header med en tidsstämpel och en HMAC-SHA256 av tidsstämpeln och den råa kroppen, nycklad med hemligheten för din slutpunkt. Avvisa allt som är äldre än fem minuter.
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));
}Händelser
- 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 misslyckad leverans provas igen efter 1 minut, 5 minuter, 30 minuter, 2 timmar och 12 timmar. Efter 10 misslyckanden i rad pausas slutpunkten och ägaren får ett mejl. Varje leverans kan skickas om från loggen.
Fullständig export
Ägare kan begära en ZIP-fil med varje tabell som CSV och JSON Lines, plus foton, signerade formulär, anteckningar som PDF och en manifestfil med radantal. Länken kommer via mejl och fungerar i 24 timmar.
- customers
- appointments
- catalog
- staff
- locations
- packages
- memberships
- gift_cards
- forms
- notes
- products
- sales
- invoices
- payments
- notifications
- audits
Samma ZIP-fil kan levereras varje dag eller vecka till en Amazon S3-bucket, en S3-kompatibel lagringstjänst eller en SFTP-server.
Anropsgränser
Varje token kan göra 600 anrop i minuten, och varje svar innehåller X-RateLimit-Limit och X-RateLimit-Remaining.