Siirry dokumentaation sisältöön
HintadataDocs

Webhookit

Toimita valmistuneet työt ja muutokset omiin järjestelmiisi.

Tässä oppaassa
  1. 1Valitse seuraava tehtävä
  2. 2Rekisteröi vastaanottaja
  3. 3Luo webhook-vahti
  4. 4Hallitse tilausta
  5. 5Lähetä testi ja varmista toimitus
  6. 6Uusi epäonnistunut toimitus turvallisesti
  7. 7Tarkista ennen käsittelyä
  8. 8Selvitä puuttuva toimitus
  9. 9Kuittaa ja ratkaise häiriö
  10. 10Keskeytä tai poista tilaus
  11. 11Valmistele, aktivoi ja poista vanha salaisuus
Tässä oppaassa
  1. 1Valitse seuraava tehtävä
  2. 2Rekisteröi vastaanottaja
  3. 3Luo webhook-vahti
  4. 4Hallitse tilausta
  5. 5Lähetä testi ja varmista toimitus
  6. 6Uusi epäonnistunut toimitus turvallisesti
  7. 7Tarkista ennen käsittelyä
  8. 8Selvitä puuttuva toimitus
  9. 9Kuittaa ja ratkaise häiriö
  10. 10Keskeytä tai poista tilaus
  11. 11Valmistele, aktivoi ja poista vanha salaisuus

Valitse seuraava tehtävä

Rakenna ja varmenna ensin vastaanotin, rekisteröi sitten sen julkinen HTTPS-osoite, luo vahti ja varmista testin toimitus. Rekisteröinti, jonotus ja toimitus ovat eri lopputuloksia. Käytä alla olevia palautumis- ja vaihto-ohjeita olemassa olevan tilauksen ylläpitoon.

Rekisteröi vastaanottaja

Käytä tuotantoavainta, jolla on webhooks:write-oikeus ja tilauksen webhooks:manage-käyttöoikeus. Vain julkiset HTTPS-osoitteet portissa 443 hyväksytään. Tallenna vastauksen salaisuus turvallisesti: listaus ei paljasta sitä. Testiavainten tilaukset ovat erillisiä eivätkä lähetä verkkotoimituksia.

bashillustrative
Esimerkin luotettavuus: illustrativeNäyttää muodon tai idean; älä käytä sellaisenaan tuotannossa.
curl --fail-with-body https://hintadata.fi/v1/webhooks \
  -H "Authorization: Bearer $HINTADATA_API_KEY" \
  -H 'Content-Type: application/json' -H 'Idempotency-Key: endpoint-create-001' \
  -d '{"url":"https://receiver.example/events","events":["watchlist.triggered"]}'

Luo webhook-vahti

Luo vahti channel=webhook-arvolla ilman sähköpostiosoitetta. Uusi lähdeaineisto, jossa aktiivinen vahti siirtyy tavoitehinnan alle, jonottaa watchlist.triggered-tapahtuman työtilan kaikille aktiivisille vastaaville tilauksille. Rekisteröinti ei toimita vanhoja tapahtumia. Sähköpostivahdit käyttävät edelleen erillistä operaattorin sähköpostisiltaa.

jsonillustrative
Esimerkin luotettavuus: illustrativeNäyttää muodon tai idean; älä käytä sellaisenaan tuotannossa.
{"canonical_product_id":"sony_wh1000xm5_black","condition":"target_price","target_price":250,"channel":"webhook"}

Lähetä runko POST-pyynnöllä osoitteeseen /v1/watchlists käyttäen watchlists:write-oikeutta ja uutta Idempotency-Key-avainta. Tuotannon lähdeaineiston on oltava jo saatavilla. delivery_unavailable tarkoittaa, ettei operaattori ole määrittänyt toimituskanavaa.

Hallitse tilausta

Dashboard käyttää samoja tilauksia kuin API. Muokkaa HTTPS-kohdetta ja tapahtumasuodatuksia, keskeytä/jatka, vaihda allekirjoitussalaisuus ja tarkastele sivutettua historiaa, mittareita ja auditointia. GET /v1/webhook-metrics koostaa säilytetyt toimitukset; GET /v1/webhook-audit palauttaa 100 uusinta hallintatapahtumaa (enintään 1 000 säilyy 30 päivää). Toimijat ovat yksisuuntaisia tunnisteita, eivät tunnuksia. last_error_code erottaa HTTP-, DNS-, TLS-, aikakatkaisu-, siirto-, salaus- ja lähteen voimassaolovirheet paljastamatta vastausrunkoja.

Lähetä testi ja varmista toimitus

POST /v1/webhooks/{id}/test rungolla {"confirm":true} ja Idempotency-Key-avaimella jonottaa nimenomaisesti live-webhook.test-tapahtuman, jossa on vain {"test":true}. Se ei sisällä asiakasdataa; aktiiviseen päätepisteeseen voi jonottaa yhden testin minuutissa. Työntekijä lähettää myöhemmin; jonotusvastaus ei todista toimitusta. Testiympäristön API-avaimet eivät koskaan lähetä. Tarkista ja deduplikoi testit kuten muut tapahtumat, mutta älä tee liiketoimintamuutoksia.

Lue GET /v1/webhook-deliveries?subscription_id={id}&limit=25, jatka tarvittaessa next_offset-arvosta ja etsi palautettu toimitustunniste. Onnistuminen edellyttää delivered-tilaa ja vastaanottajan kirjausta; pending tai sending ei ole valmis. Jos tila on failed, noudata alla olevaa toimituksen vianmääritystä ennen uusintapyyntöä.

Uusi epäonnistunut toimitus turvallisesti

POST /v1/webhook-deliveries/{id}/retry uudella Idempotency-Key-avaimella pyytää epäonnistuneen toimituksen auditoitua uusintaa. Lähdeaineiston on oltava edelleen voimassa, päätepisteen aktiivinen ja osoitteen/suodatusten ennallaan. Alkuperäiset tapahtuma- ja toimitustunnisteet säilyvät. Enintään kolme manuaalista uusintaa seitsemässä päivässä, kahdeksan yritystä kierroksessa (yhteensä 32). Peruttuja tai vanhentuneita havaintoja ei voi elvyttää. Toista epävarma pyyntö samalla avaimella; älä poista vastaanottajan duplikaattisuojausta.

Tarkista ennen käsittelyä

Tarkista X-Webhook-Signature täsmälleen vastaanotetusta rungosta: t=<sekunnit>,v1=<hex HMAC-SHA256(salaisuus, aikaleima + "." + runko)>. Hylkää yli viiden minuutin aikaero. Estä tämän jälkeen duplikaatit tapahtuman event.id- / Idempotency-Key-tunnisteella samassa transaktiossa oman muutoksesi kanssa. Toimitus voi toistua eikä järjestystä taata. Älä tarkista allekirjoitusta uudelleen sarjoitetusta JSONista.

typescriptillustrative
Esimerkin luotettavuus: illustrativeNäyttää muodon tai idean; älä käytä sellaisenaan tuotannossa.
import { verifyWebhook } from '@pricecompare/sdk';
const event = await verifyWebhook(rawBody, signatureHeader, signingSecret);
// Persist event.id and your business effect atomically before returning 2xx.
pythonillustrative
Esimerkin luotettavuus: illustrativeNäyttää muodon tai idean; älä käytä sellaisenaan tuotannossa.
from price_compare.webhooks import verify_webhook
event = verify_webhook(raw_body_bytes, signature_header, signing_secret)
# Persist event["id"] and your business effect atomically before returning 2xx.

Selvitä puuttuva toimitus

HavaintoSeuraava tarkistus
Toimitusrivi puuttuuTarkista työtila, ympäristö, tilauksen tapahtumasuodatin ja tapahtuman käynnistävä lähdepäivitys. Rekisteröinti ei tuo vanhoja tapahtumia.
pending / sendingTarkista seuraava yritys ja työntekijän tila. Älä pyydä uutta tapahtumaa vain siksi, ettei toimitus ole välitön.
failedLue last_error_code ja attempt_history. Korjaa DNS/TLS, vastaanotin tai allekirjoitusasetukset ennen uusintapyyntöä.
deliveredVastaanottaja palautti 2xx-vastauksen. Tarkista vastaanottajan transaktio ja tapahtumatunniste, älä vain HTTP-lokia.
cancelledTarkista tilauksen muutokset ja lähteen vanheneminen. Peruttua havaintoa ei voi elvyttää.

GET /v1/webhook-deliveries?limit=25 palauttaa toimitukset tiloissa pending, sending, delivered, failed tai cancelled. Rajaa subscription_id-arvolla ja jatka next_offset-arvosta. attempt_history näyttää yrityksen alku- ja loppuajan, keston, turvallisen virhekoodin, HTTP-tilan ja seuraavan yrityksen ilman runkoja tai salaisuuksia. Mikä tahansa 2xx kuittaa. HTTP 4xx on pysyvä virhe lukuun ottamatta koodeja 408, 409, 425 ja 429; myös estetty kohde on pysyvä virhe. Muita virheitä yritetään enintään kahdeksan kertaa kierroksessa satunnaistetulla kasvavalla viiveellä ja enintään tunnin Retry-After-ajalla. Kolme peräkkäistä tilapäisvirhettä keskeyttää vastaanottajan viideksi minuutiksi, pysyvä virhe 15 minuutiksi. Jäähyn jälkeen sallitaan yksi koeyritys. Työntekijän ajastus voi pidentää viivettä. Historia säilyy seitsemän päivää.

Kuittaa ja ratkaise häiriö

Vastaanottajan häiriöt ovat erillisiä toimitushistoriasta. POST /v1/webhooks/{id}/incidents/acknowledge rungolla {"incident_id":"wi_..."} ja uudella Idempotency-Key-avaimella lopettaa muistutukset piilottamatta ratkaisematonta häiriötä tai peruuttamatta uusintayrityksiä. Korjaa vastaanottaja ja lähetä testi tai uusi voimassa oleva epäonnistunut toimitus. Onnistunut toimitus ratkaisee häiriön ja käynnistää palautumisilmoituksen; vanhat virheet jäävät näkyviin. Kuittaus ei yksin tarkoita palautumista.

Keskeytä tai poista tilaus

PATCH /v1/webhooks/{id} rungolla {"enabled":false} keskeyttää; DELETE poistaa. Kohteen tai suodattimen muutos peruu jonossa olevat toimitukset. Osoitteen vaihto tai nimenomainen jatkaminen nollaa jäähyn. Lähteen version muutos tai vanheneminen peruu lähettämättömät havainnot; jo matkalla olevaa pyyntöä ei voi perua.

Valmistele, aktivoi ja poista vanha salaisuus

POST /v1/webhooks/{id}/secret-rotation uudella Idempotency-Key-avaimella valmistelee salaisuuden 24 tunniksi muuttamatta allekirjoitusta. Asenna se vastaanottajalle nykyisen rinnalle. Kutsu sitten POST /v1/webhooks/{id}/secret-rotation/activate rungolla {"rotation_id":"wr_...","confirm":true} ja eri Idempotency-Key-avaimella. Allekirjoitus vaihtuu atomisesti. Hyväksy vanha salaisuus vähintään 60 sekuntia jo matkalla olevia pyyntöjä varten ja poista se sitten vastaanottajalta. Valmistelun voi perua kutsulla POST /v1/webhooks/{id}/secret-rotation/cancel ja rungolla {"rotation_id":"wr_..."}. Luonti ja valmistelu palauttavat alkuperäisen salaisuusvastauksen uusinnassa 24 tuntia; listaus, aktivointi ja peruminen eivät paljasta salaisuuksia. API-sopimus 2.0.0 poistaa vanhan välittömän vaihtotoiminnon.

Oliko tästä sivusta apua?