Ga direct naar de hoofdinhoud
- Changelog

API-changelog

Volg klantgerichte API-wijzigingen. Breaking changes worden uitgebracht als een nieuwe API-versie; v1-wijzigingen zijn additief tenzij anders vermeld.

Productupdatemeldingen - oktober 2026

Mail de kopers van een product dat het is bijgewerkt — de campagne die een merchant start met Klanten op de hoogte stellen op de pagina van een product — vanuit je eigen systeem. Additief aan het v1-contract. Beschikbaar in elk betaald abonnement.

  • Nieuw POST /products/{shopify_product_id}/notifications: zet een campagne in de wachtrij (202) voor elke koper van de downloadbare koppelingen van het product, of, met variant_ids, van de koppelingen die die varianten bedienen. Optioneel message in platte tekst van maximaal 2.000 tekens met {customer.first_name}, {shop.name}, {product.title} en {product.metafields.<namespace>.<key>}; geen links. dry_run voert elke controle uit en geeft de aantallen, het onderwerp en de gerenderde notitie terug zonder te verzenden (200; gebruik per dry run een nieuwe Idempotency-Key). Kost 10 ratelimit-tokens.
  • Nieuw GET /notifications/{notificationId}: de status van de campagne, de aantallen, waiting_for_archive en een vaste set error-waarden; completed met partial: true wanneer sommige verzendingen zijn mislukt. Campagnes die in de app zijn gestart, verschijnen ook.
  • Nieuw POST /notifications/{notificationId}/cancel: annuleert een campagne in de wachtrij (200). De 7-dagenlimiet van het product blijft staan, precies zoals bij annuleren in de app.
  • Nieuw optioneel object notify_customers op POST /mappings en PUT /mappings/{id}: zet na het committen van de schrijfactie een melding voor de kopers van de geschreven koppeling in de wachtrij. Een notitie die een regel over de eigen tekst schendt (leeg, te lang, een foute variabele, meer dan vijf metavelden, een link in de tekst), is 422 invalid_message en er wordt niets geschreven; een probleem met een metaveld en elke andere weigering worden gerapporteerd in het nieuwe veld data.notification (created: false, error), nooit als een 4xx. data.notification is alleen aanwezig wanneer de vlag is meegestuurd; bestaande responses zijn ongewijzigd.
  • Eén campagne per product per 7 dagen, over al zijn varianten en elke bron, en geen enkele zolang er nog een in de wachtrij staat of wordt verzonden: 429 notification_cooldown met Retry-After (tot zeven dagen) en error.details.next_available_at. Niet de token bucket — probeer het niet automatisch opnieuw; plan de volgende aanroep op next_available_at.
  • Maximaal 5 campagnes per shop tegelijk in de wachtrij of in verzending, over elk product en elke bron: een zesde is 429 too_many_active_notifications met error.details.limit en error.details.active_notification_ids, en zonder Retry-After. Probeer het opnieuw zodra een ervan klaar is. Een dry run wordt op dezelfde manier geweigerd; bij het schrijven van een koppeling wordt het gerapporteerd in data.notification.
  • Eén productupdatemail per koper per shop per 24 uur, over elke campagne: een koper die er al een heeft gekregen, wordt overgeslagen wanneer de campagne verzendt. Overgeslagen kopers zitten niet in sent_count, failed_count of suppressed_count. Een campagne die elke koper heeft overgeslagen, eindigt als failed met error: recipients_recently_notified en gebruikt de 7 dagen van het product niet.
  • Vóór elke batch van maximaal 500 e-mails controleert de campagne de shop opnieuw en stopt als het abonnement is verlopen of de shop geen betaald abonnement meer heeft, klant-e-mails zijn uitgezet, het verzenden is opgeschort of Alva meldingen heeft uitgeschakeld. Stopt ze voordat er iemand is gemaild, dan is ze failed (plan_required, email_disabled, notifications_suspended of notifications_switched_off) en geeft ze de 7 dagen vrij; stopt ze later, dan is ze completed met partial: true. Een campagne waarvan elke verzending is mislukt, is failed met nothing_sent en geeft de 7 dagen ook vrij, en een campagne waarvoor bij het verzenden niemand meer over was om te mailen, is failed met no_eligible_recipients en geeft ze eveneens vrij.
  • Een campagne waarvan de beoogde koppeling een lopende ZIP-opbouw heeft, wacht daarop (waiting_for_archive: true; alleen een koppeling die een ZIP-archief levert, laat een campagne wachten); een mislukte opbouw, of een opbouw die 60 minuten lang niet vordert terwijl die loopt (6 uur terwijl die nog wacht op de start of op een nieuwe poging), geteld vanaf de opbouw, niet vanaf het aanmaken van de campagne, laat de campagne mislukken met nul verzendingen en geeft de limiet vrij.
  • Acht nieuwe foutcodes: 403 notifications_suspended, 404 notification_not_found, 409 notification_not_cancellable, 422 invalid_message, 422 no_downloadable_content, 422 no_eligible_recipients, 429 notification_cooldown, 429 too_many_active_notifications. mapping_not_found en multiple_mappings_match krijgen op dit endpoint error.details.unresolved_variant_ids / ambiguous_variant_ids.

Toegangsupdate - september 2026

API-toegang vereist geen goedkeuring meer.

  • Elk betaald abonnement (Basic, Pro en Enterprise) kan de API gebruiken. Maak sleutels aan in de app onder Instellingen → API keys; je hoeft niets aan te vragen.
  • Met het Free-abonnement is het tabblad API keys verborgen en geven bestaande sleutels 402 plan_required terug totdat de winkel overstapt op een betaald abonnement.

v1-update - juli 2026

Additieve toevoegingen van foutcodes en responsvelden aan het bestaande v1-contract.

  • Nieuwe fout 422 withdrawal_consent_required op het download-urls-endpoint voor bestellingen: wordt geretourneerd wanneer de shop EU-herroepingstoestemming heeft ingeschakeld en de bestelling nog geen toestemmingsregistratie heeft; download-URL's worden uitgegeven zodra de klant toestemming geeft.
  • Nieuwe fout 422 key_limit_reached bij het aanmaken van API-sleutels: een shop kan maximaal 25 actieve API-sleutels hebben; trek er eerst één in.
  • Nieuwe fout 409 delivery_not_yet_released op de endpoints download-urls en resend voor bestellingen: wordt geretourneerd wanneer voor het product een vertraging van de downloadlevering is ingesteld en de bestanden van de koper nog niet zijn vrijgegeven. Er worden geen download-URL's uitgegeven en er wordt geen e-mail verstuurd totdat de vertraging is verstreken.
  • Nieuw error.details-object in de foutenvelop: alleen aanwezig bij codes die veilige context voor de aanroeper meesturen. Op dit moment is delivery_not_yet_released de enige producent; het bevat release_at, het ISO 8601-moment waarop de downloads worden vrijgegeven. Behandel het object als open - er kunnen nieuwe sleutels bijkomen zonder een nieuwe hoofdversie.
  • Nieuwe velden delivery_pending en release_at op het aankoopobject van de bestelstatus: delivery_pending is true zolang een aankoop nog wordt vastgehouden door een vertraging van de downloadlevering, en release_at is het ISO 8601-moment van vrijgave, of null wanneer er niets in behandeling is.
  • Het grant-downloads-endpoint geeft vastgehouden aankopen van de bestelling nu direct vrij, zodat een merchant een vertraging van de downloadlevering via de API kan overrulen.

v1.0.0 - juni 2026

Eerste pilot-API-oppervlak achter toegang op uitnodiging.

  • API-sleutels voor goedgekeurde winkels.
  • Verplichte idempotency-sleutels bij schrijfverzoeken.
  • Import van assets via remote-URL, directe uploads, asset-overzichten, asset-updates en asset-verwijdering.
  • Platte categorieën, productkoppelingen, packs en licentiecode-tags.
  • Ordertoewijzingen die gekoppelde downloads zichtbaar maken in Shopify-klantaccounts.
  • Toegangsbeheer voor bestellingen: intrekken, herstellen, downloads verlenen en e-mail opnieuw versturen.
  • Endpoints voor job- en orderstatus.
  • Downloads van de OpenAPI-specificatie en de Postman-collectie.

Versiebeleid

Het v1-contract is uitsluitend additief: er kunnen nieuwe endpoints, optionele velden en nieuwe foutcodes worden toegevoegd. Breaking changes gebruiken een toekomstig /api/v2-pad.

API-documentatie

Was dit nuttig?

Nog vastgelopen? Mail admin@alvaapps.com.

Laatst bijgewerkt 2026-10-20