| title | Azure API Management policy reference - publish-event | Microsoft Docs |
|---|---|
| description | Reference for the publish-event policy available for use in Azure API Management. Provides policy usage, settings, and examples. |
| services | api-management |
| author | dlepow |
| ms.service | azure-api-management |
| ms.topic | reference |
| ms.date | 07/23/2024 |
| ms.author | danlep |
[!INCLUDE api-management-availability-all-tiers]
The publish-event policy publishes an event to one or more subscriptions specified in a GraphQL API schema. Configure the policy in a GraphQL resolver for a related field in the schema for another operation type such as a mutation. At runtime, the event is published to connected GraphQL clients. Learn more about GraphQL APIs in API Management.
[!INCLUDE api-management-policy-generic-alert]
<http-data-source>
<!-- http-data-source is an example resolver policy -->
<http-request>
[...]
</http-request>
<http-response>
[...]
<publish-event>
<targets>
<graphql-subscription id="subscription field" />
</targets>
</publish-event>
</http-response>
</http-data-source>| Name | Description | Required |
|---|---|---|
| targets | One or more subscriptions in the GraphQL schema, specified in target subelements, to which the event is published. |
Yes |
- Policy sections:
http-responseelement inhttp-data-sourceresolver - Policy scopes: GraphQL resolver only
- Gateways: classic, v2, consumption
- This policy is invoked only when a related GraphQL query or mutation is executed.
- Resolver should not be defined for the corresponding subscription. Defining a
publish-eventpolicy on a source query or mutation is sufficient to trigger subscription events.
The following example policy definition is configured in a resolver for the createUser mutation. It publishes an event to the onUserCreated subscription.
type User {
id: Int!
name: String!
}
type Mutation {
createUser(id: Int!, name: String!): User
}
type Subscription {
onUserCreated: User!
}
<http-data-source>
<http-request>
<set-method>POST</set-method>
<set-url>https://contoso.com/api/user</set-url>
<set-body template="liquid">{ "id" : {{body.arguments.id}}, "name" : "{{body.arguments.name}}"}</set-body>
</http-request>
<http-response>
<publish-event>
<targets>
<graphql-subscription id="onUserCreated" />
</targets>
</publish-event>
</http-response>
</http-data-source>[!INCLUDE api-management-policy-ref-next-steps]