Ga naar inhoud

Callbacks

Een callback is een uitgaande melding per verzoek die je aan een bestelling koppelt, zodat SuperSpace naar je URL POSTt op het moment dat het asynchrone werk van de bestelling klaar is — in plaats van dat jij de taak pollt. Je geeft de callback op wanneer je de bestelling plaatst; SuperSpace vuurt hem af zodra de taak van die bestelling een eindstatus bereikt (OK of FAILED).

Callback vs. billing-webhook

Een callback is per verzoek — hij hoort bij de ene bestelling waaraan je hem koppelt en vuurt één keer. Een billing-webhook is plan-niveau — geconfigureerd door een admin op het facturatieplan, vuurt bij elke site-/domein-levenscyclusgebeurtenis onder dat plan. Verschillende mechanismen; zie de vergelijking hieronder.


Hoe het werkt

  1. Je plaatst een bestelling met een callback-object (POST /api/orders of POST /api/orders/domain).
  2. SuperSpace accepteert de bestelling (202 Accepted) en richt asynchroon in als een taak.
  3. Wanneer de taak voltooid is (of mislukt), stuurt SuperSpace een HTTP POST naar de url van je callback.
  4. Als je geen callback registreert, poll dan in plaats daarvan GET /api/tasks/{task-id}.

De callback is at-least-once: een levering die geen 2xx krijgt, wordt opnieuw geprobeerd (zie Levering en retries), dus je ontvanger moet idempotent zijn.


Een callback registreren

Voeg een callback-object toe aan de body van de bestelling. Het wordt op beide bestel-endpoints ondersteund:

  • POST /api/orders — site-bestellingen
  • POST /api/orders/domain — bestellingen voor domeinregistratie/-verhuizing
Params
  • callback: Object (optioneel) | Wordt afgevuurd wanneer de asynchrone taak van de bestelling voltooid is.
    • url: String (vereist) | Volledig gekwalificeerde HTTPS-URL die de POST ontvangt.
    • authorization: String (optioneel) | Wordt letterlijk als de Authorization-header op de callback meegestuurd. Geef de volledige waarde op — bijv. Bearer 12345, Token 12345, of een ruw token.
curl -X POST https://control.superspace.nl/api/orders \
  -H "Authorization: Bearer $SUPERSPACE_TOKEN" \
  -H "X-Auth-Account: $ACCOUNT_ID" \
  -H "Content-Type: application/json" \
  -d '{
        "order": { "plan": "basic", "term": "monthly" },
        "callback": {
          "url": "https://your-app.example.com/superspace/callback",
          "authorization": "Bearer your-shared-secret"
        }
      }'

Wat SuperSpace verstuurt

Wanneer de taak klaar is, stuurt SuperSpace een POST naar je url:

  • Headers: Authorization: <jouw authorization-waarde> (letterlijk; weggelaten als je er geen hebt opgegeven) en Accept: application/json.
  • Body: JSON.
{
  "timestamp": 1727303593,
  "success": true,
  "data": "Site provisioned. Primary domain: example.com"
}
Body-params
  • timestamp: Integer | Unix-epoch (seconden) van de oorspronkelijke poging — stabiel over retries heen, dus bruikbaar als leveringssleutel.
  • success: Boolean | true wanneer de taak eindigde op OK, false wanneer hij eindigde op FAILED.
  • data: String | Het data-veld van de taak — dezelfde vrije resultaattekst die GET /api/tasks/{task-id} retourneert.

Levering en retries

Callbacks delen de uitgaande leveringslaag van SuperSpace (dezelfde die door billing-webhooks wordt gebruikt):

  • Timeout: 30 seconden per poging.
  • Succes: elke HTTP 2xx. Al het andere — inclusief een verbindingsfout of timeout — is een mislukte levering.
  • Retries: een mislukte levering wordt opnieuw geprobeerd met backoff — elke 2 minuten gedurende de eerste 5 minuten, daarna elke 5 minuten tot 10 minuten oud, daarna elke 15 minuten — en SuperSpace geeft het 4 uur na de eerste poging op.
  • Idempotentie: door retries kan dezelfde callback meer dan eens aankomen. Dedupliceer op timestamp (stabiel per logische gebeurtenis).

Bereikbaarheid testen

GET /api/webhooks/task

Retourneert het bron-IP dat SuperSpace voor je verzoek ziet, zodat je netwerkbereikbaarheid / allow-listing kunt bevestigen voordat je op een callback vertrouwt.

Geretourneerde params
  • ip_address: String

Een taakresultaat rapporteren

POST /api/webhooks/task/{task-id}

Dit is het endpoint dat een taak binnen SuperSpace als voltooid markeert — zo rapporteert de provisioning-infrastructuur een resultaat terug, en het posten van dat resultaat triggert je geregistreerde uitgaande callback. Het werkt de data van de taak bij, zet de status (OK / FAILED) en vuurt vervolgens de callback af.

Account-scope vereist (X-Auth-Account). Niet beschikbaar via OAuth — dit endpoint authenticeert met een back-end API-sleutel (het wordt normaal gesproken aangeroepen door SuperSpace-infrastructuur, niet door integrators).

Retourneert altijd 200, zelfs voor een onbekende task-ID. Idempotent: een herhaalde post met dezelfde data + success wordt op digest gededupliceerd en is een no-op.

Params
  • data: Any (optioneel) | Toegevoegd aan de data van de taak.
  • success: Boolean (vereist) | true → taak OK; false → taak FAILED.

Callbacks vs. billing-webhooks

Callback Billing-webhook
Geconfigureerd op Per verzoek, in het callback-object op een bestelling Het facturatieplan (admin-UI)
Scope De ene taak / bestelling waaraan hij was gekoppeld Alle site- en domein-levenscyclusgebeurtenissen onder dat plan
Vuurt Eén keer, wanneer die taak OK / FAILED bereikt Bij elke created / resized / registered / renewed / … gebeurtenis
Body { "timestamp", "success", "data" } (het taakresultaat) { "action", "site" } of { "action", "domain" }

Zie Billing Webhooks voor het mechanisme op planniveau.