Cleachd seòladh API na buidhne agad agus teisteanas le raointean cuingichte. Tòisich le iarrtas leughaidh, thoir sùil air an fhreagairt agus cùm dìomhaireachdan taobh a-muigh smachd-tùis agus eisimpleirean sgrìobhainnean.
Tha aon API poblach aig Quire: REST thar HTTPS, air a mhìneachadh ann an sgrìobhainn OpenAPI 3.1, le webhooks soidhnichte airson tachartasan agus frithealaiche MCP do luchd-cuideachaidh AI. Tha an iomradh API a’ liostadh gach puing-crìche agus tachartas.
Seòlaidhean
Tha seòladh fhèin aig gach buidheann agus tha an API fo:
https://acme.quirelms.com/api/v1/coursesTha an teisteanas a’ dearbhadh na buidhne. Thèid iuchair airson aon bhuidheann a chleachdadh aig seòladh buidhne eile a dhiùltadh.
Tha an sgrìobhainn OpenAPI ri fhaighinn aig /api/v1/openapi.json air seòladh buidheann sam bith; chì gineadairean cliant an tionndadh a tha thu a’ gairm an-còmhnaidh.
Dearbhadh
Tha Iuchraichean API airson sgriobtaichean is amalachadh frithealaiche-gu-frithealaiche. Cruthaichidh rianaire tè aig /admin/integrations/api-keys, taghaidh e na raointean aice agus chì e i aon turas. Cuir mar thòcan giùlain i:
curl -H "Authorization: Bearer qk_live_..." https://acme.quirelms.com/api/v1/users?limit=50Tòisichidh iuchraichean le qk_live_ no qk_test_. Thoir iuchair eadar-dhealaichte do gach amalachadh.
Tha OAuth 2.1 airson aplacaidean a tha ag obair mar neach clàraichte a-steach. Clàraich cliant aig /admin/integrations/oauth-clients, agus an uair sin cleachd sruth còd ceadachaidh le PKCE (/oauth/authorize, /oauth/token), no teisteanasan cliant airson cliant inneil. Tha lorg ri fhaighinn aig /.well-known/oauth-authorization-server. Caolaichidh raon na ghabhas tòcan dèanamh; cha toir e cothrom dha barrachd a dhèanamh na dh’fhaodadh an neach.
Is iad na raointean resource:read, resource:write agus resource:delete, mar courses:read no enrolments:write. Tha ceithir dhiubh fo shochairean agus nochdaidh rabhadh orra air sgrìn a’ cheadachaidh: audit:read, roles:write, tenants:write agus users:delete.
Iarrtasan
- Duilleagachadh: tha gach liosta air a duilleagachadh le cursair. Cuir
limitagus an uair sinnext_cursoràpagemarcursorfhad ’s a thahas_morefìor (faic an eisimpleir gu h-ìosal). Chan eil offset ann. - Atharrachaidhean o àm: tillidh
updated_sincena dh’atharraich an dèidh àm. Cuirinclude_deleted=trueris no leugh/<resource>/deletionsgus faighinn a-mach dè chaidh a thoirt air falbh. - Aithnichearan bhon taobh a-muigh: gabhaidh a’ mhòr-chuid de ghoireasan ris an
external_idagad fhèin, agus leughaidh no cuiridh/<resource>/ext:{external_id}suas e leis; cha leig sioncronachadh mar sin leat aithnichearan Quire a stòradh. - Idempotency: cuir bann-cinn
Idempotency-KeyairPOST,PATCHagusDELETE. Tillidh ath-oidhirp leis an aon iuchair a’ chiad fhreagairt an àite an obair a dhèanamh dà thuras. Feumaidh puingean-crìche mòra seo. - Tionndaidhean: tha an tionndadh mòr san t-slighe (
/v1). Taobh a-staigh dheth, ’s e lèirmheas le ceann-là a th’ ann an gach atharrachadh briste, taghte leis a’ bhann-cinnQuire-Version, marQuire-Version: 2026-09-20. Gun a’ bhann-cinn, gheibh thu an lèirmheas a bha làithreach nuair a chaidh an teisteanas agad a chur a-mach.
Duilleag de liosta:
{"data": [...], "page": {"next_cursor": "eyJ2Ijox...", "has_more": true, "limit": 100}}Mearachdan
Tha gach mearachd na sgrìobhainn duilgheis RFC 9457:
{"type": "https://quire.com/errors/enrolment.seat_limit_reached",
"title": "Seat limit reached", "status": 409,
"code": "enrolment.seat_limit_reached", "category": "conflict",
"detail": "The course has no seats left, so this enrolment was not created. ...",
"request_id": "01JB7XQK4Z..."}Stèidhich làimhseachadh air code, a tha seasmhach; tha detail sgrìobhte do dhaoine, sàbhailte ri shealltainn dhaibh agus faodaidh e atharrachadh. Nuair nach aithnich thu còd, cuir e sa bhucaid a rèir category:
| Roinn | Inbhe | Feuch a-rithist |
|---|---|---|
validation |
422, le fiosrachadh mu raointean ann an errors |
Chan eil |
authentication |
401 | Chan eil |
authorization |
403 | Chan eil |
not_found |
404 | Chan eil |
conflict |
409 | Uaireannan |
precondition |
412 | Chan eil |
quota |
402 airson a’ phlana, 413 airson meud | Chan eil |
rate_limit |
429, le Retry-After |
Tha |
upstream |
502 no 504 | Tha |
internal |
500 | Tha |
Thoir luaidh air request_id nuair a chuireas tu fios gu taic.
Webhooks
Fo-sgrìobh aig /admin/webhooks, no tron API aig /webhook_subscriptions. Tagh tachartasan a rèir ainm (enrolment.created), a rèir raoin (enrolment.*) no iad uile (*). Cuiridh Quire webhook.ping an toiseach; tòisichidh an fho-sgrìobhadh nuair a fhreagras a’ phuing-crìche agad air.
Tha lìbhrigeadh a’ leantainn sònrachadh Standard Webhooks:
POST /hooks/quire
webhook-id: 01JB7XQK4Z8FQ2M3N4P5R6S7T8
webhook-timestamp: 1790000000
webhook-signature: v1,g0hM9SsE+OTPJTGt/tmIKtSyZlE3uFJELVlNIOLJ1OE=Gus lìbhrigeadh a dhearbhadh:
- Tog an t-sreang
{webhook-id}.{webhook-timestamp}.{raw body}às na dearbh bhaitean a fhuaireadh, mus dèanar parsadh JSON sam bith. - Obraich a-mach HMAC-SHA256 oirre leis an dìomhaireachd fo-sgrìobhaidh agad agus còdaich i mar base64.
- Dèan coimeas ann an ùine sheasmhach ris gach luach
v1,ann anwebhook-signature. Dh’fhaodadh dà luach a bhith ann rè tionndadh dìomhaireachd; tha maids sam bith dligheach. - Diùlt stampa-ama a tha còrr is còig mionaidean bhon ghleoc agad.
import { createHmac, timingSafeEqual } from 'node:crypto';
function verify(secret, id, timestamp, rawBody, header) {
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;
const expected = createHmac('sha256', Buffer.from(secret.replace(/^whsec_/, ''), 'base64'))
.update(`${id}.${timestamp}.${rawBody}`).digest();
return header.split(' ').some((part) => {
const [version, value] = part.split(',');
const given = Buffer.from(value ?? '', 'base64');
return version === 'v1' && given.length === expected.length && timingSafeEqual(given, expected);
});
}Cuir às do dhùblaidhean a rèir webhook-id: dh’fhaodadh lìbhrigeadh ruigsinn barrachd is aon turas. Tha aithnichearan agus geàrr-chunntas goirid anns a’ chorp; faigh an goireas gus a staid làithreach fhaighinn. Feuchaidh Quire ri lìbhrigeadh a dh’fhàillig a-rithist le dàil mean air mhean airson suas ri 72 uair a thìde; faodar an ath-chluich on log lìbhrigidh.
MCP
Tha frithealaiche MCP Quire aig /mcp air seòladh na buidhne, tro HTTP sruthaichte. Lorgaidh cliant MCP am frithealaiche OAuth bho /.well-known/oauth-protected-resource, agus clàraidh an neach a-steach is bheir e cead dìreach mar le cliant OAuth sam bith. Bidh innealan ag obair mar an neach sin agus leis na ceadan aige; iarraidh innealan millteach dearbhadh. Taghaidh rianairean dè na h-innealan a bhios rim faighinn aig /admin/integrations/mcp.
Planaichean is an API
Tha iuchraichean API, cliantan OAuth, webhooks agus frithealaiche MCP an urra ri còir API a’ phlana, agus tha a’ chòir sin anns gach plana àbhaisteach. Ma tha i a dhìth, thèid cruthachadh iuchrach, cliant no fo-sgrìobhaidh a dhiùltadh, thèid sgrìobhaidhean REST agus ceanglaichean MCP a dhiùltadh, ach leanaidh leughaidhean REST orra gus am bi an dàta às-phortail. ’S e sgrìobhainn duilgheis a th’ anns an diùltadh, leis a’ chòd commerce.plan_entitlement, san roinn precondition.
Leudachain
Tha seòrsaichean gnìomh, blocaichean, dòighean clàraidh, dòighean clàraidh a-steach, seòrsaichean cheistean, aithisgean, cuspairean agus amalachadh Quire fhèin air an cur an cèill tron aon chlàr-leudachaidh ris an urrainn do stàladh fèin-aoigheachd rudan a chur ris. Tha leudachain air an cur ri chèile: chan eil luchdadair plugan rè-ruith ann agus chan urrainn do bhuidheann aoigheachd fear a chur ris. Cuiridh rianairean gach leudachan air no dheth airson na buidhne aca aig /admin/extensions (faic stiùireadh an rianaire).
Gus fear a sgrìobhadh, tòisich leis a’ bhloc agus an cuspair sampall ann an packages/integration/extensions/src/sample.ts. Tagh puing leudachaidh agus leugh a cùmhnant ann an points.ts; an uair sin cuir an leudachan an cèill le ID, tionndadh, ceadachas, na tha e a’ toirt seachad agus ag iarraidh, agus an urrainn do bhuidheann a chur dheth. Clàraich e far a bheil an t-aplacaid-lìn agus am pròiseas obrach air an cur ri chèile gus am bi iad ag aontachadh le chèile. Nì an clàr sgrùdadh air riaghailtean puing fhèin nuair a thèid a thogail agus gach turas a ghairmeas tu register; diùlt e seata neo-dhligheach le ainm gach duilgheis agus fàgaidh e an clàr gun atharrachadh. Bu chòir do dheuchainnean an leudachain dearbhadh gu bheil extensionContractProblems falamh air a shon agus gu bheil cur dheth ag atharrachadh na tha e a’ toirt buaidh air.