import { componentName } from '@redocly/developer-portal/ui'; import { OpenApiTryIt, Alert, ExplainStep, scrollToHeading } from '@redocly/developer-portal/ui'; # Quickstart ### Prerequisites Before you begin, make sure you have completed the [Getting Started](/getting-started) guide — you'll need your `CLIENT_ID` and `CLIENT_SECRET`, and a valid access token. You will also need: - A company id. ## Step 1 ### Set up your webhook endpoint. Create service with a public webhook endpoint. details summary Show example code (C#) #### 1. Create a new Web API project #### 2. Add Azure.Messaging.EventGrid package to project ```csharp dotnet add package Azure.Messaging.EventGrid ``` #### 3. Add ZData.Events.Bank package to project ```csharp dotnet add package ZData.Events.Bank ``` #### 4. Create Webhook controller ```csharp C# using Azure.Messaging.EventGrid; using Azure.Messaging.EventGrid.SystemEvents; using Microsoft.AspNetCore.Mvc; using ZData.Events.Bank; namespace WebhookTest.Controllers { [ApiController] [Route("webhooks")] public class WebhookController : ControllerBase { private readonly ILogger\ logger; public WebhookController(ILogger\ logger) { this.logger = logger; } [HttpPost("events")] public IActionResult HandleEvents(EventGridEvent[] events) { foreach (EventGridEvent eventGridEvent in events) { // Handle system events if (eventGridEvent.TryGetSystemEventData(out object eventData)) { // Handle the subscription validation event if (eventData is SubscriptionValidationEventData subscriptionValidationEventData) { var responseData = new SubscriptionValidationResponse() { ValidationResponse = subscriptionValidationEventData.ValidationCode }; return Ok(responseData); } } // 2. Check if event is an Aritma (ZData) event. if (eventGridEvent.EventType == typeof(SettlementReceived).FullName) { var settlementReceivedEvent = eventGridEvent.Data.ToObjectFromJson\(); // TODO: handle the event: logger.LogInformation(settlementReceivedEvent.BatchId.ToString()); } } return BadRequest(); } } } ``` ## Step 2 ### Create a new Event Subscription. { if (response.ok) { scrollTo(0, document.querySelector('#step-2').offsetTop - 20, { behavior: 'smooth' }) } }} /> ## Step 3 ### `GET` the status of your Event Subscription. ({ path: { companyId: step1.response.body.CompanyId, subscriptionName: step1.response.body.SubscriptionName } })} placeholder={(step1) => { if (!step1) { return ( Please complete Step 2 first. ); } }} securityDefaults={(step1) => console.log(step1)} />