Utvikler-API, MCP, GitHub og utløsersimulering

Utvikler-API, MCP, GitHub og utløsersimulering

Kopier side

Simuler utløsere, administrer nøkler og koble til GitHub for å bruke tilpasset utløserkode via REST API eller MCP for Shopify Flow.

Du kan se gjennom utløserne dine, slå dem på eller av, lese hendelseshistorikken og simulere en utløser fra din egen kode eller fra en AI-assistent. Workflow Trigger Extensions stiller et REST-API og en MCP-server til rådighet, og kan kobles til et GitHub-repositorium slik at den tilpassede utløserkoden din blir underlagt versjonskontroll. Alle tre administreres på utviklersiden.

Simulering av en utløser

Å teste en Shopify Flow-arbeidsflyt innebærer vanligvis å gjennomføre den virkelige handlingen i butikken din - å redigere et produkt, legge inn en bestilling eller vente på en avstemning. Simulering eliminerer denne ventetiden: Velg en utløser, pek den mot en ressurs, så utløses den som om den virkelige hendelsen nettopp hadde funnet sted.

To måter å kjøre den på:

  • I appen. Åpne en hvilken som helst hendelse i Hendelseshistorikk og velg Simuler på nytt. Da utløses akkurat den samme hendelsen på nytt.
  • Via API eller MCP, ved hjelp av en ressurs-ID eller en tidligere hendelse.

Simuleringen er bevisst tro mot virkeligheten. Den oppretter ikke en «snarvei»-payload - den går gjennom den samme prosessen som en ekte Shopify-webhook gjør, så det arbeidsflyten din mottar, er nøyaktig det samme som den ville ha mottatt i produksjonsmiljøet.

Dry run firstbash
curl -X POST https://shopify.workflow-trigger-extensions.app/api/v1/triggers/product-update-trigger/simulate \
  -H "Authorization: Bearer ftk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"resourceId":"gid://shopify/Product/123456789","dryRun":true}'

En testkjøring validerer utløseren, løser emnet og viser nyttelasten - uten å utløse noe. Fjern dryRun for å utløse hendelsen på ordentlig. Du kan også sende inn {"fromHistoryId":"456"} for å utløse en tidligere hendelse på nytt, i stedet for å opprette en ny.

Utløsere som styres av polling i stedet for en webhook, kan ikke simuleres; de rapporterer simulatable: false i utløserlisten.

API-nøkler

Opprett en nøkkel på utviklersiden og velg tilgangsnivå:

  • Skrivebeskyttet - vise utløsere og deres status, lese hendelseshistorikk, statistikk og tillatelser.
  • Lese og skrive - samt slå utløsere på og av.
  • Les, skriv og kjør - du kan også simulere utløsere og teste tilpasset utløserkode.

Den fullstendige nøkkelen vises én gang, ved opprettelsen. Nøklene lagres i hashform og kan tilbakekalles når som helst. Send den som et «Bearer»-token:

Authorization: Bearer ftk_your_key_here

Simulering ligger på et eget nivå av den ovennevnte grunnen: den kjører automatiseringene dine i virkeligheten, så en nøkkel som brukes til vanlige avlesninger kan ikke utløse dem.

Utviklersiden med basis-URL-en for REST-API-et, en testforespørsel og knappen «Opprett API-nøkkel»
Utviklersiden: basis-URL-en til REST-API-et, en forespørsel som kan brukes til å teste en nøkkel, og stedet der nøkler opprettes.

REST-API

Metode Sti Nivå Formål
HENT /api/v1 ingen API-indeks - bekrefter at API-et er oppe og går
HENT /api/v1/me les Sjekk autorisasjonen og se nivået på nøkkelen din
HENT /api/v1/triggers les Hver utløser, med tilstanden for nettbutikken din
HENT /api/v1/triggers/:handle les En utløser i detalj
PUT /api/v1/triggers/:handle skrive Slå en utløser på eller av
PUT /api/v1/triggers skrive Slå mange på eller av i ett oppkall
INNLEGG /api/v1/triggers/:handle/simulate utføre Simulere en utløser
HENT /api/v1/triggers/custom les Dine egne tilpassede utløsere, med tilhørende kode
HENT /api/v1/triggers/custom/:handle/test les Hendelsen «Innhentet prøve» for en tilpasset utløser
INNLEGG /api/v1/triggers/custom/:handle/test utføre Kjør tilpasset utløserkode uten å lagre eller utløse den
HENT /api/v1/history les Liste over utløsende hendelser
HENT /api/v1/history/:id les Hent én hendelse, med tilhørende nyttelast
HENT /api/v1/stats les Totaltall, suksessrate, fordeling etter status
HENT /api/v1/permissions les Hvilke datatillatelser du har gitt, og hva hver av dem gir tilgang til

GET /api/v1/triggers er nyttig når du skal konfigurere: For hver utløser viser den hvilken tillatelse den trenger, om tillatelsen er gitt, om utløseren er aktivert, og hvor i appen du kan administrere den.

Slå utløsere på og av

PUT brukes i stedet for PATCH fordi anropet er idempotent - å gjenta det etter en tidsavbrudd vil ikke føre til at noe blir anvendt to ganger, noe som er viktig når en assistent styrer API-et.

Enable one triggerbash
curl -X PUT https://shopify.workflow-trigger-extensions.app/api/v1/triggers/order-tags-added-trigger \
  -H "Authorization: Bearer ftk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true}'

Å aktivere gir aldri en tillatelse. Hvis utløseren trenger en tillatelse du ikke har gitt, gjennomføres anropet likevel, og du får vite nøyaktig hva som mangler og hvor du skal gi tillatelsen:

{
  "enabled": true,
  "scopeGranted": false,
  "missingScopeLabels": ["Order Data Access"],
  "permissionsUrl": "https://admin.shopify.com/store/.../app/permissions?permission=read_orders",
  "warning": "Enabled, but this trigger cannot fire until Order Data Access is granted."
}

Den lenken åpner siden «Tillatelser» og ruller direkte til det kortet du trenger.

Legg til "sync": true for også å starte en datasynkronisering, slik at utløseren virker på poster som allerede finnes, i stedet for bare på de som opprettes fra nå av.

For å endre flere på en gang, godtar PUT /api/v1/triggers enten en eksplisitt liste eller en hel kategori:

{ "enabled": true, "handles": ["order-tags-added-trigger", "order-note-changed-trigger"] }
{ "enabled": true, "category": "orders" }

Koble til GitHub

På utviklersiden kan du under fanen Tilkoblinger koble til et GitHub-repositorium for koden din Tilpassede utløsere. Endringene blir tilgjengelige for gjennomgang i en pull-forespørsel, du kan se hvem som har endret hva, og du kan tilbakestille en transformasjon som har sluttet å fungere.

Når du klikker på «Koble til», installeres GitHub-appen vår på den kontoen du velger. Du bestemmer selv hvilke repositorier appen skal ha tilgang til, og du kan når som helst trekke tilbake denne tilgangen via GitHub. Når du velger et repositorium, blir alle tilpassede utløsere du allerede har, umiddelbart lagt inn der, slik at det fra starten av samsvarer med appen, i stedet for at det fylles ut etter hvert.

Hva du gjør Hva skjer?
Opprett, rediger eller dupliser en utløser i appen Filen er lagt inn i depotet ditt
Slette en utløser i appen Filen blir fjernet fra arkivet ditt
Send inn en endring til den tilkoblede grenen Koden for utløseren oppdateres i appen

Hver utløser er én fil som er oppkalt etter sitt håndtak, og som inneholder nøyaktig den modulen du ser i redigeringsprogrammet - uten noe ekstra rundt den. Du kan altså åpne den i ditt eget redigeringsprogram, kjøre den og sjekke den med lint akkurat som enhver annen JavaScript-fil, og deretter bruke /test-endepunktet ovenfor til å kjøre den mot en ekte, registrert hendelse før du lagrer endringene.

Gå tilbake til en tidligere versjon

Du trenger ikke å kunne bruke Git for å angre en endring. Når et arkiv er koblet til, viser utløserredigereren en «Versjon»-rullegardinmeny som viser alle tidligere versjoner av den aktuelle filen, med dato og forfatter. Velg en av dem, så lastes den inn i redigereren som en ulagret endring, slik at du kan lese den først - det er først når du lagrer den at den blir gjenopprettet som en ny commit.

Endring eller frakobling

Endre repositorium fører deg tilbake til valgmenyen uten å endre installasjonen. Koble fra opphever installasjonen på GitHub og fjerner den også her - navnet sier altså alt. Administrer tillatelser åpner installasjonsinnstillingene på GitHub, der du kan legge til eller fjerne repositorier.

Testing av tilpasset utløserkode

Hvis du lagrer den tilpassede utløserkoden i et arkiv og redigerer den i din egen editor, kan du kjøre den på den innsamlede eksempelhendelsen uten å lagre den i appen først.

Test the file you are editingbash
curl -X POST https://shopify.workflow-trigger-extensions.app/api/v1/triggers/custom/my-trigger/test \
  -H "Authorization: Bearer ftk_your_key_here" \
  -H "Content-Type: application/json" \
  -d "$(jq -Rn --rawfile c flow-triggers/my-trigger.js '{code:$c}')"

Du får tilbake det som vises på appens «Test»-knapp: om den ville blitt utløst, utdataobjektet, linjene i ctx.log og kjøretiden.

Ingenting utløses og ingenting lagres - ingen arbeidsflyt kjører, ingen hendelser registreres, ingen kvoter brukes, og den lagrede koden forblir uendret. Det er trygt å kjøre denne ved hver lagring fra en filovervåker. Se Tilpassede utløsere for den fullstendige arbeidsflyten.

MCP-server

Fanen MCP på utviklersiden viser serverens URL og en tilkoblingskommando som er klar til å kopieres, for Claude, Cursor, VS Code, Gemini CLI og andre. Verktøyene speiler REST-endepunktene, og verktøysettet avhenger av nøkkelens nivå - en skrivebeskyttet nøkkel gir ikke tilgang til verktøyene for skriving eller kjøring i det hele tatt.

Verktøy Nivå Hva den gjør
list_triggers les Hver utløser og dens tilstand
list_custom_triggers les Dine egne tilpassede utløsere, med tilhørende kode
get_custom_trigger_sample les Den registrerte hendelsen som en tilpasset utløser tester mot
list_history les Nylige utløsende hendelser
get_event les En hendelse, inkludert dens nyttelast
get_stats les Samlet statistikk
get_permissions les Tildelte tillatelser og hva de gir tilgang til
get_trigger skrive En utløser i detalj
set_trigger skrive Slå en utløser på eller av
set_triggers_bulk skrive Slå flere på eller av samtidig
simulate_trigger utføre Utløs en trigger når det er behov for det
test_custom_trigger utføre Kjør tilpasset utløserkode uten å lagre eller utløse den

Det er dette som gjør en assistent virkelig nyttig: den kan gi en oversikt over hva som finnes, forklare hva en utløser trenger, slå den på, utløse en testhendelse, lese opp resultatet - og for tilpassede utløsere, omskrive koden og teste den - uten at du trenger å forlate samtalen.

Hvordan opplysningene dine beskyttes

Hendelsesdata returneres med personopplysninger maskert: e-postadresser, telefonnumre, kortnumre og felt med personnavn erstattes med ***. Shopify-ressurs-ID-er og forretningsfelt beholdes uendret, slik at dataene fortsatt er brukbare.

Maskeringen gjelder feltnavn og verdimønstre, så den gir en viss beskyttelse, men er ikke en garanti - personopplysninger i et fritekstfelt kan fortsatt komme gjennom. Feilmeldinger blir også renset for interne diagnostiske opplysninger før de sendes ut fra serveren.

GitHub-tilkoblingen lagrer ingen påloggingsopplysninger som kan lekke: kun installasjons-ID-en lagres, og tilgang til repositoriet skjer via et token som genereres ved behov og utløper innen en time.

Neste trinn

Ratebegrensninger

REST-API-et og MCP-serveren deler ett budsjett per API-nøkkel.

  • 300 forespørsler per 60 sekunder per nøkkel, som et fast tidsvindu.
  • Kall på utførelsesnivå tildeles et sekundært, strammere budsjett på 60 per time. De bruker begge deler, så en serie utførelser tærer også på den felles kvoten. For denne appen betyr det å simulere en utløser og kjøre tilpasset utløserkode - begge deler setter virkelig i gang arbeidsflytene dine.
  • Det er det samme for alle abonnementer. Det er målingene i abonnementet ditt som utløser hendelser, ikke API-anrop, så en oppgradering fører ikke til at disse tallene øker.
  • Ved behandling av svar returneres HTTP 429. Vent litt og prøv på nytt, helst med eksponentiell ventetid.
  • Hvis cachen vår er midlertidig utilgjengelig, vil begrenseren gå i åpen stilling i stedet for å blokkere integrasjonen din.

Innkommende Shopify-webhooks er ikke underlagt noen hastighetsbegrensning

Vi begrenser ikke antallet webhooks som Shopify sender oss - de mottas slik de kommer inn og settes i kø. Grensen er antall hendelser som er inkludert i abonnementet ditt i løpet av en 30-dagers periode.

En ting det er verdt å vite hvis du skriver egendefinerte utløsere: Koden din kjøres for hver hendelse i emnet den lytter til, og hver kjøring teller som én hendelse - også de du filtrerer bort ved å returnere null. Det koster like mye som den innebygde utløseren ville gjort for den samme hendelsen.

Shopify

Dette er Shopifys begrensninger for Shopifys API-er, ikke våre. De gjelder hva denne appen (og arbeidsflytene dine) kan gjøre på Shopify-siden, og du kan komme til å støte på dem i en stor nettbutikk, selv om du holder deg godt innenfor våre egne begrensninger.

  • Inndatamatriser er begrenset til 250 elementer i alle Shopify-API-er. En forespørsel med en større matrise blir avvist.
  • Paginering stopper ved 25 000 objekter. Antallene er nøyaktige opp til 25 000; over dette tallet returnerer Shopify 25001, som betyr «mer enn 25 000». Hvis du trenger å gå dypere, må du filtrere først.
  • GraphQL Admin API måles ut fra den beregnede kostnaden per forespørsel, i poeng per sekund, og taket avhenger av butikkens Shopify-abonnement:
Shopify-abonnement Poeng per sekund
Standard 100
Avansert 200
I tillegg 1000
Enterprise (handelskomponenter) 2000

Storefront-API-et har ingen begrensninger på antall forespørsler.

Fullstendig informasjon: Begrensninger på Shopify-API