Dokumentacja dla programistów›API aplikacji›Pobieranie subskrypcji cyklu życia aplikacji
Dokumentacja dla programistów

Pobieranie subskrypcji cyklu życia aplikacji

API aplikacjiDokumentacja API
Aktualizacja 2026-09-06

Dostępne tylko w wersji 2026-04 i nowszych

Subskrypcje zdarzeń cyklu życia na poziomie funkcji pozwalają twórcom aplikacji otrzymywać powiadomienia webhook, gdy użytkownicy wchodzą w interakcję z konkretnymi instancjami funkcji aplikacji (na przykład gdy widok tablicy zostaje zduplikowany, obiekt utworzony lub rozszerzenie kolumny usunięte). Te subskrypcje dają twórcom szczegółową kontrolę nad tym, jak i gdzie dostarczane są zdarzenia.

  • Subskrypcje na poziomie funkcji: Subskrybuj tylko te zdarzenia na poziomie funkcji, które Cię interesują
  • Osobne kierowanie zdarzeń: Kieruj różne typy zdarzeń do różnych endpointów webhook
  • Obsługa synchroniczna lub asynchroniczna: Wybierz sposób obsługi dla każdego zdarzenia
  • Czytelne identyfikatory: Zarządzaj subskrypcjami za pomocą czytelnych identyfikatorów funkcji
Obsługiwane typy zdarzeń
Typ zdarzenia Opis
AppFeatureBoardColumnExtension:deleteGdy rozszerzenie kolumny zostanie usunięte
AppFeatureBoardColumnExtension:duplicateGdy rozszerzenie kolumny zostanie zduplikowane
AppFeatureBoardColumnExtension:exportGdy rozszerzenie kolumny zostanie wyeksportowane
AppFeatureBoardView:deleteGdy widok tablicy zawierający funkcję aplikacji zostanie usunięty
AppFeatureBoardView:duplicateGdy widok tablicy zawierający funkcję aplikacji zostanie zduplikowany
AppFeatureBoardView:restoreGdy widok tablicy zawierający funkcję aplikacji zostanie przywrócony
AppFeatureColumn:createGdy zostanie utworzona kolumna niestandardowa
AppFeatureColumn:deleteGdy kolumna niestandardowa zostanie usunięta
AppFeatureObject:archiveGdy instancja obiektu niestandardowego zostanie zarchiwizowana
AppFeatureObject:createGdy zostanie utworzona instancja obiektu niestandardowego
AppFeatureObject:deleteGdy instancja obiektu niestandardowego zostanie usunięta
AppFeatureObject:duplicateGdy instancja obiektu niestandardowego zostanie zduplikowana
AppFeatureObject:importGdy obiekty niestandardowe zostaną zaimportowane
AppFeatureObject:publishGdy obiekt niestandardowy zostanie opublikowany
AppFeatureObject:restoreGdy instancja obiektu niestandardowego zostanie przywrócona z archiwum
AppFeatureObject:unpublishGdy obiekt niestandardowy przestanie być opublikowany
AppFeatureObject:update\_attributesGdy atrybuty obiektu niestandardowego zostaną zaktualizowane

Zapytania

Pobieranie subskrypcji cyklu życia aplikacji

  • Działa tylko w przypadku współpracowników aplikacji
  • Zwraca tablicę zawierającą metadane subskrypcji zdarzeń cyklu życia na poziomie funkcji aplikacji
  • Można je wykonać tylko bezpośrednio na poziomie głównym; nie można zagnieżdżać go w innym zapytaniu
query {
  get_app_lifecycle_subscriptions(app_id: "123", version_id: "456") {
    id
    entity_id
    event_type
    webhook_url
    is_sync
  }
}

Argumenty

Argument Typ Opis
app_id ID! Unikatowy identyfikator aplikacji.
version_id ID Unikatowy identyfikator wersji aplikacji. Jeśli go nie podasz, zostanie zwrócona aktywna wersja.

Pola

Pole Typ Opis
created_at Date Data utworzenia subskrypcji.
entity_id ID Unikatowy identyfikator encji lub jej pełny slug.
entity_type String Typ encji (np. "appFeature").
event_type String Typ zdarzenia cyklu życia (np. "AppFeatureColumn:create"). Pełną listę obsługiwanych typów zdarzeń znajdziesz powyżej.
id ID Unikatowy identyfikator subskrypcji.
is_sync Boolean Informacja, czy obsługa zdarzenia przez aplikację jest synchroniczna.
updated_at Date Data ostatniej aktualizacji subskrypcji.
webhook_url String Adres URL webhooka, na który wysyłane są powiadomienia.

Mutacje

  • Typy zdarzeń muszą pasować do typu funkcji aplikacji. Na przykład nie możesz subskrybować zdarzeń AppFeatureObject:create dla funkcji aplikacji będącej widokiem tablicy.
  • :construction: Nie możesz usuwać subskrypcji dla aktywnych wersji aplikacji.

Aktualizowanie subskrypcji cyklu życia aplikacji

Aktualizuje konfiguracje wszystkich istniejących subskrypcji. Zwraca [LifecycleSubscriptionKind!].

mutation {
  update_app_lifecycle_subscription(
    entity_identifier: "my-app::my-object-feature"
    entity_type: "appFeature"
    input: {
      lifecycle_events: [
        {
          event_type: "AppFeatureObject:create"
          webhook_url: "https://myapp.com/webhooks/lifecycle"
          is_sync: false
        }
        {
          event_type: "AppFeatureObject:delete"
          webhook_url: "https://myapp.com/webhooks/lifecycle"
          is_sync: false
        }
        {
          event_type: "AppFeatureObject:update_attributes"
          webhook_url: "https://myapp.com/webhooks/lifecycle"
          is_sync: true
        }
      ]
    }
  ) {
    id
    event_type
    webhook_url
    is_sync
  }
}

Argumenty

Argument Typ Opis
entity_identifier ID! Unikatowy identyfikator encji lub jej pełny slug (np. app_slug::feature_slug). Jeśli użyjesz sluga, żądanie zostanie zastosowane do rozpoznanej aktywnej wersji aplikacji.
entity_type String! Typ encji. Obecnie obsługiwana jest tylko wartość appFeature.
input UpdateLifecycleSubscriptionsInput! Dane wejściowe konfiguracji zdarzeń cyklu życia encji.

Gdy używasz pełnego sluga aplikacji, API automatycznie ustala, której wersji aplikacji dotyczy żądanie.

  • Jeśli aktywna wersja jest wersją roboczą, żądanie zostanie zastosowane do tej wersji.
  • Jeśli aktywna wersja nie jest włączona do edycji (czyli nie jest wersją roboczą), żądanie zostanie zastosowane do aktywnej wersji.
  • Jeśli nie ma aktywnej wersji, żądanie zostanie zastosowane do najnowszej wersji roboczej.

Usuwanie subskrypcji cyklu życia aplikacji

Usuwa wszystkie subskrypcje cyklu życia aplikacji. Zwraca wartość Boolean informującą, czy usunięcie się powiodło, czy też nie istnieją żadne subskrypcje.

mutation {
  delete_app_lifecycle_subscription(
    entity_identifier: "my-app::my-object-feature"
    entity_type: "appFeature"
  )
}

Argumenty

Argument Typ Opis
entity_identifier String Unikatowy identyfikator encji lub jej pełny slug (np. app_slug::feature_slug). Jeśli użyjesz sluga, usunięta zostanie aktywna wersja.
entity_type String Typ encji. Obecnie obsługiwana jest tylko wartość appFeature.

Przepływ zdarzeń

Po skonfigurowaniu subskrypcji zdarzeń cyklu życia na poziomie funkcji za pomocą API poniższy przepływ odbywa się za każdym razem, gdy zostanie wywołane subskrybowane zdarzenie.

sequenceDiagram
    participant MondayPlatform as monday platform
    participant MondayAppsService as monday app service
    participant YourApp as Your app

    MondayPlatform->>MondayAppsService: Lifecycle event triggered
    MondayAppsService->>MondayAppsService: Look up subscription
    MondayAppsService->>YourApp: POST to webhook URL

    alt Sync Mode (is_sync: true)
        YourApp-->>MondayAppsService: HTTP 200 (success) or 4XX (failure)
        MondayAppsService->>MondayPlatform: Notify result
        Note right of MondayPlatform: Update UI
    else Async Mode (is_sync: false)
        YourApp-->>MondayAppsService: HTTP 202 (acknowledged)
        Note right of YourApp: Process event...
        YourApp->>MondayAppsService: POST to back_to_url with result
        MondayAppsService->>MondayPlatform: Notify result
        Note right of MondayPlatform: Update UI
    end

Zabezpieczenia webhooka

Wszystkie żądania webhook związane ze zdarzeniami cyklu życia na poziomie funkcji są uwierzytelniane za pomocą tokenu JWT podpisanego tajnym kluczem aplikacji.

Twój serwer musi zweryfikować token JWT w każdym żądaniu, aby potwierdzić, że zostało wysłane przez monday.com. Otrzymanie danych bez weryfikacji podpisu nie gwarantuje, że żądanie jest autentyczne.

Żądanie webhook

Gdy zostanie wywołane subskrybowane zdarzenie na poziomie funkcji, monday.com wysyła żądanie POST na skonfigurowany adres URL webhooka.

Nagłówki

  • Authorization: JWT podpisany tajnym kluczem aplikacji (służy do potwierdzenia, że żądanie pochodzi od monday)
  • Content-Type: application/json
  • X-Apps-Event-Id: Unikatowy identyfikator zdarzenia do śledzenia

Treść żądania

json { "type": "AppFeatureObject:create", "payload": { // Event-specific data }, "accountId": 12345, "userId": 67890, "back_to_url": "https://monday-apps-ms.monday.com/api/webhooks/response/{jobId}" }

Weryfikowanie żądania webhook

Aby upewnić się, że żądanie zostało wysłane przez monday.com:

  1. Pobierz token JWT z nagłówka Authorization.
  2. Zweryfikuj podpis tokenu JWT za pomocą tajnego klucza aplikacji.
  3. Odrzuć żądanie, jeśli weryfikacja się nie powiedzie.

Więcej informacji o nagłówku Authorization znajdziesz tutaj.

Tryb synchroniczny i asynchroniczny

Każde zdarzenie cyklu życia na poziomie funkcji można obsługiwać niezależnie, synchronicznie lub asynchronicznie.

Tryb asynchroniczny

  • Odpowiedz kodem HTTP 202, aby potwierdzić otrzymanie żądania
  • Przetwórz zdarzenie w tle
  • Wywołaj back\_to\_url po zakończeniu przetwarzania
<p><strong>Przykład odpowiedzi asynchronicznej</strong></p>

```bash
curl -X POST "{back_to_url}" \
  -H "Content-Type: application/json" \
  -d '{"success": true}'
```

<p><strong>Najlepszy wybór w przypadku:</strong> złożonych obliczeń, wywołań zewnętrznych interfejsów API, operacji na bazach danych i przetwarzania plików</p>

Tryb synchroniczny

  • Odpowiedz od razu kodem HTTP 200 (sukces) lub 4XX (błąd)
  • Wybierz ten tryb, gdy przetwarzanie jest szybkie i wymaga natychmiastowej informacji zwrotnej
<p>
  <strong>Najlepszy wybór w przypadku:</strong> prostych walidacji, szybkich przekształceń danych i natychmiastowych odpowiedzi o błędach
</p>

Tryb asynchroniczny

  • Odpowiedz kodem HTTP 202, aby potwierdzić otrzymanie żądania
  • Przetwórz zdarzenie w tle
  • Wywołaj back\_to\_url po zakończeniu przetwarzania
<p><strong>Przykład odpowiedzi asynchronicznej</strong></p>

```bash
curl -X POST "{back_to_url}" \
  -H "Content-Type: application/json" \
  -d '{"success": true}'
```

<p><strong>Najlepszy wybór w przypadku:</strong> złożonych obliczeń, wywołań zewnętrznych interfejsów API, operacji na bazach danych i przetwarzania plików</p>

Tryb synchroniczny

  • Odpowiedz od razu kodem HTTP 200 (sukces) lub 4XX (błąd)
  • Wybierz ten tryb, gdy przetwarzanie jest szybkie i wymaga natychmiastowej informacji zwrotnej
<p>
  <strong>Najlepszy wybór w przypadku:</strong> prostych walidacji, szybkich przekształceń danych i natychmiastowych odpowiedzi o błędach
</p>