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

  1. Yn QWTN, ewch i Settings → API access a chreu allwedd (perchennog neu weinyddwr). Copïwch hi: dim ond unwaith y caiff ei dangos.
  2. 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.

CwmpasYn caniatáu
*Popeth isod
notes:readDarllen nodiadau trosglwyddo gwastraff a PDFs
notes:writeCreu a golygu nodiadau trosglwyddo drafft
clients:readDarllen cleientiaid
clients:writeCreu, diweddaru a dileu cleientiaid a’u safleoedd casglu
sites:readDarllen safleoedd
sites:writeCreu, diweddaru a dileu safleoedd
collections:readDarllen casgliadau
collections:writeCreu, aildrefnu a chanslo casgliadau
containers:readDarllen cynwysyddion
containers:writeCreu, diweddaru a dileu cynwysyddion
invoices:readDarllen anfonebau
quotes:readDarllen dyfynbrisiau
consignments:readDarllen nodiadau traddodi gwastraff peryglus
weighbridge:readDarllen tocynnau pont bwyso
weighbridge:writeCreu tocynnau pont bwyso
audit:readDarllen 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-Key a’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/app yn 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-DD yn dychwelyd swyddi a gyrwyr diwrnod. Ychwanegwch &since= gydag amser ISO i gael dim ond yr hyn sydd wedi newid, a &derive=1 i gael cyflwr ac amseriad pob swydd. Mae POST /api/v1/app/ops/board/assign, /problem a /message yn 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-reminders a POST /api/v1/app/notes/bulk-signature-requests yn ateb â 202 a ID swydd. Holwch GET /api/v1/app/jobs/{id} am y statws a’r cynnydd, ac anfonwch "dryRun": true i gyfrif yr hyn a fyddai’n cael ei anfon heb ei anfon. Galwadau POST ar yr un swydd yw canslo ac ailgeisio, ac mae gan swydd ffeil sydd wedi gorffen lwybr /download sy’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.

DigwyddiadAnfonir pan
note.signedCafodd llofnod trosglwyddwr neu drosglwyddai ei gofnodi ar nodyn trosglwyddo gwastraff.
note.completedDaeth nodyn trosglwyddo yn gyflawn (neu daeth tocyn tymor yn ddilys).
collection.completedMarciodd gyrrwr neu ddefnyddiwr swyddfa fod casgliad wedi’i gwblhau.
invoice.sentAnfonwyd anfoneb at y cwsmer am y tro cyntaf.
invoice.paidMarciwyd anfoneb fel un a dalwyd (â llaw neu drwy ddolen dalu).
quote.acceptedDerbyniodd cwsmer ddyfynbris.
consignment.issuedCyhoeddwyd nodyn traddodi gwastraff peryglus.
compliance.expiringMae 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 Gone yn 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 ping prawf.
  • Does dim trefn warantedig. Defnyddiwch created_at a 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.