Webhook Event Management
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Application metadata provides human-readable information about a client application. Client applications are provisioned in two ways:
- Vertex Internal Provisioning: For multi-tenant applications.
- Customer Provisioning: For single-tenant applicatons using Cloud Portal Credentials MFE
Key Considerations:
- The system generated id must be based on client application id defined in the bearer token
- Deletion of application metadata for applications with active event catalog entries and subscriptions must be prevented
Client applications are provisioned in two ways:
- Vertex Internal Provisioning: For multi-tenant applications.
- Customer Provisioning: For single-tenant applicatons using Cloud Portal Credentials MFE
Vertex E-Invoicing Integration Service
This identifier denotes a customer organization’s segment environment and is for informational purposes only. For tenant-specific client applications provisioned via the Vertex Cloud Credentials MFE, it directly maps to the tenant.id or organization.segment.environment.id field in the profile endpoint response. However, this attribute is not applicable to Vertex-managed client applications.
Client applications SHALL be able to register their metadata. These operations SHALL be available to applications possessing the cpe-webhooks-ing and profile scopes.
{id}
{id}
{id}
Authentication
Create metadata for client application identified by its m2m client id in the decoded bearer token.
Request body
Responses
POST https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata HTTP/1.1
Content-Type: application/json
{
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"orgAccountId": "7fe54d67-1696-45ac-82cb-f2f24c4443a3",
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
POST https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata HTTP/1.1
Content-Type: application/json
{
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
HTTP/1.1 401 Unauthorized
POST https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata HTTP/1.1
Content-Type: application/json
{
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
HTTP/1.1 403 Forbidden
POST https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata HTTP/1.1
Content-Type: application/json
{
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
HTTP/1.1 400 Bad Request
Multiple post request by same client application
POST https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata HTTP/1.1
Content-Type: application/json
{
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
HTTP/1.1 409 Conflict
{id}
Authentication
Path variables
Responses
Ok
GET https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"orgAccountId": "7fe54d67-1696-45ac-82cb-f2f24c4443a3",
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
{id}
Authentication
Path variables
Request body
Responses
PUT https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
Content-Type: application/json
{
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"orgAccountId": "7fe54d67-1696-45ac-82cb-f2f24c4443a3",
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
{id}
Authentication
Deletion of application metadata with active event catalog entries and subcriptons should be prevented.
Path variables
Responses
Ok
DELETE https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
HTTP/1.1 204 No Content
Authentication
Client applications possessing the cpe-webhooks-sys
scope SHALL have read access to all application metadata.
Request parameters
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Responses
Body
GET https://eventwebhooks.vertexcloud.com/api/v1/applicationmetadata HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"content": [
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"orgAccountId": "7fe54d67-1696-45ac-82cb-f2f24c4443a3",
"name": "Vertex E-Invoicing",
"description": "Vertex E-Invoicing Service",
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
]
}
]
}
Applicaton defined tags that can be used for subscription and event filtering criteria
The Cloud Portal Tools MFE for webhooks SHALL use this attribute to filter out events that aren’t publicly subscribable. Setting it to false indicates internal usage.
This will be used for testing subscription endpoints during configuration.
This readonly property serves as a key for discovering event types by linking them to specific products. On the Webhooks MFE screen, this information is leveraged to show customers only the event types relevant to their product feature code entitlements. For example:
- 1199 represents Connectors
- 1200 represents einvoicing events
- 100 represents OSeries events
- 1200,1199 represents einvoicing Connectors
- 100,1199 represents OSeries Connectors
This value is evaluated from the client applications scope that is prefixed with platformFeatureCodes::<value>
Client applications SHALL be able to register application event types. These operations SHALL be accessible to applications possessing the cpe-webhooks-ing scope.
{id}
{id}
Authentication
Key Considerations:
- Event type creation must fail for client application without any application metadata.
- Event type names prefixed with system. are reserved and SHALL be prevented by the API.
- Event type name and version must be globally unique across all applications.
Request body
Responses
Body
POST https://eventwebhooks.vertexcloud.com/api/v1/eventtypes HTTP/1.1
Content-Type: application/json
{
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true"
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
{id}
Authentication
Path variables
Responses
Body
GET https://eventwebhooks.vertexcloud.com/api/v1/eventtypes/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
{id}
Authentication
Deletetion of event types for applications with active subscriptions must be prevented.
Path variables
Responses
DELETE https://eventwebhooks.vertexcloud.com/api/v1/eventtypes/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
HTTP/1.1 204 No Content
Authentication
Request parameters
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Responses
Body
GET https://eventwebhooks.vertexcloud.com/api/v1/eventtypes HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"content": [
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
]
}
Access to these operations SHALL be granted to single-tenant client applications or users capable of event type subscriptions. The system SHALL use the profile
scope for authorization and identification of customer-managed client applications. Customer product feature entitlements will be matched against event type attributes to respond with applicable event type catalog entries.
Authentication
Request parameters
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Responses
Body
Response for a customer with entitlement to e invoicing product
GET https://eventwebhooks.vertexcloud.com/api/v1/orgaccounts/eventtypes HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"content": [
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
]
}
These operations SHALL be accessible to applications possessing the cpe-webhooks-sys scope.
Authentication
List event types across all applications.
Request parameters
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Responses
Body
Response for a customer with entitlement to e invoicing product
GET https://eventwebhooks.vertexcloud.com/api/v1/system/eventtypes HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"content": [
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
]
}
This is a Vertex Cloud-generated identifier for a customer organization’s segment environment, which groups product and feature entitlements. It maps to profile.tenant.id in existing systems and org.segment.environment.id in the new system.
The Cloud Portal Tools MFE for webhooks SHALL use this attribute to filter out event type subscriptions that aren’t directly managed by our customers. Setting it to false indicates internally managed subscriptions.
Events are delivered when all specified tags match.
Conditionally required for is HMAC_SHA256
security scheme
Conditionally required for is Basic Auth
security scheme
Conditionally required for is Basic Auth
security scheme
Conditionally required for is OAuth2
security scheme
Conditionally required for is OAuth2
security scheme
Conditionally required for is OAuth2
security scheme
Conditionally required for is OAuth2
security scheme
Conditionally required for is OAuth2
security scheme
Optional properties used for OAuth2 token generation. For example microsoft idP requires sending of resource key.
Additional headers to include during event delivery
{orgAccountId}
/eventtypes/{eventTypeId}
/subscriptions{orgAccountId}
/subscriptions/{id}
{orgAccountId}
/subscriptions/{id}
{orgAccountId}
/subscriptions/{id}
{orgAccountId}
/subscriptions{orgAccountId}
/eventtypes/{eventTypeId}
/subscriptionsAuthentication
-
Event Type and Version Validation: Invalid combinations of event type and version must be rejected during subscription creation or modification.
-
Uniqueness Constraints: Both the subscription name and the organization account ID must be globally unique across the system.
-
Subscription Mediation by Integration Components: An event producer or any integration component possessing the cpewh-event-source or cpewh-event-target scope is authorized to mediate a subscription. This mediation can be performed on behalf of a specific customer organization account (segment environment).
-
Customer User Subscription Creation: A customer organization user, when interacting with an application that has the profile scope, is permitted to create subscriptions that are specific to their organization account.
Path variables
Request body
Responses
Body
POST https://eventwebhooks.vertexcloud.com/api/v1/orgaccounts/827f71fc-97c2-492c-ae89-b807dada0046/eventtypes/c86fcc87-a137-4c37-8d19-17edc7199fef/subscriptions HTTP/1.1
Content-Type: application/json
{
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
}
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 2,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
},
"eventType": {
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
}
{orgAccountId}
/subscriptions/{id}
Authentication
Path variables
Request body
Responses
Body
PUT https://eventwebhooks.vertexcloud.com/api/v1/orgaccounts/827f71fc-97c2-492c-ae89-b807dada0046/subscriptions/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
Content-Type: application/json
{
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
},
"eventType": {
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
}
{orgAccountId}
/subscriptions/{id}
Authentication
Path variables
Request body
Responses
Body
GET https://eventwebhooks.vertexcloud.com/api/v1/orgaccounts/827f71fc-97c2-492c-ae89-b807dada0046/subscriptions/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
Content-Type: application/json
{
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
},
"eventType": {
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
}
{orgAccountId}
/subscriptions/{id}
Authentication
Path variables
Responses
GET https://eventwebhooks.vertexcloud.com/api/v1/orgaccounts/827f71fc-97c2-492c-ae89-b807dada0046/subscriptions/c86fcc87-a137-4c37-8d19-17edc7199fef HTTP/1.1
HTTP/1.1 204 No Content
{orgAccountId}
/subscriptionsAuthentication
Path variables
Request parameters
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Responses
Body
GET https://eventwebhooks.vertexcloud.com/api/v1/orgaccounts/827f71fc-97c2-492c-ae89-b807dada0046/subscriptions HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"content": [
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 2,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
},
"eventType": {
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
}
]
}
Authentication
This endpoint responds with subscriptions tied to the client application. The application’s ID is derived from the JWT bearer token’s subject and is also present as applicationmetadata.id within the webhook system.
Request parameters
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Responses
Body
GET https://eventwebhooks.vertexcloud.com/api/v1/applications/subscriptions HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"content": [
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
},
"eventType": {
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
}
]
}
Authentication
This endpoint responds with subscriptions tied to the client application. The application’s ID is derived from the JWT bearer token’s subject and is also present as applicationmetadata.id within the webhook system.
Request parameters
Multi value sort parameter used for paging across a large data set. The expected format is as follows when specified:
sortField,sortOrder
sortField can be any arbitrary field specific to the content that is being paged sortOrder is ASC or DESC. The sort order defaults to DESC when left unspecified.
A page can be sorted using multiple columns by providing multiple sort query parameters
pageSort=field1,ASC&pageSort=field2,DESC
Responses
Body
GET https://eventwebhooks.vertexcloud.com/api/v1/subscriptions HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"content": [
{
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"version": 1,
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "ms365ForJaneDoe",
"orgAccountId": "90483dc3-10da-4fc9-9d71-3ec1b37b8a90",
"status": "ENABLED",
"public": true,
"eventTags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"endpoint": {
"url": "https://jane.com/inbox",
"method": "POST",
"securityScheme": "OAUTH2",
"hmacSha256Secret": "",
"basicAuthUsername": "",
"basicAuthPassword": "",
"oauth2ClientId": "d3049b4c-8e7c-4a1f-a5f1-3b9d0b6c2a1e",
"oauth2ClientSecret": "_nS7yQzPp5RjF2hT8cVx9eYw0uIaLkBmCgDdEfGhIjKkL",
"oauth2Audience": "jane://einvoice-inbox",
"oauth2Scopes": "einvoice-notifications",
"oauth2TokenUrl": "https://auth0.jane.com/oauth/token",
"oauth2AdditionalProperties": {
"[...]": "resource-123"
},
"additionalHeaders": {
"[...]": "janeCoLegalEntity1"
}
},
"eventType": {
"id": "c86fcc87-a137-4c37-8d19-17edc7199fef",
"createdBy": "john.doe@vertexinc.com",
"createdAt": "2025-06-05T16:26:41.567Z",
"updatedBy": "jane.doe@vertexinc.com",
"updatedAt": "2025-06-05T17:26:41.567Z",
"name": "einvoice.transmitted",
"description": "This state indicates the outbound e-invoice reached a terminal state",
"version": 1,
"schemaVersion": "0.0.1",
"schemaRef": "https://xyz.github.io/einv/api/einv-events-openapi.yaml",
"defaultRetentionIntervalDays": 3,
"tags": [
{
"key": "owner",
"value": "john.doe@vertexinc.com"
}
],
"public": "true",
"applicationName": "Vertex E-Invoicing",
"platformFeatureCodes": "1200"
}
}
]
}
The event producer creates tags for each event. It primarily uses the tag keys and their default values as specified in the event type object. However, the producer can also add additional keys not originally defined there. These tags are crucial because subscriptions are matched against them to determine whether an event should be delivered.
Default value from event type is used when not provided in the request.
The event payload is represented as a string. If the content is binary, client systems must Base64 encode it before sending the event.
Event payloads larger than 200KB will be presisted in object store.
We store each delivery attempt as a separate record. Our system makes a total of five automated delivery attempts. If all five attempts fail, the final record’s status will be PERMANENTLY_FAILED, while the previous four will show a FAILED status.
Here’s how the automated attempts progress:
- Attempt 1: PENDING → FAILED (at time t1)
- Attempt 2: RETRYING → FAILED (at t1 + 120 seconds)
- Attempt 3: RETRYING → FAILED (at t1 + 240 seconds)
- Attempt 4: RETRYING → FAILED (at t1 + 480 seconds)
- Attempt 5: RETRYING → FAILED (at t1 + 960 seconds)
- Additionally, you can initiate a manual delivery attempt via a “replay” operation, which would look like this:
Manual Replay: RETRYING → SUCCEEDED
This state can transition to either SUCCEEDED or FAILED state
This is a terminal state
This state is a terminal state for a specific delivery attempt. Next delivery attemtp with start with RETRYING state. If delivery attempt as maxed out (5 attempts), then this state will delivery instance will transition to PERMANENTLY_FAILED.