Rydym wedi cyfieithu’r wefan hon yn ofalus gan ddefnyddio adnoddau terminoleg swyddogol, gan gynnwys TermCymru. Efallai na fydd pob cyfieithiad yn berffaith. Os gwelwch gamgymeriad, anfonwch e-bost at welsh@qwtn.co.uk. Byddem yn ddiolchgar iawn.
Datblygwyr
Cysylltwch QWTN â gweddill eich busnes
API REST ar gyfer nodiadau trosglwyddo, swyddi, cleientiaid ac anfonebau; bachau gwe wedi’u llofnodi pan fydd pethau’n newid; dolenni talu ac allforion CSV wedi’u cynnwys.
- RESTJSON dros HTTPS, tudalennu â chyrchwr
- 11Adnoddau, darllen ac ysgrifennu
- 8Mathau o ddigwyddiad bachau gwe
- 3.1Manyleb OpenAPI, wedi’i chynhyrchu o’r cod
Eich cais cyntaf mewn dau funud
- Yn QWTN, ewch i Settings → API access a chreu allwedd (perchennog neu weinyddwr). Copïwch hi: dim ond unwaith y caiff ei dangos.
- Anfonwch hi fel tocyn bearer. Mae pob ymateb yn JSON, a’r diweddaraf sydd gyntaf ym mhob rhestr.
curl https://qwtn.co.uk/api/v1/notes?limit=2 \
-H "Authorization: Bearer $QWTN_API_KEY"{
"object": "list",
"data": [{ "id": "0b15c088-…", "object": "note", "reference": "WTN-202610-F2BFBA", "status": "complete", … }],
"has_more": true,
"next_cursor": "eyJjIjoiMjAyNi0xMC0xMlQxMDo…"
}Dilysu a chwmpasau
Mae allweddi’n edrych fel qwtn_live_XXXXXXXX_…. Dangosir y rhan gyntaf (y rhagddodiad) yn yr ap fel y gallwch wahaniaethu rhwng allweddi. Dim ond hash SHA-256 o’r gweddill rydyn ni’n ei storio. Mae allweddi’n perthyn i’r tîm, gallant ddod i ben, a gellir eu dirymu ar unwaith. Mae ceisiadau ag allwedd sydd ar goll, wedi’i dirymu neu wedi dod i ben yn cael 401, ac mae allwedd heb y cwmpas cywir yn cael 403 insufficient_scope.
| Cwmpas | Yn caniatáu |
|---|---|
| * | Popeth isod |
| notes:read | Darllen nodiadau trosglwyddo gwastraff a PDFs |
| notes:write | Creu a golygu nodiadau trosglwyddo drafft |
| clients:read | Darllen cleientiaid |
| clients:write | Creu, diweddaru a dileu cleientiaid a’u safleoedd casglu |
| sites:read | Darllen safleoedd |
| sites:write | Creu, diweddaru a dileu safleoedd |
| collections:read | Darllen casgliadau |
| collections:write | Creu, aildrefnu a chanslo casgliadau |
| containers:read | Darllen cynwysyddion |
| containers:write | Creu, diweddaru a dileu cynwysyddion |
| invoices:read | Darllen anfonebau |
| quotes:read | Darllen dyfynbrisiau |
| consignments:read | Darllen nodiadau traddodi gwastraff peryglus |
| weighbridge:read | Darllen tocynnau pont bwyso |
| weighbridge:write | Creu tocynnau pont bwyso |
| audit:read | Darllen hanes newidiadau (trywydd archwilio) |
Mae cwmpas :write yn cynnwys :read ar gyfer yr un cofnodion. Mae GET /api/v1/me yn dweud wrthych pa dîm a pha gwmpasau sydd gan allwedd.
Ceisiadau a gwallau
Anfonwch gyrff JSON gyda Content-Type: application/json. Caiff meysydd anhysbys eu gwrthod, fel na fydd camgymeriadau teipio’n mynd heb eu sylwi. Mae dyddiadau ar y ffurf YYYY-MM-DD, stampiau amser yn ISO 8601 UTC, ac arian mewn punnoedd fel rhifau. Mae gan bob ymateb X-Request-Id. Dyfynnwch ef os byddwch yn cysylltu â ni.
Mae gan wallau’r un ffurf bob amser. Defnyddiwch code i ganghennu, nid y neges:
HTTP/1.1 422 Unprocessable Entity
{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "The request body has invalid fields",
"request_id": "req_8b0153f6deef40de9fb0",
"details": [{ "field": "ewc_codes", "message": "Required" }]
}
}Codau: unauthenticated, invalid_api_key, insufficient_scope, not_found, validation_failed, invalid_cursor, rate_limited, idempotency_conflict, idempotency_in_progress, internal_error.
Tudalennu
Mae rhestri’n dychwelyd hyd at limit o eitemau (rhwng 1 a 100, 25 yn ddiofyn), y diweddaraf yn gyntaf. Pan fydd has_more yn true, pasiwch next_cursor yn ôl fel cursor. Mae cyrchwyr yn sefydlog wrth i gofnodion newydd gyrraedd, felly fyddwch chi byth yn hepgor nac yn ailadrodd rhes. I gysoni nodiadau fesul cam, defnyddiwch updated_after.
let cursor = null
do {
const url = new URL('https://qwtn.co.uk/api/v1/collections')
url.searchParams.set('status', 'completed')
if (cursor) url.searchParams.set('cursor', cursor)
const page = await fetch(url, { headers: { Authorization: `Bearer ${process.env.QWTN_API_KEY}` } }).then((r) => r.json())
for (const job of page.data) handle(job)
cursor = page.next_cursor
} while (cursor)Idempoteniaeth
Anfonwch bennyn Idempotency-Key (unrhyw linyn unigryw, e.e. UUID) ar bob POST a PATCH. Os bydd y rhwydwaith yn methu a’ch bod yn ailgeisio gyda’r un allwedd o fewn 24 awr, cewch yr ymateb gwreiddiol yn ôl gyda Idempotent-Replayed: true yn hytrach na nodyn neu docyn dyblyg. Mae ailddefnyddio allwedd gyda chorff gwahanol yn dychwelyd 422 idempotency_conflict.
curl -X POST https://qwtn.co.uk/api/v1/notes \
-H "Authorization: Bearer $QWTN_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6c0f2a1e-job-8812" \
-d '{
"waste_description": "Mixed construction and demolition waste",
"ewc_codes": ["17 09 04"],
"client_id": "e913a8a6-ffe2-47c4-9686-f25938ae9154",
"weight_kg": 1200,
"transfer_date": "2026-10-14"
}'Creu swmp
Mae pob pwynt terfyn creu POST hefyd yn derbyn { "data": [ … ] } gyda hyd at 100 o gofnodion. Caiff pob eitem ei dilysu a’i chreu ar wahân, felly dydy un rhes wael ddim yn atal y gweddill. Yr ymateb yw 200 gyda chanlyniad ar gyfer pob eitem, yn eu trefn.
curl -X POST https://qwtn.co.uk/api/v1/client-locations \
-H "Authorization: Bearer qwtn_live_…" -H "Content-Type: application/json" \
-d '{ "data": [
{ "client_id": "…", "label": "Unit 4, Riverside", "postcode": "BS1 4DJ" },
{ "client_id": "…", "label": "Head office", "postcode": "M1 1AE", "is_default": true }
] }'
{ "object": "list", "created": 2, "failed": 0,
"data": [ { "index": 0, "status": 201, "data": { "id": "…", "object": "client_location", … } },
{ "index": 1, "status": 201, "data": { … } } ] }Anfonwch Idempotency-Key gyda cheisiadau swmp fel na fydd ailgeisio ar ôl terfyn amser byth yn creu dyblygiadau.
Cyfyngiadau cyfradd
120 cais y funud ar gyfer pob allwedd. Dros y terfyn, cewch 429 rate_limited gyda phennyn Retry-After mewn eiliadau. Arafwch ac ailgeisiwch. Dylai swyddi swmp dudalennu drwy restrau yn hytrach na nôl cofnodion fesul un.
Pwyntiau terfyn
URL sylfaenol https://qwtn.co.uk. Mae’r manylion llawn ar lefel maes yn y ddogfen OpenAPI 3.1 (mewnforiwch hi i Postman, Insomnia neu gynhyrchydd cod).
Nodiadau trosglwyddo gwastraff
notes:read- GET
/api/v1/notes - GET
/api/v1/notes/{id} - POST
/api/v1/notes - PATCH
/api/v1/notes/{id} - GET
/api/v1/notes/{id}/pdf
Hidlyddion: statusclient_idupdated_aftercreated_aftercreated_before
Cleientiaid
clients:read- GET
/api/v1/clients - GET
/api/v1/clients/{id} - POST
/api/v1/clients - PATCH
/api/v1/clients/{id} - DELETE
/api/v1/clients/{id}
Hidlyddion: emailpostcodecreated_aftercreated_before
Safleoedd casglu cleientiaid
clients:read- GET
/api/v1/client-locations - GET
/api/v1/client-locations/{id} - POST
/api/v1/client-locations - PATCH
/api/v1/client-locations/{id} - DELETE
/api/v1/client-locations/{id}
Hidlyddion: client_idpostcodecreated_aftercreated_before
Safleoedd
sites:read- GET
/api/v1/sites - GET
/api/v1/sites/{id} - POST
/api/v1/sites - PATCH
/api/v1/sites/{id} - DELETE
/api/v1/sites/{id}
Hidlyddion: site_typecreated_aftercreated_before
Casgliadau
collections:read- GET
/api/v1/collections - GET
/api/v1/collections/{id} - POST
/api/v1/collections - PATCH
/api/v1/collections/{id}
Hidlyddion: statusclient_idscheduled_fromscheduled_tocreated_aftercreated_before
Cynwysyddion
containers:read- GET
/api/v1/containers - GET
/api/v1/containers/{id} - POST
/api/v1/containers - PATCH
/api/v1/containers/{id} - DELETE
/api/v1/containers/{id}
Hidlyddion: statusclient_idcreated_aftercreated_before
Anfonebau
invoices:read- GET
/api/v1/invoices - GET
/api/v1/invoices/{id}
Hidlyddion: statusclient_idissued_fromcreated_aftercreated_before
Dyfynbrisiau
quotes:read- GET
/api/v1/quotes - GET
/api/v1/quotes/{id}
Hidlyddion: statusclient_idcreated_aftercreated_before
Nodiadau traddodi gwastraff peryglus
consignments:read- GET
/api/v1/consignment-notes - GET
/api/v1/consignment-notes/{id}
Hidlyddion: statusclient_idcreated_aftercreated_before
Trywydd archwilio
audit:read- GET
/api/v1/audit-events - GET
/api/v1/audit-events/{id}
Hidlyddion: entity_typeentity_idclient_idactionsourcecreated_aftercreated_before
Tocynnau pont bwyso
weighbridge:read- GET
/api/v1/weighbridge-tickets - GET
/api/v1/weighbridge-tickets/{id} - POST
/api/v1/weighbridge-tickets
Hidlyddion: ticket_fromvehicle_regcreated_aftercreated_before
Popeth arall: yr API ap
Gallwch wneud popeth y gallwch ei wneud yn ap QWTN drwy’r API. Mae /api/v1/app/{path} yn cyrraedd pob pwynt terfyn yn yr ap (197 heddiw, o gyhoeddi a llofnodi nodiadau trosglwyddo i wiriadau fflyd, RAMS, Tracio Gwastraff yn Ddigidol, anfonebu a gosodiadau tîm) gyda’r un dilysu a’r un sgil-effeithiau â’r ap.
- Mae angen allwedd mynediad llawn (y cwmpas
*). Mae ceisiadau’n rhedeg fel y person a greodd yr allwedd, gyda’i rôl a’i ganiatâd yn union, ac fe’u cofnodir yn y log archwilio yn ei enw ef neu hi. - Yr un pennyn dilysu, yr un terfyn cyfradd, yr un cymorth
Idempotency-Keya’r un amlen gwallau â gweddill yr API. Mae[id]mewn llwybr yn unrhyw ID cofnod. - Mae cyrff yr ymatebion yn JSON yr ap ei hun. Maen nhw’n sefydlog yn ymarferol, ond dydyn nhw ddim wedi’u fersiynu fel y pwyntiau terfyn teipiedig uchod, felly dewiswch bwynt terfyn teipiedig lle mae un ar gael.
- Mae
GET /api/v1/appyn dychwelyd y rhestr fyw o lwybrau a dulliau. - Gallwch ddarllen a gweithredu ar y bwrdd byw drwy’r API. Mae
GET /api/v1/app/ops/board?date=YYYY-MM-DDyn dychwelyd swyddi a gyrwyr diwrnod. Ychwanegwch&since=gydag amser ISO i gael dim ond yr hyn sydd wedi newid, a&derive=1i gael cyflwr ac amseriad pob swydd. MaePOST /api/v1/app/ops/board/assign,/problema/messageyn gweithredu â chaniatâd perchennog yr allwedd, felly mae’r un gwiriadau cydymffurfio a’r un hysbysiadau i yrwyr yn berthnasol ag yn yr ap. - Mae anfon swmp yn rhedeg fel swyddi cefndir. Mae
POST /api/v1/app/invoices/bulk-remindersaPOST /api/v1/app/notes/bulk-signature-requestsyn ateb â202a ID swydd. HolwchGET /api/v1/app/jobs/{id}am y statws a’r cynnydd, ac anfonwch"dryRun": truei gyfrif yr hyn a fyddai’n cael ei anfon heb ei anfon. GalwadauPOSTar yr un swydd yw canslo ac ailgeisio, ac mae gan swydd ffeil sydd wedi gorffen lwybr/downloadsy’n ailgyfeirio at ddolen fyrhoedlog.
# Add a collection site to a client (geocoded from the postcode, like in the app)
curl -X POST https://qwtn.co.uk/api/v1/app/clients/CLIENT_ID/locations \
-H "Authorization: Bearer qwtn_live_…" -H "Content-Type: application/json" \
-d '{ "label": "Unit 4, Riverside", "postcode": "BS1 4DJ", "contact_name": "Sam Lee" }'
# Send a draft note for e-signature
curl -X POST https://qwtn.co.uk/api/v1/app/notes/NOTE_ID/request-signature \
-H "Authorization: Bearer qwtn_live_…" -H "Content-Type: application/json" -d '{ "party": "transferor", "recipientEmail": "site@client.co.uk", "recipientName": "Sam Lee" }'Cleientiaid a CRM14
- GETPOST
/v1/app/clients - PUTDELETE
/v1/app/clients/[id] - GETPOST
/v1/app/clients/[id]/activities - PATCHDELETE
/v1/app/clients/[id]/activities/[itemId] - GET
/v1/app/clients/[id]/analytics - GETPOST
/v1/app/clients/[id]/contacts - PATCHDELETE
/v1/app/clients/[id]/contacts/[itemId] - GETPOST
/v1/app/clients/[id]/contracts - PATCH
/v1/app/clients/[id]/crm - GETPOST
/v1/app/clients/[id]/locations - PUTDELETE
/v1/app/clients/[id]/locations/[locationId] - GETPOST
/v1/app/clients/[id]/tasks - PATCHDELETE
/v1/app/clients/[id]/tasks/[itemId] - GET
/v1/app/clients/tasks
Casgliadau4
- GETPOST
/v1/app/collections - GETDELETEPATCH
/v1/app/collections/[id] - GETDELETEPOST
/v1/app/collections/[id]/photos - POST
/v1/app/collections/[id]/request-site-signature
Nodiadau traddodi gwastraff peryglus5
- GETPOST
/v1/app/consignments - GETPATCHDELETE
/v1/app/consignments/[id] - POST
/v1/app/consignments/[id]/sign - GETPOST
/v1/app/consignments/returns - POST
/v1/app/consignments/round
Cynwysyddion3
- GETPOST
/v1/app/containers - GETPUTDELETE
/v1/app/containers/[id] - GETPOST
/v1/app/containers/[id]/history
Nodiadau credyd1
- GET
/v1/app/credit-notes/[id]
Depos3
- GETPOST
/v1/app/depots - PATCH
/v1/app/depots/[id] - GETPATCH
/v1/app/depots/members
Tracio Gwastraff yn Ddigidol6
- GETPOST
/v1/app/dwt/pat - GETPOST
/v1/app/dwt/receipts - GETPATCH
/v1/app/dwt/receipts/[id] - POST
/v1/app/dwt/receipts/[id]/submit - GETPUT
/v1/app/dwt/settings - GET
/v1/app/dwt/summary
Fflyd11
- GETPOST
/v1/app/fleet/expenses - GETPATCHDELETE
/v1/app/fleet/expenses/[id] - GETPOST
/v1/app/fleet/maintenance - GETPATCH
/v1/app/fleet/maintenance/[id] - GETPOSTPATCH
/v1/app/fleet/o-licence - GETPOST
/v1/app/fleet/vehicles - GETPATCHDELETE
/v1/app/fleet/vehicles/[id] - GETPOST
/v1/app/fleet/walkarounds - GETPATCH
/v1/app/fleet/walkarounds/[id] - GETPOST
/v1/app/fleet/weighbridge - GETPATCHDELETE
/v1/app/fleet/weighbridge/[id]
Iechyd a diogelwch8
- GETPOST
/v1/app/hs/accidents - GETPUT
/v1/app/hs/accidents/[id] - GET
/v1/app/hs/analytics - GETPOST
/v1/app/hs/near-miss - GETPUT
/v1/app/hs/near-miss/[id] - GETPOST
/v1/app/hs/rams - GETPUT
/v1/app/hs/rams/[id] - POST
/v1/app/hs/rams/[id]/sign
Llwythi sy’n dod i mewn2
- GETPOST
/v1/app/incoming-loads - GETPATCHDELETE
/v1/app/incoming-loads/[id]
Anfonebau8
- GETPOST
/v1/app/invoices - GETPUTPATCHDELETE
/v1/app/invoices/[id] - GETPOST
/v1/app/invoices/[id]/credit-notes - GETPOST
/v1/app/invoices/[id]/payments - DELETE
/v1/app/invoices/[id]/payments/[paymentId] - POST
/v1/app/invoices/[id]/send - POST
/v1/app/invoices/bulk-reminders - POST
/v1/app/invoices/reminders
Swyddi cefndir5
- GET
/v1/app/jobs - GETPATCH
/v1/app/jobs/[id] - POST
/v1/app/jobs/[id]/cancel - GET
/v1/app/jobs/[id]/download - POST
/v1/app/jobs/[id]/retry
Nodiadau trosglwyddo13
- GETPOST
/v1/app/notes - PUTDELETE
/v1/app/notes/[id] - POST
/v1/app/notes/[id]/amend - GET
/v1/app/notes/[id]/chain - POST
/v1/app/notes/[id]/request-signature - GETPOST
/v1/app/notes/[id]/schedule - POST
/v1/app/notes/[id]/share-email - GETPOST
/v1/app/notes/[id]/share-link - GETPOST
/v1/app/notes/[id]/sign - POST
/v1/app/notes/bulk-signature-requests - GET
/v1/app/notes/chain - GET
/v1/app/notes/export - GET
/v1/app/notes/held-waste
Hysbysiadau4
- GET
/v1/app/notifications - POST
/v1/app/notifications/archive - GETPUT
/v1/app/notifications/preferences - POST
/v1/app/notifications/read
Bwrdd byw4
- GET
/v1/app/ops/board - POST
/v1/app/ops/board/assign - POST
/v1/app/ops/board/message - POST
/v1/app/ops/board/problem
Trwyddedau2
- GETPOST
/v1/app/permits - GETPUTDELETE
/v1/app/permits/[id]
Platfform18
- GET
/v1/app/platform/export - GETPOST
/v1/app/platform/import/batches - GETPATCH
/v1/app/platform/import/batches/[id] - POST
/v1/app/platform/import/batches/[id]/chunk - GETPOST
/v1/app/platform/import/batches/[id]/undo - POST
/v1/app/platform/import/commit - GET
/v1/app/platform/import/lookup - GETPOSTDELETE
/v1/app/platform/import/mappings - POST
/v1/app/platform/import/preview - GET
/v1/app/platform/integrations - PUTDELETE
/v1/app/platform/integrations/[provider] - POSTGET
/v1/app/platform/invoices/[id]/payment-link - GETPOST
/v1/app/platform/webhooks - PATCHDELETE
/v1/app/platform/webhooks/[id] - POST
/v1/app/platform/webhooks/[id]/rotate - POST
/v1/app/platform/webhooks/[id]/test - GET
/v1/app/platform/webhooks/deliveries - POST
/v1/app/platform/webhooks/deliveries/[id]/replay
Hyb cynhyrchwyr13
- GETPATCH
/v1/app/producer - POST
/v1/app/producer/audit - POSTGETDELETE
/v1/app/producer/audit/evidence - POST
/v1/app/producer/contractors - PATCHDELETE
/v1/app/producer/contractors/[id] - GET
/v1/app/producer/contractors/[id]/checks - POST
/v1/app/producer/contractors/[id]/verify - POST
/v1/app/producer/documents - GETPATCHDELETE
/v1/app/producer/documents/[id] - POST
/v1/app/producer/documents/[id]/extract - GETPOSTPATCH
/v1/app/producer/links - POST
/v1/app/producer/sites - PATCHDELETE
/v1/app/producer/sites/[id]
Proffil2
- GETPUT
/v1/app/profile - POST
/v1/app/profile/ea
Dyfynbrisiau3
- GETPOST
/v1/app/quotes - GETPUTDELETE
/v1/app/quotes/[id] - POST
/v1/app/quotes/[id]/send
Amserlenni rheolaidd2
- GETPOST
/v1/app/recurring-schedules - GETPUTDELETE
/v1/app/recurring-schedules/[id]
Adroddiadau4
- GET
/v1/app/reports/annual-return - GET
/v1/app/reports/dwt-export - GET
/v1/app/reports/esg - GET
/v1/app/reports/waste-summary
Rolau2
- GETPOST
/v1/app/roles - PATCHDELETE
/v1/app/roles/[id]
Llwybro4
- POST
/v1/app/routing/optimise - POST
/v1/app/routing/optimise/apply - GETPOST
/v1/app/routing/plan - POST
/v1/app/routing/publish
Tocynnau tymor3
- GET
/v1/app/season-tickets - POST
/v1/app/season-tickets/[id]/renew - GETPOSTDELETE
/v1/app/season-tickets/[id]/transfers
Safleoedd derbyn2
- GETPOST
/v1/app/sites - GETPATCHDELETE
/v1/app/sites/[id]
Tîm7
- GETPOST
/v1/app/team - GETPATCHDELETE
/v1/app/team/[id] - GETPATCH
/v1/app/team/audit-settings - DELETE
/v1/app/team/invites/[id] - GET
/v1/app/team/members - GETPATCH
/v1/app/team/settings - GETPATCH
/v1/app/team/vat-scheme
Telemateg2
- GETPOSTDELETE
/v1/app/telematics - POST
/v1/app/telematics/sync
Templedi2
- GETPOST
/v1/app/templates - PUTDELETE
/v1/app/templates/[id]
Llyfrgell llwythi2
- GETPOST
/v1/app/waste-loads - PUTDELETE
/v1/app/waste-loads/[id]
activity1
- GET
/v1/app/activity
approvals3
- GET
/v1/app/approvals - POSTDELETE
/v1/app/approvals/[id] - GETPUT
/v1/app/approvals/rules
audit1
- POST
/v1/app/audit
audit-events3
- GET
/v1/app/audit-events - GET
/v1/app/audit-events/export - POST
/v1/app/audit-events/purge
audit-log1
- GET
/v1/app/audit-log
billing2
- POST
/v1/app/billing/preview - GETPOST
/v1/app/billing/runs
brand-extract1
- POST
/v1/app/brand-extract
client-error1
- POST
/v1/app/client-error
companies-house1
- GET
/v1/app/companies-house
company-website1
- GET
/v1/app/company-website
compliance1
- POST
/v1/app/compliance/check
contracts1
- PATCHDELETE
/v1/app/contracts/[id]
dashboard1
- GET
/v1/app/dashboard
driver1
- GET
/v1/app/driver/offline-pack
ea2
- GET
/v1/app/ea - GET
/v1/app/ea/check
ea-lookup1
- POST
/v1/app/ea-lookup
esg1
- GET
/v1/app/esg
favourites1
- GET
/v1/app/favourites
geocode1
- POST
/v1/app/geocode
job-photos1
- GET
/v1/app/job-photos
legal-hold1
- GETPATCH
/v1/app/legal-hold
list-export1
- GETPOST
/v1/app/list-export/[list]
notify1
- GETPOST
/v1/app/notify/collection
portal-requests3
- GET
/v1/app/portal-requests - PATCH
/v1/app/portal-requests/[id] - GET
/v1/app/portal-requests/[id]/photos
price-lists2
- GETPOST
/v1/app/price-lists - PATCHDELETE
/v1/app/price-lists/[id]
search1
- GET
/v1/app/search
signing-tokens1
- GETPOST
/v1/app/signing-tokens
storage1
- POST
/v1/app/storage/logo-upload-url
waste-sites1
- GET
/v1/app/waste-sites
Bachau gwe
Ychwanegwch bwyntiau terfyn HTTPS yn Settings → Webhooks a dewiswch y digwyddiadau i’w derbyn. Mae pob digwyddiad yn POST JSON lle mae data.object yn gofnod yn union fel y mae’r API REST yn ei ddychwelyd.
| Digwyddiad | Anfonir pan |
|---|---|
| note.signed | Cafodd llofnod trosglwyddwr neu drosglwyddai ei gofnodi ar nodyn trosglwyddo gwastraff. |
| note.completed | Daeth nodyn trosglwyddo yn gyflawn (neu daeth tocyn tymor yn ddilys). |
| collection.completed | Marciodd gyrrwr neu ddefnyddiwr swyddfa fod casgliad wedi’i gwblhau. |
| invoice.sent | Anfonwyd anfoneb at y cwsmer am y tro cyntaf. |
| invoice.paid | Marciwyd anfoneb fel un a dalwyd (â llaw neu drwy ddolen dalu). |
| quote.accepted | Derbyniodd cwsmer ddyfynbris. |
| consignment.issued | Cyhoeddwyd nodyn traddodi gwastraff peryglus. |
| compliance.expiring | Mae MOT/treth/yswiriant cerbyd, trwydded safle neu drwydded yrru/CPC gyrrwr o fewn 30 diwrnod i ddod i ben (anfonir ar 30, 7 a 0 diwrnod). |
POST /your/endpoint
QWTN-Signature: t=1760262000,v1=5f2b…c9
QWTN-Event-Id: evt_6a1f…
QWTN-Event-Type: invoice.paid
{ "id": "evt_6a1f…", "object": "event", "type": "invoice.paid", "api_version": "2026-10-01",
"created_at": "2026-10-12T09:40:00Z", "data": { "object": { "id": "…", "object": "invoice", "status": "paid", … } } }Gwirio’r llofnod
Cyfrifwch HMAC-SHA256 o `${t}.${rawBody}` gyda chyfrinach eich pwynt terfyn a’i gymharu, mewn amser cyson, ag unrhyw werth v1. Gwrthodwch stampiau amser sy’n hŷn na phum munud. Yn ystod newid cyfrinach, mae’r pennyn yn cynnwys dau werth v1 am 24 awr.
import crypto from 'node:crypto'
app.post('/webhooks/qwtn', express.raw({ type: 'application/json' }), (req, res) => {
const header = req.get('QWTN-Signature') ?? ''
const t = Number(/t=(\d+)/.exec(header)?.[1])
const expected = crypto.createHmac('sha256', process.env.QWTN_WEBHOOK_SECRET)
.update(`${t}.${req.body}`).digest('hex')
const ok = Math.abs(Date.now() / 1000 - t) < 300 &&
[...header.matchAll(/v1=([0-9a-f]{64})/g)].some(([, sig]) =>
crypto.timingSafeEqual(Buffer.from(sig, 'hex'), Buffer.from(expected, 'hex')))
if (!ok) return res.status(400).end()
const event = JSON.parse(req.body)
// dedupe on event.id, then queue your work and reply fast
res.sendStatus(204)
})Anfon ac ailgeisio
- Atebwch ag unrhyw 2xx o fewn 10 eiliad. Gwnewch waith araf ar ôl ateb.
- Caiff unrhyw ymateb arall ei ailgeisio ar ôl 1m, 5m, 30m, 2h, 6h, 12h, 24h, 24h (gyda jitter), yna ei farcio fel un a fethodd. Mae ailgeisio’n digwydd o leiaf unwaith: anwybyddwch ddyblygiadau yn ôl
id. - Mae ateb
410 Goneyn analluogi’r pwynt terfyn. Mae 15 digwyddiad yn olynol sy’n defnyddio eu holl ailgeisiadau yn ei analluogi hefyd. - Mae’r log danfon yn Settings yn dangos pob ymgais, llwyth ac ymateb, ac yn gadael i chi ailchwarae unrhyw ddigwyddiad neu anfon
pingprawf. - Does dim trefn warantedig. Defnyddiwch
created_ata nôl y cofnod o’r API os oes angen y cyflwr diweddaraf arnoch.
Integreiddiadau adeiledig
- Stripe a GoCardless: dolenni talu nawr ar anfonebau sy’n setlo i’ch cyfrif eich hun. Caiff anfonebau eu marcio’n rhai a dalwyd yn awtomatig.
- Mewnforio CSV ac allforio llawn: cleientiaid, safleoedd cleientiaid, cynwysyddion a cherbydau i mewn, a phob math o gofnod allan fel ZIP o ffeiliau CSV.
Fersiynau a chymorth
Dyma fersiwn 2026-10-01 yr API (a anfonir fel pennyn ymateb QWTN-Version). Rydyn ni’n ychwanegu meysydd a phwyntiau terfyn heb rybudd, felly anwybyddwch feysydd nad ydych yn eu hadnabod. Mae newidiadau sy’n torri pethau yn cael fersiwn newydd ac o leiaf chwe mis o rybudd drwy e-bost i berchnogion cyfrifon. Cwestiynau: support@qwtn.co.uk.
Yn barod i gysylltu eich systemau?
Crëwch allwedd yn Settings → API access, neu crëwch gyfrif yn gyntaf.
Does dim angen cerdyn i ddechrau.