# 2. GraphQL Subscription

The sequence diagram for GraphQL Subscriptions illustrates how to benefit from the event-driven architecture implemented in the GeoPard core. Upon any changes to the linked entities, the

GeoPard API promptly emits an event capturing the impacted entities and the corresponding operation (`INSERT`, `MODIFY`, `REMOVE`). The scope of these subscriptions is expansive, covering all entities such as Farm, Field, SatelliteImage, SoilDataset, AsAppliedDataset, YieldDataset, TopographyMap, Notes, etc.&#x20;

The GraphQL Subscription ([Request 1 or R1](https://docs.geopard.tech/geopard-tutorials/api-docs/requests-overview/1.-subscription-get-events)) operates on a WebSocket where all events are delivered in almost real-time, ensuring immediate communication of any changes.&#x20;

{% hint style="danger" %}
The receiver of the subscription events should function as a basic service, responsible for routing the received events to a subsequent service where processing logic is applied. It is crucial that this receiver doesn't perform any processing tasks itself.
{% endhint %}

Moreover, should there be any missed or lost events, users have the capability to retrieve them. This is achieved by executing a GraphQL query tailored for a specific date range and entities (User, Farm, Field), effectively enabling a complete recovery of past events ([Request 2 or R2](https://docs.geopard.tech/geopard-tutorials/api-docs/requests-overview/82.-query-restore-subscription-events)). This level of functionality ensures no information is lost, maintaining the integrity and consistency of user data.

<figure><img src="https://3272281156-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYICBELdyAXXebKAzfLOR%2Fuploads%2F8YoTw2Od4ykqav13zGp4%2Fimage.png?alt=media&#x26;token=f9ba66ec-8172-40c6-a3b6-36fc0ecbb24b" alt=""><figcaption><p>Sequence diagram: Workk with Subscription Events</p></figcaption></figure>
