Pembangun
Data anda milik anda. Baca dan ubahnya melalui API GraphQL, dan terima webhook bertandatangan apabila sesuatu berlaku.
Token API
Cipta token dalam Panel kawalan di bawah Data & integrasi, dan pilih apa yang boleh dibaca atau diubahnya. Hantarkannya sebagai token Bearer ke endpoint /graphql perniagaan anda. Skema penuh terdapat di /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 } } } }"}'Skop
Token membawa skop yang anda pilih. Laporan dan tetapan hanya boleh dibaca; setiap bahagian lain mempunyai skop baca dan skop tulis. Peranan orang yang mencipta token masih menghadkan apa yang boleh dicapainya.
- 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
Webhook
Setiap penghantaran membawa pengepala Appointier-Signature dengan cap masa dan HMAC-SHA256 bagi cap masa serta badan mentah, dikunci dengan rahsia endpoint anda. Tolak apa-apa yang lebih lama daripada lima minit.
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));
}Peristiwa
- 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
Penghantaran yang gagal dicuba semula selepas 1 minit, 5 minit, 30 minit, 2 jam dan 12 jam. Selepas 10 kegagalan berturut-turut, titik akhir dijeda dan pemilik menerima e-mel. Mana-mana penghantaran boleh dimainkan semula dari log.
Eksport penuh
Pemilik boleh meminta ZIP dengan setiap jadual dalam CSV dan JSON Lines, serta foto, borang bertandatangan, PDF nota dan manifes dengan jumlah baris. Pautan tiba melalui e-mel dan sah selama 24 jam.
- customers
- appointments
- catalog
- staff
- locations
- packages
- memberships
- gift_cards
- forms
- notes
- products
- sales
- invoices
- payments
- notifications
- audits
ZIP yang sama boleh dihantar setiap hari atau setiap minggu ke baldi Amazon S3, stor serasi S3 atau hos SFTP.
Had kadar
Setiap token boleh membuat 600 permintaan seminit, dan setiap respons membawa X-RateLimit-Limit dan X-RateLimit-Remaining.