Udvikler-API og MCP

Alt, hvad du administrerer i appen, kan du også administrere via din egen kode eller via en AI-assistent. Workflow Webhooks stiller to grænseflader til rådighed: et REST-API og en MCP-server. Begge findes på udviklersiden.

API-nøgler

Begge tjenester bruger en API-nøgle til autentificering. På siden »Udvikler« skal du under »API-nøgler« oprette en nøgle og vælge dens adgangsniveau:

  • Skrivebeskyttet - vis webhooks, se historik over aktiveringer og statistikker.
  • Læs og skriv - samt opret, opdater og slet webhooks.
  • Læs, skriv og udfør - du kan også køre en testkørsel eller gentage en tidligere kørsel.

Den fulde nøgle vises én gang, når den oprettes. Kopier den derefter, og opbevar den sikkert; du kan ikke se den igen. Nøgler gemmes i hashform, aldrig i klartekst, og du kan til enhver tid tilbagekalde en nøgle.

Send nøglen som et »Bearer«-token ved hver anmodning:

text
Authorization: Bearer fwk_your_key_here

Hvorfor »execute« er et separat niveau

Når du udløser en webhook, udløser det faktisk dine Shopify Flow-arbejdsgange, og disse arbejdsgange kan ændre din butik - f.eks. ved at mærke ordrer, sende e-mails eller opdatere lagerbeholdningen. Ved at holde dette på et separat niveau sikrer du, at en nøgle, du giver til et script eller en AI-assistent til det daglige arbejde, ikke ved et uheld kan udløse dine automatiseringer. Uddel som standard læsenøgler, og opret kun en eksekveringsnøgle, hvor du virkelig har brug for en.

Basis-URL

API’en og MCP-serveren hostes fra et dedikeret værtsnavn:

text
https://shopify.workflow-webhooks.app

REST-API’en findes altså på https://shopify.workflow-webhooks.app/api/v1, og MCP-serveren på https://shopify.workflow-webhooks.app/api/mcp. På udviklersiden vises begge med en knap til kopiering.

Dette værtsnavn betjener udelukkende /api - den indlejrede administrationsgrænseflade forbliver på sin egen Shopify-registrerede URL. Ved at holde dem adskilt sikres det, at den adresse, du indsætter i et script, en CI-opgave eller en AI-klient, er stabil og uafhængig af appens indlejring.

REST-API

Basis-URL’en vises på siden »Udvikler«. De vigtigste slutpunkter:

Metode Sti Niveau Formål
HENT /api/v1 ingen API-indeks - bekræfter, at API’en er oppe
HENT /api/v1/me læs Kontroller godkendelsen, og se, hvilket niveau din nøgle har
HENT /api/v1/webhooks læs List of webhooks
INDLÆG /api/v1/webhooks skrive Opret een webhook
HENT /api/v1/webhooks/:id læs Få en webhook
PUT / PATCH /api/v1/webhooks/:id skrive Opdater en webhook
SLET /api/v1/webhooks/:id skrive Slet en webhook
INDLÆG /api/v1/webhooks/:id/test udføre Udfør en testkald
HENT /api/v1/history læs Listeoverblik
HENT /api/v1/history/:id læs Hent én anrop med payloaden
INDLÆG /api/v1/history/:id/replay udføre Gengiv en tidligere påkaldelse
HENT /api/v1/stats læs Samlet antal, succesrate, daglige serier
HENT /api/v1/templates læs Indbyggede webhook-skabeloner

En hurtig kontrol af, om din nøgle virker:

bash
curl https://shopify.workflow-webhooks.app/api/v1/me \
  -H "Authorization: Bearer fwk_your_key_here"
json
{ "authenticated": true, "shop": "your-store.myshopify.com", "level": "READ" }

MCP-server

MCP-serveren gør det muligt for en AI-assistent (Claude, Cursor, VS Code, Gemini CLI og andre) at arbejde med dine webhooks i en samtale. På siden »Udvikler« viser fanen »MCP« serverens URL og en forbindelseskommando, der er klar til at blive kopieret, for hver klient, hvor din nøgle allerede er indsat.

Værktøjerne afspejler REST-endpunkterne, og værktøjssættet afspejler dit nøgleniveau: En skrivebeskyttet nøgle har slet ikke adgang til de værktøjer, der opretter, sletter eller udløser webhooks. Al godkendelse og datahåndtering foregår på serversiden.

Sådan beskyttes dine data

Der er to ting, du bør vide, før du bruger en automatiseringsløsning eller en AI-assistent til at tilgå denne API.

Din webhooks godkendelsestoken kan aldrig læses. Det token eller den signeringsnøgle, du har angivet for en webhook, kan på intet niveau læses via API’et eller MCP. Svarene angiver kun, om der er angivet et token (hasToken), men aldrig dets værdi. Du kan angive et nyt; du kan aldrig hente det gamle.

Personoplysninger i payloads er maskeret. Webhook-payloads stammer fra eksterne systemer og indeholder ofte oplysninger om kunder. Inden en invokationspayload forlader serveren, erstattes værdier, der ligner personoplysninger, med ***: e-mailadresser, telefonnumre, kortnumre og felter opkaldt efter en person (customerName, shippingAddress og lignende). Anmodningsheadere renses på samme måde som på appens historikskærm.

Denne maskering er omhyggelig, men udgør ingen garanti. Den virker på feltnavne og værdimønstre, så personoplysninger, der findes i et fritekstfelt - en note, en kommentar eller en meddelelsestekst - kan stadig komme frem. Betragt API-svar som potentielt indeholdende kundedata, og opbevar dem i overensstemmelse hermed.

Test og gentagelser tæller ikke med i din kvote. De anmodninger, du sender via API’et, registreres som test, så de tæller ikke med i dit abonnements månedlige kvote. Gentagelser tæller heller ikke med, da den oprindelige anmodning allerede er talt med.

Næste skridt

Hastighedsbegrænsninger

REST-API’et og MCP-serveren deler ét budget pr. API-nøgle.

  • 300 anmodninger pr. 60 sekunder pr. nøgle, som et fast tidsvindue.
  • Opkald på eksekveringsniveau tildeles et sekundært, strammere budget på 60 pr. time. Begge dele forbruges, så en bølge af eksekveringer trækker også på den fælles kvote. For denne app betyder det, at man tester et webhook og afspiller en historikpost - begge dele kører faktisk dine Shopify Flow-arbejdsgange.
  • Det er det samme på alle planer. Dit abonnement tæller antallet af invokationer, ikke API-kald, så en opgradering øger ikke disse tal.
  • Ved gennemgang af svar returneres HTTP 429. Vent lidt, og prøv igen - helst med eksponentiel ventetid.
  • Hvis vores cache kortvarigt er utilgængelig, fungerer begrænsningsmekanismen på en måde, så den åbner i stedet for at blokere din integration.

Indgående webhooks er ikke underlagt nogen hastighedsbegrænsning

Det er værd at præcisere, da det er det spørgsmål, vi oftest får stillet: Vi begrænser ikke indgående webhook-leverancer. Vi sender dem videre, så snart de ankommer, uanset hvilke bølger dit kildesystem genererer - der er ingen begrænsning pr. sekund eller pr. minut fra vores side.

Den eneste begrænsning er din plans tilladte antal opkald på 30 dage. Når denne kvote er opbrugt, behandles yderligere opkald ikke længere, indtil perioden starter forfra, eller du opgraderer. Derudover gælder de begrænsninger, der er fastsat af Shopify: Shopify Flow har sine egne udførelsesbegrænsninger, og en trigger-payload er begrænset til 50 KB.

Shopify

Dette er Shopifys begrænsninger for Shopifys API’er, ikke vores. De gælder for, hvad denne app (og dine arbejdsgange) kan udføre på Shopify-siden, og du kan støde på dem i en stor butik, selvom du holder dig godt inden for vores begrænsninger.

  • Indgangsarrayer er begrænset til 250 elementer på tværs af alle API’er på Shopify. En anmodning med et større array afvises.
  • Paginering stopper ved 25.000 objekter. Tællingerne er nøjagtige op til 25.000; derover returnerer Shopify 25001, hvilket betyder »mere end 25.000«. Hvis du har brug for at gå dybere, skal du først filtrere.
  • GraphQL Admin API måles ud fra den beregnede forespørgselsomkostning, angivet i point pr. sekund, og det maksimale forbrug afhænger af butikkens »Shopify«-abonnement:
Shopify plan Point pr. sekund
Standard 100
Avanceret 200
Plus 1000
Enterprise (handelskomponenter) 2000

Webshop API er ikke underlagt nogen hastighedsbegrænsning.

Alle detaljer: Shopify API-begrænsninger