Úsáid seoladh API d’eagraíochta agus dintiúr a bhfuil scóip theoranta aige. Tosaigh le hiarratas léite, seiceáil an freagra, agus coinnigh rúin amach ón gcód foinseach agus ó shamplaí doiciméadachta.
Tá API poiblí amháin ag Quire: REST thar HTTPS, curtha síos i ndoiciméad OpenAPI 3.1, webhooks sínithe d’imeachtaí agus freastalaí MCP do chúntóirí AI. Liostaíonn an tagairt API gach críochphointe agus imeacht.
Seoltaí
Tá a sheoladh féin ag gach eagraíocht, agus tá an API faoi:
https://acme.quirelms.com/api/v1/coursesIs é an dintiúr a shocraíonn an eagraíocht. Diúltaítear d’eochair eagraíochta amháin má úsáidtear í ag seoladh eagraíochta eile.
Déantar an doiciméad OpenAPI a sheirbheáil ag /api/v1/openapi.json ag seoladh aon eagraíochta, ionas go bhfeiceann gineadóirí cliaint an leagan a bhfuil tú ag glaoch air i gcónaí.
Fíordheimhniú
Is do scripteanna agus comhtháthuithe freastalaí le freastalaí iad eochracha API. Cruthaíonn riarthóir ceann ag /admin/integrations/api-keys, roghnaíonn sé a scóipeanna agus ní fheiceann sé ach uair amháin é. Seol é mar chomhartha iompróra:
curl -H "Authorization: Bearer qk_live_..." https://acme.quirelms.com/api/v1/users?limit=50Tosaíonn eochracha le qk_live_ nó qk_test_. Tabhair eochair ar leith do gach comhtháthú.
Is d’fheidhmchláir a ghníomhaíonn thar ceann duine sínithe isteach é OAuth 2.1. Cláraigh cliant ag /admin/integrations/oauth-clients, agus bain úsáid as sreabhadh cód údaraithe le PKCE (/oauth/authorize, /oauth/token), nó dintiúir chliaint do chliant meaisín. Tá an fionnachtain ag /.well-known/oauth-authorization-server. Cuireann scóip teorainn leis an méid is féidir le comhartha a dhéanamh; ní thugann sé cead dó riamh níos mó a dhéanamh ná mar a d’fhéadfadh an duine féin.
Is iad na scóipeanna resource:read, resource:write agus resource:delete, mar shampla courses:read nó enrolments:write. Tá ceithre scóip phribhléideacha a léirítear le rabhadh ar an scáileán toilithe: audit:read, roles:write, tenants:write agus users:delete.

Iarratais
- Uimhriú leathanaigh: déantar uimhriú le cúrsóir ar gach liosta. Cuir
limitar aghaidh, agus ansin cuirnext_cursorópagear aghaidh marcursorfad is atáhas_morefíor (féach an sampla thíos). Níl aon fhritháireamh ann. - Athruithe ó am áirithe: tugann
updated_sincena hathruithe tar éis ama ar leith ar ais. Úsáid in éineacht leinclude_deleted=true, nó léigh/<resource>/deletions, chun a fháil amach cad a baineadh. - Aitheantóirí seachtracha: glacann formhór na n-acmhainní le do
external_idféin, agus léann nó nuashonraíonn/<resource>/ext:{external_id}de réir an aitheantóra sin. Ní gá, dá bhrí sin, d’aitheantóirí Quire a stóráil le haghaidh sioncronaithe. - Idéimpotaíocht: seol ceanntásc
Idempotency-KeylePOST,PATCHagusDELETE. Tugann iarracht eile leis an eochair chéanna an chéad fhreagra ar ais seachas an obair a dhéanamh faoi dhó. Éilítear é ar chríochphointí ollmhóra. - Leaganacha: tá an leagan mór sa chonair (
/v1). Laistigh de, is athbhreithniú dátaithe é gach athrú briste, roghnaithe leis an gceanntáscQuire-Version, marQuire-Version: 2026-09-20. Gan an ceanntásc faigheann tú an t-athbhreithniú a bhí i bhfeidhm nuair a eisíodh do dhintiúr.
Sampla de leathanach liosta:
{"data": [...], "page": {"next_cursor": "eyJ2Ijox...", "has_more": true, "limit": 100}}Earráidí
Is doiciméad faidhbe RFC 9457 é gach earráid:
{"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..."}Bunaigh do láimhseáil ar code, atá seasmhach; scríobhtar detail do dhaoine, tá sé sábháilte a thaispeáint dóibh agus d’fhéadfadh sé athrú. Mura n-aithníonn tú cód, bain úsáid as a category:
| Catagóir | Stádas | Bain triail eile as |
|---|---|---|
validation |
422, le sonraí réimse in errors |
Níl |
authentication |
401 | Níl |
authorization |
403 | Níl |
not_found |
404 | Níl |
conflict |
409 | Uaireanta |
precondition |
412 | Níl |
quota |
402 don phlean, 413 don mhéid | Níl |
rate_limit |
429, le Retry-After |
Tá |
upstream |
502 nó 504 | Tá |
internal |
500 | Tá |
Luaigh request_id nuair a théann tú i dteagmháil leis an tacaíocht.
Webhooks
Liostáil ag /admin/webhooks, nó tríd an API ag /webhook_subscriptions. Roghnaigh imeachtaí de réir ainm (enrolment.created), de réir réimse (enrolment.*) nó gach imeacht (*). Seolann Quire webhook.ping ar dtús; cuirtear tús leis an síntiús nuair a fhreagraíonn do chríochphointe dó.
Leanann seachadtaí sonraíocht Standard Webhooks:
POST /hooks/quire
webhook-id: 01JB7XQK4Z8FQ2M3N4P5R6S7T8
webhook-timestamp: 1790000000
webhook-signature: v1,g0hM9SsE+OTPJTGt/tmIKtSyZlE3uFJELVlNIOLJ1OE=Chun seachadadh a fhíorú:
- Tóg an téad
{webhook-id}.{webhook-timestamp}.{raw body}ó na bearta cruinne a fuarthas, sula bparsálann tú JSON. - Ríomh HMAC-SHA256 uirthi le rún do shíntiúis, agus ionchódaigh an toradh mar base64.
- Déan comparáid leanúnach ama idir é agus gach luach
v1,inwebhook-signature. D’fhéadfadh dhá cheann a bheith ann le linn rothlú rúin; tá aon mheaitseáil amháin bailí. - Diúltaigh stampa ama atá níos mó ná cúig nóiméad ó d’uaireadóir.
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);
});
}Déan dúblaigh a dhí-dhúbailt ar webhook-id: d’fhéadfadh seachadadh teacht níos mó ná uair amháin. Bíonn aitheantóirí agus achoimre ghairid sa chorp; faigh an acmhainn chun a staid reatha a fháil. Déantar iarrachtaí athsheolta ar theipeanna le moill mhéadaithe ar feadh suas le 72 uair, agus is féidir iad a athsheoladh ón loga seachadta.
MCP
Tá freastalaí MCP Quire ag /mcp ar sheoladh na heagraíochta, trí HTTP sruthaithe. Aimsíonn cliant MCP freastalaí OAuth ó /.well-known/oauth-protected-resource; síníonn an duine isteach agus toilíonn sé mar a dhéanfadh sé le haon chliant OAuth. Gníomhaíonn uirlisí thar ceann an duine lena cheadanna, agus iarrann uirlisí millteanacha dearbhú. Roghnaíonn riarthóirí na huirlisí atá ar fáil ag /admin/integrations/mcp.

Pleananna agus an API
Baineann eochracha API, cliaint OAuth, webhooks agus freastalaí MCP le teidlíocht API an phlean; cuimsíonn gach plean caighdeánach í. Mura bhfuil sí i bplean, diúltaítear do chruthú eochrach, cliaint nó síntiúis; diúltaítear d’iarratais scríofa REST agus do naisc MCP; leanann léamh REST ar aghaidh ionas gur féidir na sonraí a easpórtáil. Is doiciméad faidhbe é an diúltú leis an gcód commerce.plan_entitlement, sa chatagóir precondition.
Eisínteachtaí
Dearbhaítear cineálacha gníomhaíochta, bloic, modhanna clárúcháin, modhanna sínithe isteach, cineálacha ceiste, tuarascálacha, téamaí agus comhtháthuithe Quire sa chlárlann chéanna eisínteachtaí ar féidir le suiteáil féinóstáilte cur léi. Tiomsaítear eisínteachtaí isteach: níl lódálaí breiseán le linn rite ann agus ní féidir le heagraíocht óstáilte ceann a chur leis. Casann riarthóirí gach eisínteacht air nó as dá n-eagraíocht ag /admin/extensions (féach treoir an riarthóra).
Chun eisínteacht a scríobh, tosaigh leis an mbloc samplach agus an téama samplach in packages/integration/extensions/src/sample.ts. Roghnaigh an pointe eisínteachta agus léigh a chonradh in points.ts; dearbhaigh an eisínteacht ansin le haitheantas, leagan, ceadúnas, a bhfuil ar fáil agus a bhfuil de dhíth uirthi, agus an féidir le heagraíocht í a mhúchadh. Cláraigh í san áit a gcuirtear an feidhmchlár gréasáin agus an worker le chéile, ionas go n-aontaíonn siad. Seiceálann an chlárlann rialacha gach pointe nuair a thógtar í agus gach uair a ghlaonn tú register; diúltaíonn sí do thacar neamhbhailí agus luann sí gach fadhb, gan an chlárlann a athrú. Ba cheart do thástálacha na heisínteachta a dhearbhú go bhfuil extensionContractProblems folamh di agus go n-athraíonn múchadh na heisínteachta an méid a mbíonn tionchar aici air.