Utvecklings-API och MCP

Utvecklings-API och MCP

Kopiera sidan

Hantera webhooks för Shopify Flow via REST-API eller MCP-server för AI-assistenter. Skapa API-nycklar med läs-, skriv- eller körbehörighet.

Allt du hanterar i appen kan du också hantera via din egen kod eller via en AI-assistent. Workflow Webhooks erbjuder två gränssnitt: ett REST-API och en MCP-server. Båda finns på utvecklarsidan.

API-nycklar

Båda plattformarna använder en API-nyckel för autentisering. På utvecklarsidan, under ”API-nycklar”, skapar du en nyckel och väljer åtkomstnivå:

  • Skrivskyddad - visa webhooks, läs anropshistorik och statistik.
  • Läsa och skriva - samt skapa, uppdatera och ta bort webhooks.
  • Läs, skriv och kör - du kan också starta ett test eller återuppspela ett tidigare test.

Hela nyckeln visas en enda gång, när den skapas. Kopiera den då och förvara den på ett säkert sätt; du kommer inte att kunna se den igen. Nycklar lagras i hashform, aldrig i klartext, och du kan återkalla en nyckel när som helst.

Skicka nyckeln som en ”Bearer”-token vid varje förfrågan:

text
Authorization: Bearer fwk_your_key_here

Varför ”execute” är en egen nivå

När du utlöser en webhook körs dina Shopify Flow-arbetsflöden, och dessa arbetsflöden kan ändra din butik - till exempel genom att märka upp beställningar, skicka e-post eller uppdatera lagerstatusen. Genom att hålla detta på en separat nivå säkerställer du att en nyckel som du ger till ett skript eller en AI-assistent för det dagliga arbetet inte kan utlösa dina automatiseringar av misstag. Dela ut läsnycklar som standard och skapa endast en exekveringsnyckel när du verkligen behöver en.

Bas-URL

API:et och MCP-servern tillhandahålls via ett särskilt värdnamn:

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

REST-API:et finns alltså på https://shopify.workflow-webhooks.app/api/v1 och MCP-servern på https://shopify.workflow-webhooks.app/api/mcp. På utvecklarsidan visas båda med en kopieringsknapp.

Detta värdnamn betjänar endast /api - det inbäddade administratörsgränssnittet finns kvar på sin egen Shopify-registrerade URL. Genom att hålla dem åtskilda blir adressen som du klistrar in i ett skript, ett CI-jobb eller en AI-klient stabil och oberoende av appens inbäddning.

REST-API

Bas-URL:en visas på utvecklarsidan. De viktigaste slutpunkterna:

Metod Sökväg Nivå Syfte
HÄMTA /api/v1 ingen API-index - bekräftar att API:et är i drift
HÄMTA /api/v1/me läs Kontrollera autentiseringen och se vilken nivå din nyckel har
HÄMTA /api/v1/webhooks läs Visa webhooks
INLÄGG /api/v1/webhooks skriva Skapa en webhook
HÄMTA /api/v1/webhooks/:id läs Skaffa en webhook
PUT / PATCH /api/v1/webhooks/:id skriva Uppdatera en webhook
RADERA /api/v1/webhooks/:id skriva Ta bort en webhook
INLÄGG /api/v1/webhooks/:id/test utföra Kör ett testanrop
HÄMTA /api/v1/history läs Lista över anrop
HÄMTA /api/v1/history/:id läs Hämta en anropning med dess nyttolast
INLÄGG /api/v1/history/:id/replay utföra Spela upp en tidigare anropning
HÄMTA /api/v1/stats läs Totalsiffror, framgångsgrad, dagliga serier
HÄMTA /api/v1/templates läs Inbyggda webhook-mallar

Ett snabbt sätt att kontrollera att din nyckel fungerar:

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-servern gör det möjligt för en AI-assistent (Claude, Cursor, VS Code, Gemini CLI och andra) att använda dina webhooks i konversationen. På sidan ”Developer” visar fliken ”MCP” serverns URL och ett kopieringsklart anslutningskommando för varje klient, där din nyckel redan är ifylld.

Verktygen speglar REST-ändpunkterna, och verktygsuppsättningen anpassas efter din nyckels behörighetsnivå: en skrivskyddad nyckel har inte ens tillgång till de verktyg som skapar, raderar eller utlöser webhooks. All autentisering och datahantering sker på serversidan.

Hur dina uppgifter skyddas

Det finns två saker som är bra att känna till innan du kopplar en automatiseringslösning eller en AI-assistent till detta API.

Autentiseringstoken för din webhook är aldrig läsbar. Det token eller den signeringsnyckel som du har angett för en webhook kan inte läsas ut via API:et eller MCP på någon nivå. Svaren visar endast om ett token har angetts (hasToken), aldrig dess värde. Du kan ange ett nytt token, men du kan aldrig hämta det gamla.

Personuppgifter i datapaket maskeras. Webhook-datapaket kommer från externa system och innehåller ofta kunduppgifter. Innan en anropspayload lämnar servern ersätts värden som ser ut som personuppgifter med ***: e-postadresser, telefonnummer, kortnummer och fält som är uppkallade efter en person (customerName, shippingAddress och liknande). Förfrågningshuvuden rensas på samma sätt som appens historikskärm gör.

Denna maskering är noggrann men utgör ingen garanti. Den fungerar på fältnamn och värdemönster, vilket innebär att personuppgifter som finns i ett fritextfält - en anteckning, en kommentar eller en meddelandetext - fortfarande kan synas. Behandla API-svar som om de potentiellt innehåller kunduppgifter och lagra dem därefter.

Test och återuppspelning räknas inte in i din kvot. Anrop som du skickar via API:et registreras som tester, så de räknas inte in i ditt abonnemangs månatliga kvot. Återuppspelningar räknas inte heller in, eftersom det ursprungliga anropet redan har räknats in.

Nästa steg

Begränsningar av antalet förfrågningar

REST-API:et och MCP-servern delar på en budget per API-nyckel.

  • 300 förfrågningar per 60 sekunder per nyckel, som ett fast tidsfönster.
  • Anrop på exekveringsnivå tilldelas en andra, stramare kvot på 60 per timme. Båda kvoterna förbrukas, så en intensiv exekveringsvåg tär även på den gemensamma kvoten. För den här appen innebär det att testa en webhook och spela upp en historikpost - båda dessa åtgärder kör faktiskt dina Shopify Flow-arbetsflöden.
  • Det är samma sak för alla abonnemang. Ditt abonnemang mäter antalet anrop, inte API-anrop, så en uppgradering påverkar inte dessa siffror.
  • Vid bearbetning av svar returneras HTTP-kod 429. Vänta en stund och försök igen, helst med exponentiell väntetid.
  • Om vår cache tillfälligt inte är tillgänglig öppnas begränsaren istället för att blockera din integration.

Inkommande webhooks är inte begränsade i antal

Det är värt att klargöra detta, eftersom det är den fråga vi får oftast: vi begränsar inte inkommande webhook-leveranser. Vi skickar dem så fort de anländer, oavsett hur stora dataströmmar ditt källsystem genererar - det finns inga begränsningar per sekund eller per minut från vår sida.

Den enda begränsningen är din plans kvot på 30 dagar för anrop. När den kvoten är förbrukad behandlas inga ytterligare anrop förrän perioden börjar om eller du uppgraderar. Utöver det gäller Shopifys begränsningar: Shopify Flow har sina egna exekveringsbegränsningar, och storleken på en utlösar-payload är begränsad till 50 KB.

Shopify

Detta är Shopifys begränsningar för Shopifys API:er, inte våra. De avgör vad den här appen (och dina arbetsflöden) kan göra på Shopifys sida, och du kan stöta på dem i en stor butik även om du ligger långt inom våra begränsningar.

  • Antalet poster i inmatningsmatriser är begränsat till 250 för alla Shopify-API:er. En begäran med en matris som innehåller fler poster avvisas.
  • Pagineringen slutar vid 25 000 objekt. Antalet är korrekt upp till 25 000; över det värdet returnerar Shopify 25001, vilket betyder ”mer än 25 000”. Om du behöver gå djupare, filtrera först.
  • GraphQL Admin API debiteras utifrån den beräknade kostnaden för frågor, uttryckt i poäng per sekund, och taket beror på butikens Shopify-abonnemang:
Shopify-abonnemang Poäng per sekund
Standard 100
Avancerat 200
Plus 1000
Företag (handelskomponenter) 2000

Storefront API har inga begränsningar vad gäller antalet förfrågningar.

Mer information: Begränsningar för Shopify-API