You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PROVIDERS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,4 +2,4 @@
2
2
3
3
The canonical registry of known `provider` values is [`schemas/registry/providers.json`](schemas/registry/providers.json). SDKs MUST use this list as the default for provider validation. See the [Provider Validation](links.md#provider-validation) section in `links.md` for the full SDK validation requirements.
4
4
5
-
To register a provider, open a pull request adding an entry to the enum in [`schemas/registry/providers.json`](schemas/registry/providers.json). Provider identifiers MUST be lowercase, start with a letter, and contain only alphanumeric characters and hyphens. Once merged, the value is considered stable and MUST NOT be renamed.
5
+
To register a provider, open a pull request adding an entry to the `enum` in [`schemas/registry/providers.json`](schemas/registry/providers.json). Provider identifiers MUST be lowercase, start with a letter, and contain only alphanumeric characters and hyphens. Once merged, the value is considered stable and MUST NOT be renamed.
Copy file name to clipboardExpand all lines: links.md
+37-14Lines changed: 37 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -680,7 +680,9 @@ covering fan-out scenarios where one action triggers work across several systems
680
680
681
681
### CDEvents Domain IDs
682
682
683
-
`domainId` values are URNs following this format:
683
+
`domainId` values are URIs following this format:
684
+
685
+
The `cdevents:` scheme prefix was chosen deliberately. The original design used a URN (`urn:`), but URN namespaces require formal registration — for example, `urn:github:...` would need to be registered by GitHub, and `urn:jira:...` by Atlassian. Using `urn:cdevents:...` for everything would raise the question of why a URN is needed at all if CDEvents is acting as the sole authority. A URI with a `cdevents:` scheme avoids these registry obligations while remaining a valid, parseable identifier under RFC 3986.
|`version`| yes | The version of the `domainId`URN format (currently `v0`). This allows the format to evolve without breaking existing consumers. |
699
+
|`version`| yes | The version of the `domainId`URI format (currently `v0`). This allows the format to evolve without breaking existing consumers. |
698
700
|`provider`| no | A governed identifier for the tool or system type that owns the resource. When present, MUST match a known provider defined in [PROVIDERS.md](PROVIDERS.md). Free-form values are not permitted — without a governed list, the same tool would be referenced as `gh`, `github`, `GitHub`, etc., making cross-system queries unreliable. |
699
701
|`provider-id`| no | Identifies who owns and where a specific instance of the provider is running. This is entirely company or org-defined — CDEvents does not govern, assign, or interpret this value. It exists solely to distinguish between two instances of the same tool owned or operated by different teams or organizations (e.g. org A's internal GitHub Enterprise vs org B's). Producers and consumers within an organization MUST agree on the value out of band. MUST be URL-encoded when present. |
700
702
|`namespace`| no | The top-level organizational unit within the provider's data model (e.g., a GitHub org, a Jira workspace). Producer-defined; not governed by CDEvents. MUST be URL-encoded when present. |
@@ -725,18 +727,39 @@ The `type` segment is a governed field. Producers MUST use one of the following
725
727
values. This ensures interoperability — consumers can match and query by `type`
726
728
without handling variations like `pull_request`, `PR`, or `pullrequest`.
|`pr`| A pull or merge request |`42` (PR number) |
731
-
|`commit`| A source code commit |`abc123def456` (commit SHA) |
732
-
|`issue`| An issue or ticket in a tracking system |`1234` (issue number) |
733
-
|`branch`| A source code branch |`main`, `feature/my-branch`|
734
-
|`tag`| A source code tag or release |`v1.2.3`|
735
-
|`definition`| A named, reusable pipeline or workflow template |`my-pipeline`|
736
-
|`execution`| A single run of a build, pipeline, workflow, or deployment |`789` (run number) |
737
-
|`artifact`| A build artifact (binary, container image, package, etc.). The resource id SHOULD be a [PURL](https://github.com/package-url/purl-spec), URL-encoded. |`pkg%3Adocker%2Fmyapp%401.0.0`|
738
-
|`environment`| A target deployment environment |`production`, `staging`|
739
-
|`alert`| A monitoring or observability alert |`98765` (alert ID) |
730
+
Most types are concrete and singular — `pr`, `commit`, `issue`, `branch`, `tag`,
731
+
`artifact`, `environment`, `alert`, and `execution` each represent a single,
732
+
unambiguous concept. If subtypes are added to these in the future (e.g.
733
+
`execution.stage`), the bare type retains its original meaning and existing URNs
734
+
remain valid — there is no migration cost.
735
+
736
+
`definition` is treated differently. A bare `definition` could mean "a workflow
737
+
definition" today, but if `definition.policy` or `definition.infrastructure` were
738
+
added later, bare `definition` would become underspecified — consumers could no
739
+
longer tell which kind of definition was intended without provider knowledge. To
740
+
avoid this migration problem, `definition` is an abstract parent type that MUST
741
+
NOT be used directly. Producers MUST always use a concrete subtype such as
742
+
`definition.workflow`. New subtypes SHOULD follow the `definition.<kind>` naming
743
+
convention and be proposed for addition to this list.
744
+
745
+
`execution` specifically refers to a top-level run — a pipeline execution, workflow
746
+
run, or build. Sub-level concepts such as stages, jobs, and steps are either
747
+
covered by CDEvents events via `contextId` (if the system emits CDEvents) or are
|`pr`| A pull or merge request |`42` (PR number) |
753
+
|`commit`| A source code commit |`abc123def456` (commit SHA) |
754
+
|`issue`| An issue or ticket in a tracking system |`1234` (issue number) |
755
+
|`branch`| A source code branch |`main`, `feature/my-branch`|
756
+
|`tag`| A source code tag or release |`v1.2.3`|
757
+
|`definition`| Abstract parent. MUST NOT be used directly — use a concrete subtype. | — |
758
+
|`definition.workflow`| An automation or pipeline definition — any template that describes a sequence of steps to be executed (e.g. a GitHub Actions workflow file, a CircleCI pipeline config, a Jenkinsfile). |`.github%2Fworkflows%2Fci.yml`|
759
+
|`execution`| A top-level run of a pipeline, workflow, or build. Always refers to the top-level execution — stages, jobs, and steps are out of scope. |`789` (run number) |
760
+
|`artifact`| A build artifact (binary, container image, package, etc.). The resource id SHOULD be a [PURL](https://github.com/package-url/purl-spec), URL-encoded. |`pkg%3Adocker%2Fmyapp%401.0.0`|
761
+
|`environment`| A target deployment environment |`production`, `staging`|
762
+
|`alert`| A monitoring or observability alert |`98765` (alert ID) |
740
763
741
764
If a resource does not fit any of the above types, it SHOULD be proposed for
742
765
addition to this list before using a custom value.
"description": "Registry of known CDEvents domainId provider identifiers. Known providers are listed below. To register a new provider, submit a pull request adding an entry to the enum and the PROVIDERS.md table.",
0 commit comments