Interfejs API dla programistów, MCP, GitHub oraz symulacja wyzwalaczy

Interfejs API dla programistów, MCP, GitHub oraz symulacja wyzwalaczy

Skopiuj stronę

Symuluj wyzwalacze Shopify Flow, zarządzaj kluczami API i połącz GitHub z niestandardowym kodem wyzwalaczy przez REST API lub serwer MCP.

Mogą Państwo przeglądać swoje wyzwalacze, włączać je lub wyłączać, przeglądać historię zdarzeń oraz symulować działanie wyzwalacza z poziomu własnego kodu lub za pośrednictwem asystenta AI. Rozszerzenia wyzwalaczy przepływu pracy (Workflow Trigger Extensions) udostępniają interfejs API REST oraz serwer MCP, a także umożliwiają połączenie z repozytorium GitHub, dzięki czemu Państwa niestandardowy kod wyzwalacza podlega kontroli wersji. Wszystkimi tymi elementami można zarządzać na stronie Dla programistów.

Symulacja wyzwalacza

Testowanie przepływu pracy w Shopify Flow zazwyczaj wiąże się z przeprowadzeniem rzeczywistych czynności w Państwa sklepie - edycją produktu, złożeniem zamówienia, oczekiwaniem na wynik ankiety. Symulacja eliminuje to oczekiwanie: wystarczy wybrać wyzwalacz, przypisać go do zasobu, a zostanie on uruchomiony tak, jakby rzeczywiste zdarzenie właśnie miało miejsce.

Dwa sposoby na uruchomienie jednego:

  • W aplikacji. Otwórz dowolne zdarzenie w historii zdarzeń i ponownie wybierz opcję Symuluj. Spowoduje to ponowne wywołanie dokładnie tego samego zdarzenia.
  • Za pośrednictwem interfejsu API lub MCP, na podstawie identyfikatora zasobu lub wydarzenia z przeszłości.

Symulacja jest celowo wierna rzeczywistości. Nie tworzy ona skróconej treści - przechodzi przez ten sam proces, co prawdziwy webhook Shopify, więc to, co otrzymuje Państwa system, jest dokładnie tym, co otrzymałby w środowisku produkcyjnym.

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}'

Przebieg próbny weryfikuje wyzwalacz, rozwiązuje temat i wyświetla ładunek - nie powodując jednak uruchomienia żadnego działania. Aby uruchomić zdarzenie na poważnie, należy usunąć dryRun. Można również przekazać {"fromHistoryId":"456"}, aby ponownie uruchomić zdarzenie z przeszłości zamiast tworzyć nowe.

Wyzwalaczy obsługiwanych na zasadzie odpytywania, a nie za pomocą webhooka, nie można symulować; w wykazie wyzwalaczy wyświetlają one wartość simulatable: false.

Klucze API

Proszę utworzyć klucz na stronie Dla programistów i wybrać jego poziom dostępu:

  • Tylko do odczytu - wyświetlanie listy wyzwalaczy i ich stanu, przeglądanie historii zdarzeń, statystyk oraz uprawnień.
  • Odczyt i zapis - a także włączanie i wyłączanie wyzwalaczy.
  • Odczyt, zapis i wykonanie - a także symulacja wyzwalaczy oraz testowanie niestandardowego kodu wyzwalaczy.

Pełny klucz jest wyświetlany jednokrotnie, w momencie utworzenia. Klucze są przechowywane w postaci zaszyfrowanej i można je w każdej chwili unieważnić. Proszę przesłać go jako token typu „Bearer”:

Authorization: Bearer ftk_your_key_here

Funkcja „Simulation” znajduje się na odrębnym poziomie z powyższego powodu: uruchamia ona Państwa automatyzacje w trybie rzeczywistym, więc klucz używany do codziennego odczytu nie może ich uruchomić.

Strona dla programistów zawierająca podstawowy adres URL interfejsu API REST, przykładowe żądanie testowe oraz przycisk „Utwórz klucz API”
Strona dla programistów: podstawowy adres URL interfejsu API REST, żądanie służące do przetestowania klucza oraz miejsce, w którym tworzone są klucze.

Interfejs API REST

Metoda Ścieżka Poziom Cel
POBRAĆ /api/v1 brak Wskaźnik API - potwierdza, że API działa
POBRAĆ /api/v1/me przeczytaj Sprawdź uprawnienia i poziom swojego klucza
POBRAĆ /api/v1/triggers przeczytaj Każdy wyzwalacz wraz ze stanem dla Państwa sklepu
POBRAĆ /api/v1/triggers/:handle przeczytaj Szczegółowy opis jednego wyzwalacza
PUT /api/v1/triggers/:handle napisać Włączenie lub wyłączenie jednego wyzwalacza
PUT /api/v1/triggers napisać Włączanie lub wyłączanie wielu urządzeń w ramach jednego wywołania
POST /api/v1/triggers/:handle/simulate wykonaj Symulacja wyzwalacza
POBRAĆ /api/v1/triggers/custom przeczytaj Państwa własne, niestandardowe wyzwalacze wraz z ich kodem
POBRAĆ /api/v1/triggers/custom/:handle/test przeczytaj Zdarzenie przechwyconej próbki dla wyzwalacza niestandardowego
POST /api/v1/triggers/custom/:handle/test wykonać Uruchomienie niestandardowego kodu wyzwalacza bez zapisywania ani uruchamiania
POBRAĆ /api/v1/history przeczytaj Wymień zdarzenia wyzwalające
POBRAĆ /api/v1/history/:id przeczytaj Pobierz jedno zdarzenie wraz z jego danymi
POBRAĆ /api/v1/stats przeczytaj Wyniki ogólne, wskaźnik skuteczności, podział według statusu
POBRAĆ /api/v1/permissions przeczytaj Jakie uprawnienia dotyczące danych Państwo przyznali oraz jakie możliwości zapewnia każde z nich

GET /api/v1/triggers to przydatny interfejs do konfiguracji: dla każdego wyzwalacza podaje on wymagane uprawnienia, informację, czy uprawnienie zostało przyznane, czy wyzwalacz jest włączony oraz gdzie w aplikacji można nim zarządzać.

Włączanie i wyłączanie wyzwalaczy

Zastosowano metodę PUT zamiast PATCH, ponieważ wywołanie to jest idempotentne - ponowne wykonanie go po upływie limitu czasu nie spowoduje podwójnego zastosowania żadnej operacji, co ma znaczenie w sytuacji, gdy interfejs API jest obsługiwany przez asystenta.

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}'

Funkcja „Enabling” nigdy nie przyznaje uprawnień. Jeśli wyzwalacz wymaga uprawnienia, którego Państwo nie przyznali, wywołanie i tak zakończy się powodzeniem, a system poinformuje Państwa dokładnie, czego brakuje i gdzie należy je przyznać:

{
  "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."
}

Ten link otwiera stronę „Uprawnienia”, na której kursor jest już przesunięty bezpośrednio do potrzebnej Państwu karty.

Proszę dodać "sync": true, aby uruchomić również synchronizację danych, dzięki czemu wyzwalacz będzie działał na już istniejących rekordach, a nie tylko na tych tworzonych od tej pory.

Aby zmienić ustawienia kilku elementów jednocześnie, polecenie PUT /api/v1/triggers akceptuje zarówno wyraźną listę, jak i całą kategorię:

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

Połącz z serwisem GitHub

Na stronie Programista w zakładce Połączenia można podłączyć repozytorium GitHub dla kodu Wyzwalacze niestandardowe. Zmiany stają się dostępne do przeglądu w pull requestie; można sprawdzić, kto wprowadził jakie zmiany, a także cofnąć transformację, która przestała działać.

Po kliknięciu przycisku „Połącz” aplikacja GitHub zostanie zainstalowana na wybranym przez Państwa koncie. To Państwo decydują, do których repozytoriów aplikacja ma dostęp, a dostęp ten można w dowolnym momencie cofnąć w serwisie GitHub. Wybranie repozytorium powoduje natychmiastowe zapisanie w nim wszystkich posiadanych już niestandardowych wyzwalaczy, dzięki czemu repozytorium od samego początku jest dostosowane do aplikacji, a nie uzupełniane stopniowo z upływem czasu.

Czym się Państwo zajmują Co się dzieje
Proszę utworzyć, edytować lub powielić wyzwalacz w aplikacji Plik został zapisany w Państwa repozytorium
Usunięcie wyzwalacza w aplikacji Plik został usunięty z Państwa repozytorium
Proszę zatwierdzić zmianę w podłączonej gałęzi Kod wyzwalacza został zaktualizowany w aplikacji

Każdy wyzwalacz to pojedynczy plik o nazwie odpowiadającej jego identyfikatorowi, zawierający dokładnie ten sam moduł, który widzą Państwo w edytorze - bez żadnych dodatkowych elementów. Mogą Państwo zatem otworzyć go w swoim edytorze, uruchomić i sprawdzić pod kątem poprawności tak jak każdy inny plik JavaScript, a następnie skorzystać z powyższego punktu końcowego /test, aby przetestować go na prawdziwym zarejestrowanym zdarzeniu przed zatwierdzeniem zmian.

Powrót do wcześniejszej wersji

Nie muszą Państwo znać systemu Git, aby cofnąć zmianę. Po podłączeniu repozytorium w edytorze wyzwalaczy wyświetla się lista rozwijana Wersja, zawierająca wszystkie poprzednie wersje danego pliku wraz z datą i autorem. Wystarczy wybrać jedną z nich, a zostanie ona załadowana do edytora jako niezapisana zmiana, dzięki czemu mogą Państwo najpierw ją przejrzeć - dopiero zapisanie powoduje przywrócenie tej wersji jako nowego zatwierdzenia.

Wymiana lub odłączenie

Opcja Zmień repozytorium powoduje powrót do listy wyboru bez wprowadzania zmian w instalacji. Opcja Odłącz cofa instalację na GitHubie, a także usuwa ją tutaj, więc jej działanie jest zgodne z nazwą. Opcja Zarządzaj uprawnieniami otwiera ustawienia instalacji na GitHubie, gdzie można dodawać lub usuwać repozytoria.

Testowanie niestandardowego kodu wyzwalacza

Jeśli przechowują Państwo kod niestandardowego wyzwalacza w repozytorium i edytują go we własnym edytorze, mogą Państwo uruchomić go na przechwyconej próbce zdarzenia bez konieczności uprzedniego zapisywania go w aplikacji.

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}')"

Otrzymują Państwo informacje wyświetlane po naciśnięciu przycisku „Test” w aplikacji: czy akcja zostałaby wykonana, obiekt wyjściowy, wpisy z pliku ctx.log oraz czas wykonania.

Nic nie jest uruchamiane i nic nie jest zapisywane - żaden przepływ pracy nie jest uruchamiany, żadne zdarzenie nie jest rejestrowane, żadne limity nie są wykorzystywane, a zapisany kod pozostaje nienaruszony. Można to bezpiecznie uruchamiać przy każdym zapisaniu z poziomu modułu monitorującego pliki. Pełny opis przepływu pracy znajduje się w sekcji Wyzwalacze niestandardowe.

Serwer MCP

Zakładka MCP na stronie „Developer” zawiera adres URL serwera oraz gotowe do skopiowania polecenie połączenia dla aplikacji Claude, Cursor, VS Code, Gemini CLI i innych. Narzędzia odzwierciedlają punkty końcowe REST, a zestaw narzędzi zależy od poziomu uprawnień klucza - w przypadku klucza z uprawnieniami wyłącznie do odczytu narzędzia do zapisu lub wykonywania nie są w ogóle widoczne.

Narzędzie Poziom Jak to działa
list_triggers przeczytaj Każdy wyzwalacz i jego stan
list_custom_triggers przeczytaj Państwa własne, niestandardowe wyzwalacze wraz z ich kodem
get_custom_trigger_sample przeczytaj Zdarzenie przechwycone przez niestandardowy wyzwalacz, pod kątem którego przeprowadzana jest weryfikacja
list_history przeczytaj Ostatnie zdarzenia wyzwalające
get_event przeczytaj Jedno zdarzenie wraz z jego ładunkiem
get_stats przeczytaj Statystyki zbiorcze
get_permissions przeczytaj Przyznane uprawnienia i związane z nimi możliwości
get_trigger napisać Szczegółowy opis jednego wyzwalacza
set_trigger napisać Włączenie lub wyłączenie jednego wyzwalacza
set_triggers_bulk napisać Włączcie lub wyłączcie kilka urządzeń jednocześnie
simulate_trigger wykonaj Wywołanie zdarzenia na żądanie
test_custom_trigger wykonać Uruchomienie niestandardowego kodu wyzwalacza bez zapisywania ani uruchamiania

Właśnie to sprawia, że asystent jest naprawdę przydatny: potrafi wyświetlić listę istniejących elementów, wyjaśnić, czego wymaga dany wyzwalacz, włączyć go, uruchomić zdarzenie testowe, odczytać wynik - a w przypadku wyzwalaczy niestandardowych - przerobić kod i przetestować go - a wszystko to bez konieczności opuszczania rozmowy.

W jaki sposób chronione są Państwa dane

Dane zdarzeń są zwracane z zamaskowanymi danymi osobowymi: adresy e-mail, numery telefonów, numery kart oraz pola zawierające imiona i nazwiska są zastępowane znakami ***. Identyfikatory zasobów Shopify oraz pola dotyczące działalności pozostają niezmienione, dzięki czemu dane te zachowują swoją użyteczność.

Maskowanie dotyczy nazw pól i wzorców wartości, dlatego jest skuteczne, ale nie stanowi gwarancji - dane osobowe zawarte w polu tekstowym mogą nadal zostać ujawnione. Komunikaty o błędach są również pozbawiane wewnętrznych szczegółów diagnostycznych przed opuszczeniem serwera.

Połączenie z serwisem GitHub nie przechowuje żadnych danych uwierzytelniających, które mogłyby zostać ujawnione: zachowywany jest jedynie identyfikator instalacji, a dostęp do repozytorium odbywa się za pomocą tokenu generowanego na żądanie, którego ważność wygasa w ciągu godziny.

Kolejne kroki

Limity częstotliwości

Interfejs API REST i serwer MCP korzystają z jednego limitu na klucz API.

  • 300 żądań na 60 sekund na klucz, w ramach stałego okna czasowego.
  • Wywołania na poziomie wykonania mają przydzielony drugi, bardziej restrykcyjny limit wynoszący 60 na godzinę. Wykorzystują one oba limity, więc seria wywołań na poziomie wykonania również uszczupla wspólny limit. W przypadku tej aplikacji oznacza to symulację wyzwalacza oraz uruchomienie niestandardowego kodu wyzwalacza - obie te czynności faktycznie uruchamiają Państwa przepływy pracy.
  • W każdym planie jest tak samo. To liczniki Państwa planu wyzwalają zdarzenia, a nie wywołania API, więc przejście na wyższy plan nie powoduje wzrostu tych wartości.
  • W wyniku przetwarzania zwracany jest kod HTTP 429. Należy odczekać i spróbować ponownie, najlepiej stosując algorytm wykładniczego opóźniania.
  • W przypadku krótkotrwałej niedostępności naszej pamięci podręcznej mechanizm ograniczający działa w trybie fail-open, zamiast blokować Państwa integrację.

Webhooki przychodzące w Shopify nie podlegają ograniczeniom częstotliwości

Nie ograniczamy liczby webhooków przesyłanych nam przez Shopify - są one przyjmowane w miarę ich napływania i umieszczane w kolejce. Ograniczeniem jest **30-dniowy limit zdarzeń **przewidziany w Państwa planie.

Warto pamiętać o jednej rzeczy, jeśli tworzą Państwo własne wyzwalacze: Państwa kod jest uruchamiany przy każdym zdarzeniu w temacie, którego dotyczy, a każde uruchomienie liczy się jako jedno zdarzenie - w tym również te, które odfiltrowują Państwo poprzez zwracanie wartości null. Koszt tego działania jest taki sam, jak w przypadku wbudowanego wyzwalacza dla tego samego zdarzenia.

Shopify

Są to ograniczenia nałożone przez Shopify na interfejsy API tej platformy, a nie nasze. Mają one wpływ na to, jakie działania może wykonywać ta aplikacja (oraz Państwa procesy robocze) po stronie Shopify, i mogą Państwo napotkać je w przypadku dużych sklepów, nawet jeśli pozostają Państwo znacznie w granicach naszych limitów.

  • W przypadku wszystkich interfejsów API Shopify maksymalna liczba elementów w tablicach wejściowych wynosi 250. Żądanie zawierające tablicę o większej liczbie elementów zostanie odrzucone.
  • Paginacja kończy się po 25 000 obiektów. Liczby są dokładne do 25 000; powyżej tej liczby Shopify zwraca wartość 25001, co oznacza „ponad 25 000”. Jeśli chcą Państwo uzyskać więcej wyników, proszę najpierw zastosować filtr.
  • Korzystanie z interfejsu API GraphQL Admin jest rozliczane na podstawie obliczonego kosztu zapytania, wyrażonego w punktach na sekundę, a limit zależy od planu Shopify, z którego korzysta sklep:
Plan Shopify Punkty na sekundę
Standard 100
Zaawansowane 200
Ponadto 1000
Enterprise (komponenty handlowe) 2000

Interfejs API serwisu Storefront nie podlega ograniczeniom częstotliwości.

Szczegółowe informacje: Limity częstotliwości wywołań API Shopify