Azure Eventgrid Java
MicrosoftOfficialCreated by Microsoft
- Skill
- Tool integration
- Cloud and DevOps
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The Azure Event Grid SDK for Java provides a comprehensive set of tools for building event-driven applications. It supports publishing events to Azure Event Grid topics and domains, as well as consuming events from Event Grid namespaces. The SDK offers both synchronous and asynchronous clients, supports multiple event schemas including native EventGridEvent and CNCF CloudEvents, and integrates with Azure Identity for secure authentication.
What it does
- Publish events using native EventGridEvent or CNCF CloudEvents schemas.
- Support for both synchronous and asynchronous event publishing patterns.
- Handle event consumption from Event Grid namespaces with acknowledgement, rejection, and release capabilities.
- Integrate with Azure Identity for secure, token-based authentication.
- Support custom event data classes using BinaryData serialization.
- Provide built-in error handling for HTTP-based communication with Azure services.
When to use it
- When building event-driven architectures on Azure using Java.
- When implementing pub/sub messaging patterns between microservices.
- When integrating custom applications with Azure service events.
- When you need to handle high-throughput event ingestion or processing.
Advantages
- Native support for industry-standard CloudEvents specification.
- Flexible authentication options including AzureKeyCredential and DefaultAzureCredential.
- Efficient batch publishing capabilities to optimize network usage.
- Strongly-typed event handling for system and custom events.
Usage examples
- “How do I publish a simple EventGridEvent using the Java SDK?”
- The agent provides a code snippet demonstrating the instantiation of an EventGridPublisherClient, the creation of an EventGridEvent object with subject and data, and the call to sendEvent.
- “Show me how to receive and acknowledge events from an Event Grid namespace.”
- The agent provides an example using EventGridReceiverClient to receive events, iterate through them, and call the acknowledge method using the lock token.
- “How can I use DefaultAzureCredential with the Event Grid client?”
- The agent demonstrates configuring the EventGridPublisherClientBuilder with a DefaultAzureCredentialBuilder to enable secure, passwordless authentication.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/microsoft/azure-eventgrid-java/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-eventgrid-java.zip -d .agents/skills
Documentation by Microsoft
Azure Event Grid SDK for Java
Build event-driven applications using the Azure Event Grid SDK for Java.
Installation
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventgrid</artifactId>
<version>4.27.0</version>
</dependency>Client Creation
EventGridPublisherClient
import com.azure.messaging.eventgrid.EventGridPublisherClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import com.azure.core.credential.AzureKeyCredential;
// With API Key
EventGridPublisherClient<EventGridEvent> client = new EventGridPublisherClientBuilder()
.endpoint("<topic-endpoint>")
.credential(new AzureKeyCredential("<access-key>"))
.buildEventGridEventPublisherClient();
// For CloudEvents
EventGridPublisherClient<CloudEvent> cloudClient = new EventGridPublisherClientBuilder()
.endpoint("<topic-endpoint>")
.credential(new AzureKeyCredential("<access-key>"))
.buildCloudEventPublisherClient();With DefaultAzureCredential
import com.azure.core.credential.TokenCredential;
import com.azure.identity.AzureIdentityEnvVars;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
TokenCredential credential = new DefaultAzureCredentialBuilder()
.requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)
.build();
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/java/api/overview/azure/identity-readme?view=azure-java-stable#credential-classes
// TokenCredential credential = new ManagedIdentityCredentialBuilder().build();
EventGridPublisherClient<EventGridEvent> client = new EventGridPublisherClientBuilder()
.endpoint("<topic-endpoint>")
.credential(credential)
.buildEventGridEventPublisherClient();Async Client
import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient;
EventGridPublisherAsyncClient<EventGridEvent> asyncClient = new EventGridPublisherClientBuilder()
.endpoint("<topic-endpoint>")
.credential(new AzureKeyCredential("<access-key>"))
.buildEventGridEventPublisherAsyncClient();Event Types
| Type | Description |
|---|---|
EventGridEvent | Azure Event Grid native schema |
CloudEvent | CNCF CloudEvents 1.0 specification |
BinaryData | Custom schema events |
Core Patterns
Publish EventGridEvent
import com.azure.messaging.eventgrid.EventGridEvent;
import com.azure.core.util.BinaryData;
EventGridEvent event = new EventGridEvent(
"resource/path", // subject
"MyApp.Events.OrderCreated", // eventType
BinaryData.fromObject(new OrderData("order-123", 99.99)), // data
"1.0" // dataVersion
);
client.sendEvent(event);Publish Multiple Events
List<EventGridEvent> events = Arrays.asList(
new EventGridEvent("orders/1", "Order.Created",
BinaryData.fromObject(order1), "1.0"),
new EventGridEvent("orders/2", "Order.Created",
BinaryData.fromObject(order2), "1.0")
);
client.sendEvents(events);Publish CloudEvent
import com.azure.core.models.CloudEvent;
import com.azure.core.models.CloudEventDataFormat;
CloudEvent cloudEvent = new CloudEvent(
"/myapp/orders", // source
"order.created", // type
BinaryData.fromObject(orderData), // data
CloudEventDataFormat.JSON // dataFormat
);
cloudEvent.setSubject("orders/12345");
cloudEvent.setId(UUID.randomUUID().toString());
cloudClient.sendEvent(cloudEvent);Publish CloudEvents Batch
List<CloudEvent> cloudEvents = Arrays.asList(
new CloudEvent("/app", "event.type1", BinaryData.fromString("data1"), CloudEventDataFormat.JSON),
new CloudEvent("/app", "event.type2", BinaryData.fromString("data2"), CloudEventDataFormat.JSON)
);
cloudClient.sendEvents(cloudEvents);Async Publishing
asyncClient.sendEvent(event)
.subscribe(
unused -> System.out.println("Event sent successfully"),
error -> System.err.println("Error: " + error.getMessage())
);
// With multiple events
asyncClient.sendEvents(events)
.doOnSuccess(unused -> System.out.println("All events sent"))
.doOnError(error -> System.err.println("Failed: " + error))
.block(); // Block if neededCustom Event Data Class
public class OrderData {
private String orderId;
private double amount;
private String customerId;
public OrderData(String orderId, double amount) {
this.orderId = orderId;
this.amount = amount;
}
// Getters and setters
}
// Usage
OrderData order = new OrderData("ORD-123", 150.00);
EventGridEvent event = new EventGridEvent(
"orders/" + order.getOrderId(),
"MyApp.Order.Created",
BinaryData.fromObject(order),
"1.0"
);Receiving Events
Parse EventGridEvent
import com.azure.messaging.eventgrid.EventGridEvent;
// From JSON string (e.g., webhook payload)
String jsonPayload = "[{\"id\": \"...\", ...}]";
List<EventGridEvent> events = EventGridEvent.fromString(jsonPayload);
for (EventGridEvent event : events) {
System.out.println("Event Type: " + event.getEventType());
System.out.println("Subject: " + event.getSubject());
System.out.println("Event Time: " + event.getEventTime());
// Get data
BinaryData data = event.getData();
OrderData orderData = data.toObject(OrderData.class);
}Parse CloudEvent
import com.azure.core.models.CloudEvent;
String cloudEventJson = "[{\"specversion\": \"1.0\", ...}]";
List<CloudEvent> cloudEvents = CloudEvent.fromString(cloudEventJson);
for (CloudEvent event : cloudEvents) {
System.out.println("Type: " + event.getType());
System.out.println("Source: " + event.getSource());
System.out.println("ID: " + event.getId());
MyEventData data = event.getData().toObject(MyEventData.class);
}Handle System Events
import com.azure.messaging.eventgrid.systemevents.*;
for (EventGridEvent event : events) {
if (event.getEventType().equals("Microsoft.Storage.BlobCreated")) {
StorageBlobCreatedEventData blobData =
event.getData().toObject(StorageBlobCreatedEventData.class);
System.out.println("Blob URL: " + blobData.getUrl());
}
}Event Grid Namespaces (MQTT/Pull)
Receive from Namespace Topic
import com.azure.messaging.eventgrid.namespaces.EventGridReceiverClient;
import com.azure.messaging.eventgrid.namespaces.EventGridReceiverClientBuilder;
import com.azure.messaging.eventgrid.namespaces.models.*;
EventGridReceiverClient receiverClient = new EventGridReceiverClientBuilder()
.endpoint("<namespace-endpoint>")
.credential(new AzureKeyCredential("<key>"))
.topicName("my-topic")
.subscriptionName("my-subscription")
.buildClient();
// Receive events
ReceiveResult result = receiverClient.receive(10, Duration.ofSeconds(30));
for (ReceiveDetails detail : result.getValue()) {
CloudEvent event = detail.getEvent();
System.out.println("Event: " + event.getType());
// Acknowledge the event
receiverClient.acknowledge(Arrays.asList(detail.getBrokerProperties().getLockToken()));
}Reject or Release Events
// Reject (don't retry)
receiverClient.reject(Arrays.asList(lockToken));
// Release (retry later)
receiverClient.release(Arrays.asList(lockToken));
// Release with delay
receiverClient.release(Arrays.asList(lockToken),
new ReleaseOptions().setDelay(ReleaseDelay.BY_60_SECONDS));Error Handling
import com.azure.core.exception.HttpResponseException;
try {
client.sendEvent(event);
} catch (HttpResponseException e) {
System.out.println("Status: " + e.getResponse().getStatusCode());
System.out.println("Error: " + e.getMessage());
}Environment Variables
EVENT_GRID_TOPIC_ENDPOINT=https://<topic-name>.<region>.eventgrid.azure.net/api/events # Required for all auth methods
EVENT_GRID_ACCESS_KEY=<your-access-key> # Only required for AzureKeyCredential auth
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in productionBest Practices
Batch Events: Send multiple events in one call when possible
Idempotency: Include unique event IDs for deduplication
Schema Validation: Use strongly-typed event data classes
Retry Logic: Built-in, but consider dead-letter for failures
Event Size: Keep events under 1MB (64KB for basic tier)
Trigger Phrases
"Event Grid Java"
"publish events Azure"
"CloudEvent SDK"
"event-driven messaging"
"pub/sub Azure"
"webhook events"
Files
- ATTRIBUTION.mdAdded by AutoGineer967 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md9.0 KiB
- references/examples.md13.9 KiB
references/examples.md
Azure Event Grid SDK for Java - Examples
Comprehensive code examples for the Azure Event Grid SDK for Java.
Table of Contents
Maven Dependency
Client Creation
Publishing CloudEvents
Publishing EventGridEvents
Publishing Custom Events
Async Client Patterns
Batch Publishing
Error Handling
Maven Dependency
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventgrid</artifactId>
<version>4.32.0-beta.1</version>
</dependency>
<!-- For DefaultAzureCredential authentication -->
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.18.2</version>
</dependency>Client Creation
Sync Client with DefaultAzureCredential
import com.azure.core.models.CloudEvent;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.messaging.eventgrid.EventGridPublisherClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
EventGridPublisherClient<CloudEvent> cloudEventClient = new EventGridPublisherClientBuilder()
.endpoint("<endpoint of your event grid topic/domain that accepts CloudEvent schema>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildCloudEventPublisherClient();Async Client with DefaultAzureCredential
import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient;
EventGridPublisherAsyncClient<CloudEvent> cloudEventAsyncClient = new EventGridPublisherClientBuilder()
.endpoint("<endpoint of your event grid topic/domain that accepts CloudEvent schema>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildCloudEventPublisherAsyncClient();Client with AzureKeyCredential
import com.azure.core.credential.AzureKeyCredential;
EventGridPublisherClient<CloudEvent> client = new EventGridPublisherClientBuilder()
.endpoint(System.getenv("AZURE_EVENTGRID_CLOUDEVENT_ENDPOINT"))
.credential(new AzureKeyCredential(System.getenv("AZURE_EVENTGRID_CLOUDEVENT_KEY")))
.buildCloudEventPublisherClient();Publishing CloudEvents
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.models.CloudEvent;
import com.azure.core.models.CloudEventDataFormat;
import com.azure.core.util.BinaryData;
import com.azure.messaging.eventgrid.EventGridPublisherClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
public class PublishCloudEventsToTopic {
public static void main(String[] args) {
EventGridPublisherClient<CloudEvent> publisherClient = new EventGridPublisherClientBuilder()
.endpoint(System.getenv("AZURE_EVENTGRID_CLOUDEVENT_ENDPOINT"))
.credential(new AzureKeyCredential(System.getenv("AZURE_EVENTGRID_CLOUDEVENT_KEY")))
.buildCloudEventPublisherClient();
// CloudEvent with String data
String str = "FirstName: John1, LastName:James";
CloudEvent cloudEventStr = new CloudEvent("https://com.example.myapp", "User.Created.Text",
BinaryData.fromObject(str), CloudEventDataFormat.JSON, "text/plain");
// CloudEvent with Object data
User newUser = new User("John2", "James");
CloudEvent cloudEventModel = new CloudEvent("https://com.example.myapp", "User.Created.Object",
BinaryData.fromObject(newUser), CloudEventDataFormat.JSON, "application/json");
// CloudEvent with bytes data
byte[] byteSample = "FirstName: John3, LastName: James".getBytes(StandardCharsets.UTF_8);
CloudEvent cloudEventBytes = new CloudEvent("https://com.example.myapp", "User.Created.Binary",
BinaryData.fromBytes(byteSample), CloudEventDataFormat.BYTES, "application/octet-stream");
// CloudEvent with extension attributes
CloudEvent cloudEventWithExtension = cloudEventBytes.addExtensionAttribute("extension", "value");
// Send batch
List<CloudEvent> events = new ArrayList<>();
events.add(cloudEventStr);
events.add(cloudEventModel);
events.add(cloudEventBytes);
events.add(cloudEventWithExtension);
publisherClient.sendEvents(events);
}
}Publishing EventGridEvents
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.messaging.eventgrid.EventGridEvent;
import com.azure.messaging.eventgrid.EventGridPublisherClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import java.util.ArrayList;
import java.util.List;
public class PublishEventGridEventsToTopic {
public static void main(String[] args) {
EventGridPublisherClient<EventGridEvent> publisherClient = new EventGridPublisherClientBuilder()
.endpoint(System.getenv("AZURE_EVENTGRID_EVENT_ENDPOINT"))
.credential(new AzureKeyCredential(System.getenv("AZURE_EVENTGRID_EVENT_KEY")))
.buildEventGridEventPublisherClient();
// EventGridEvent with String data
String str = "FirstName: John1, LastName: James";
EventGridEvent eventJson = new EventGridEvent(
"com/example/MyApp", // subject
"User.Created.Text", // eventType
BinaryData.fromObject(str), // data
"0.1" // dataVersion
);
// EventGridEvent with Object data
User newUser = new User("John2", "James");
EventGridEvent eventModelClass = new EventGridEvent(
"com/example/MyApp",
"User.Created.Object",
BinaryData.fromObject(newUser),
"0.1"
);
List<EventGridEvent> events = new ArrayList<>();
events.add(eventJson);
events.add(eventModelClass);
publisherClient.sendEvents(events);
}
}Publishing Custom Events
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.messaging.eventgrid.EventGridPublisherClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
public class PublishCustomEvents {
public static void main(String[] args) {
// Create custom event publisher client
EventGridPublisherClient<BinaryData> customEventClient = new EventGridPublisherClientBuilder()
.endpoint("<endpoint of your event grid topic/domain that accepts custom event schema>")
.credential(new AzureKeyCredential("<key for the endpoint>"))
.buildCustomEventPublisherClient();
// Build custom event as a map
List<BinaryData> events = new ArrayList<>();
events.add(BinaryData.fromObject(new HashMap<String, String>() {
{
put("id", UUID.randomUUID().toString());
put("time", OffsetDateTime.now().toString());
put("subject", "Test");
put("foo", "bar");
put("type", "Microsoft.MockPublisher.TestEvent");
put("data", "example data");
put("dataVersion", "0.1");
}
}));
customEventClient.sendEvents(events);
}
}Async Client Patterns
Async CloudEvent Publishing
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.models.CloudEvent;
import com.azure.core.models.CloudEventDataFormat;
import com.azure.core.util.BinaryData;
import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
public class PublishCloudEventsAsynchronously {
public static void main(String[] args) throws Exception {
EventGridPublisherAsyncClient<CloudEvent> publisherClient = new EventGridPublisherClientBuilder()
.endpoint(System.getenv("AZURE_EVENTGRID_CLOUDEVENT_ENDPOINT"))
.credential(new AzureKeyCredential(System.getenv("AZURE_EVENTGRID_CLOUDEVENT_KEY")))
.buildCloudEventPublisherAsyncClient();
// Create CloudEvents
User newUser = new User("John2", "James");
CloudEvent cloudEventModel = new CloudEvent("https://com.example.myapp", "User.Created.Object",
BinaryData.fromObject(newUser), CloudEventDataFormat.JSON, "application/json");
byte[] byteSample = "FirstName: John3, LastName: James".getBytes(StandardCharsets.UTF_8);
CloudEvent cloudEventBytes = new CloudEvent("https://com.example.myapp", "User.Created.Binary",
BinaryData.fromBytes(byteSample), CloudEventDataFormat.BYTES, "application/octet-stream");
List<CloudEvent> events = new ArrayList<>();
events.add(cloudEventModel);
events.add(cloudEventBytes);
// Non-blocking send with subscribe()
publisherClient.sendEvents(events)
.subscribe(
unused -> System.out.println("Events sent successfully"),
error -> System.err.println("Error sending events: " + error.getMessage()),
() -> System.out.println("Send operation completed")
);
// Keep application alive for async operation
Thread.sleep(5000);
}
}Async EventGridEvent Publishing
import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.messaging.eventgrid.EventGridEvent;
import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import java.util.ArrayList;
import java.util.List;
public class PublishEventGridEventsAsynchronously {
public static void main(String[] args) throws Exception {
EventGridPublisherAsyncClient<EventGridEvent> publisherClient = new EventGridPublisherClientBuilder()
.endpoint(System.getenv("AZURE_EVENTGRID_EVENT_ENDPOINT"))
.credential(new AzureKeyCredential(System.getenv("AZURE_EVENTGRID_EVENT_KEY")))
.buildEventGridEventPublisherAsyncClient();
String str = "FirstName: John1, LastName: James";
EventGridEvent eventJson = new EventGridEvent("com/example/MyApp", "User.Created.Text",
BinaryData.fromObject(str), "0.1");
User newUser = new User("John2", "James");
EventGridEvent eventModelClass = new EventGridEvent("com/example/MyApp", "User.Created.Object",
BinaryData.fromObject(newUser), "0.1");
List<EventGridEvent> events = new ArrayList<>();
events.add(eventJson);
events.add(eventModelClass);
// Non-blocking send
publisherClient.sendEvents(events)
.subscribe();
Thread.sleep(5000);
}
}Batch Publishing
All sendEvents() methods accept a List and publish as a batch:
// CloudEvents batch
List<CloudEvent> cloudEvents = new ArrayList<>();
cloudEvents.add(event1);
cloudEvents.add(event2);
cloudEvents.add(event3);
publisherClient.sendEvents(cloudEvents);
// EventGridEvents batch
List<EventGridEvent> gridEvents = new ArrayList<>();
gridEvents.add(gridEvent1);
gridEvents.add(gridEvent2);
publisherClient.sendEvents(gridEvents);
// Custom events batch
List<BinaryData> customEvents = new ArrayList<>();
customEvents.add(BinaryData.fromObject(customEvent1));
customEvents.add(BinaryData.fromObject(customEvent2));
customEventClient.sendEvents(customEvents);Error Handling
import com.azure.core.exception.HttpResponseException;
import com.azure.core.models.CloudEvent;
import com.azure.messaging.eventgrid.EventGridPublisherClient;
public class EventGridErrorHandling {
public static void main(String[] args) {
EventGridPublisherClient<CloudEvent> client = /* create client */;
try {
client.sendEvents(events);
} catch (HttpResponseException e) {
System.err.println("HTTP Status Code: " + e.getResponse().getStatusCode());
System.err.println("Error Message: " + e.getMessage());
// Handle specific status codes
int statusCode = e.getResponse().getStatusCode();
if (statusCode == 401 || statusCode == 403) {
System.err.println("Authentication/Authorization error");
} else if (statusCode == 404) {
System.err.println("Topic/Domain not found");
} else if (statusCode >= 500) {
System.err.println("Server error - consider retry");
}
} catch (Exception e) {
System.err.println("Unexpected error: " + e.getMessage());
}
}
}Async Error Handling
publisherClient.sendEvents(events)
.subscribe(
unused -> System.out.println("Success"),
error -> {
if (error instanceof HttpResponseException) {
HttpResponseException httpError = (HttpResponseException) error;
System.err.println("HTTP error: " + httpError.getResponse().getStatusCode());
} else {
System.err.println("Error: " + error.getMessage());
}
},
() -> System.out.println("Completed")
);Helper Class
public class User {
private String firstName;
private String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() { return firstName; }
public void setFirstName(String firstName) { this.firstName = firstName; }
public String getLastName() { return lastName; }
public void setLastName(String lastName) { this.lastName = lastName; }
}Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/azure-sdk-java/skills/azure-eventgrid-java · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Microsoft or Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-eventgrid-java.zip