Documented Event Surface
Direct answer. A documented event surface is the list of state changes a vendor publishes as events an external system may subscribe to. It is the practical ceiling on event-driven automation: a state change the vendor does not publish cannot be reacted to, only discovered later by polling or by a person. Vendors may also gate enablement behind a support request or a plan tier, so the surface that appears in documentation and the surface a given account can actually use are two different things.
The ceiling on event-driven design
A documented event surface is the enumerated set of state changes a platform states an external endpoint can subscribe to, together with the conditions under which they can be enabled. It is read from vendor documentation, not inferred from a product tour or a sales call.
It matters because it is a hard ceiling. A state change the vendor does not publish cannot be reacted to. It can only be polled for on a schedule, or noticed later by a person. That is a different system with different latency, different cost and a different failure mode.
Read three lists side by side
- Documented. The events the vendor publishes in its own documentation.
- Enabled. The events this specific account can actually use — plan tier, feature flag and support-request gating mean the documented surface and the available surface are two different things.
- Depended on. The state changes the proposed design assumes exist.
Entries in the third list with no counterpart in the first two are the ceiling. They decide whether the build is event-driven, poll-driven, or partly manual — and that determination belongs in the scope, not in the retrospective.
What a published event should carry
Event specifications describe the metadata that makes an event usable rather than merely present. CloudEvents defines `id`, `source`, `specversion` and `type` as required context attributes, requires producers to ensure that `source` plus `id` is unique for each distinct event, and states that consumers may treat a repeated pair as a duplicate [cloudevents_spec]. Where a platform supplies that identity, deduplication is a consumer decision. Where it does not, deduplication becomes a bespoke build on top of whatever fields happen to be present.
Delivery is separate from identity. Endpoints time out and get redeployed, so the same event may arrive more than once; whether re-processing is safe depends on whether the resulting write is repeatable [rfc9110_idempotent]. Where a write is not naturally repeatable, a provider may document an explicit key mechanism instead — Stripe is one documented example [stripe_idempotency]. Whether any other provider does the same has to be read from that provider's own documentation.
What reading the surface establishes
| It establishes | It does not establish |
|---|---|
| What can be designed against with confidence | The full technical capability of the product |
| Which dependencies have no published event | That an undocumented or contract-gated capability does not exist |
| Whether a metric depends on a reconstruction | Whether the reconstruction is accurate |
| That a design choice between event, poll and queue is required | Which of those choices is correct for a given business |
Where this sits
The integration and orchestration systems guide owns the surrounding architecture. A missing event is often why a write-back gap exists in the first place, and terminal state configuration determines whether the end of a sequence is even observable. This entry sits in the Glossary. Locate the capability under the Integration & Orchestration Systems domain, and use Revenue Scan for the public-signal starting point.
Source and evidence notes
-
cloudevents_specCloudEvents specification, a graduated Cloud Native Computing Foundation project. It defines the required context attributes id, source, specversion and type, requires producers to ensure that source + id is unique for each distinct event, and states that consumers may assume events with identical source and id are duplicates. Limitation: A description and interoperability vocabulary only. It does not guarantee that any platform emits events, delivers them, or performs deduplication, and it does not describe any specific vendor surface. -
rfc9110_idempotentIETF RFC 9110, "HTTP Semantics" (STD 97, June 2022), Section 9.2.2 "Idempotent Methods": a request method is idempotent if the intended effect on the server of multiple identical requests with that method is the same as the effect for a single such request. Limitation: Defines HTTP method semantics only. It does not describe application-level side effects or any vendor implementation. -
stripe_idempotencyStripe API documentation, "Idempotent requests." A client-generated idempotency key causes the status code and body of the first request to be saved and returned for subsequent requests using that key; keys may be removed after at least 24 hours, and reusing a key with different parameters returns an error. Limitation: One provider's documented implementation, cited as a concrete published example. It is not a general standard and is not a recommendation of any vendor.