diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index d5318ae..ec633e2 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -23,13 +23,13 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
- go-version: 1.19
+ go-version: 1.21
- name: Format check
run: make fmt
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
- version: v1.52
+ version: v1.59.1
args: --build-tags testonly
- name: Check generated code
run: make generate
diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml
index 4d5ea3a..93e2c87 100644
--- a/.github/workflows/coverage.yml
+++ b/.github/workflows/coverage.yml
@@ -26,7 +26,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v5
with:
- go-version: 1.19
+ go-version: 1.21
- name: Generate coverage report
run: make test
- name: Upload coverage reports to Codecov
diff --git a/.gitmodules b/.gitmodules
index 40ad4aa..04b9668 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -2,3 +2,7 @@
path = pkg/api/spec-v0.3
url = https://github.com/cdevents/spec
branch = spec-v0.3
+[submodule "pkg/api/spec-v0.4"]
+ path = pkg/api/spec-v0.4
+ url = https://github.com/cdevents/spec
+ branch = spec-v0.4
diff --git a/Makefile b/Makefile
index 9fc5d83..ffe4064 100644
--- a/Makefile
+++ b/Makefile
@@ -55,7 +55,7 @@ importfmt: get-fmt-deps
goimports -w $(GO_DEPENDENCIES)
get-fmt-deps: ## Install test dependencies
- $(GO_NOMOD) get golang.org/x/tools/cmd/goimports
+ $(GO) install golang.org/x/tools/cmd/goimports
.PHONY: lint
lint: ## Lint the code
diff --git a/README.md b/README.md
index b08eb2b..b3f953b 100644
--- a/README.md
+++ b/README.md
@@ -13,10 +13,10 @@ go get github.com/cdevents/sdk-go
```
And import the module in your code corresponding to the desired version of the specification.
-For CDEvents v0.3.x, use:
+For CDEvents v0.4.x, use:
```golang
-import cdevents "github.com/cdevents/sdk-go/pkg/api/v03"
+import cdeventsv04 "github.com/cdevents/sdk-go/pkg/api/v04"
```
## Create your first CDEvent
@@ -27,7 +27,7 @@ To create a CDEvent, for instance a [*pipelineRun queued*](https://cdevents.dev/
func main() {
// Create the base event
- event, err := cdevents.NewPipelineRunQueuedEvent()
+ event, err := cdeventsv04.NewPipelineRunQueuedEvent()
if err != nil {
log.Fatalf("could not create a cdevent, %v", err)
}
diff --git a/go.mod b/go.mod
index b7c16db..7ecadbd 100644
--- a/go.mod
+++ b/go.mod
@@ -1,13 +1,13 @@
module github.com/cdevents/sdk-go
-go 1.18
+go 1.21
require (
github.com/cloudevents/sdk-go/v2 v2.15.2
- github.com/google/go-cmp v0.5.8
+ github.com/google/go-cmp v0.6.0
github.com/google/uuid v1.1.2
github.com/package-url/packageurl-go v0.1.1
- github.com/santhosh-tekuri/jsonschema/v5 v5.0.0
+ github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
golang.org/x/text v0.14.0
)
@@ -16,7 +16,8 @@ require (
github.com/go-playground/universal-translator v0.18.0 // indirect
github.com/leodido/go-urn v1.2.1 // indirect
golang.org/x/crypto v0.17.0 // indirect
- golang.org/x/sys v0.15.0 // indirect
+ golang.org/x/sys v0.21.0 // indirect
+ golang.org/x/tools v0.22.0 // indirect
)
require (
@@ -27,6 +28,6 @@ require (
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.17.0 // indirect
- golang.org/x/mod v0.9.0
+ golang.org/x/mod v0.18.0
gopkg.in/yaml.v2 v2.4.0 // indirect
)
diff --git a/go.sum b/go.sum
index 7fdc981..48f2634 100644
--- a/go.sum
+++ b/go.sum
@@ -4,6 +4,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
+github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
@@ -12,8 +14,8 @@ github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/j
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ=
github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
-github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
-github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -37,18 +39,21 @@ github.com/package-url/packageurl-go v0.1.1/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeG
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
-github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE=
-github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
+github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw=
+github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
@@ -58,22 +63,25 @@ go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
-golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
-golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
+golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
-golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
+golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs=
+golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
+golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -84,3 +92,4 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/pkg/api/bindings.go b/pkg/api/bindings.go
index 44aa692..f56c743 100644
--- a/pkg/api/bindings.go
+++ b/pkg/api/bindings.go
@@ -22,28 +22,32 @@ import (
"encoding/json"
"fmt"
"net/url"
+ "regexp"
cloudevents "github.com/cloudevents/sdk-go/v2"
"github.com/go-playground/validator/v10"
purl "github.com/package-url/packageurl-go"
- jsonschema "github.com/santhosh-tekuri/jsonschema/v5"
"golang.org/x/mod/semver"
)
+const SCHEMA_ID_REGEX = `^https://cdevents.dev/([0-9]\.[0-9])\.[0-9]/schema/([^ ]*)$`
+
var (
// Validation helper as singleton
- validate *validator.Validate
+ validate *validator.Validate
+ CDEventsSchemaIdRegex = regexp.MustCompile(SCHEMA_ID_REGEX)
)
func init() {
// Register custom validators
validate = validator.New()
- err := validate.RegisterValidation("event-type", ValidateEventType)
- panicOnError(err)
- err = validate.RegisterValidation("uri-reference", ValidateUriReference)
+ validate.RegisterStructValidation(ValidateEventType, CDEventType{})
+ err := validate.RegisterValidation("uri-reference", ValidateUriReference)
panicOnError(err)
err = validate.RegisterValidation("purl", ValidatePurl)
panicOnError(err)
+ err = validate.RegisterValidation("event-link-type", ValidateLinkType)
+ panicOnError(err)
}
func panicOnError(err error) {
@@ -70,9 +74,11 @@ func ParseType(eventType string) (*CDEventType, error) {
return t, nil
}
-func ValidateEventType(fl validator.FieldLevel) bool {
- _, err := ParseType(fl.Field().String())
- return err == nil
+func ValidateEventType(sl validator.StructLevel) {
+ _, err := ParseType(sl.Current().Interface().(CDEventType).String())
+ if err != nil {
+ sl.ReportError(sl.Current().Interface(), "Type", "", "", "")
+ }
}
func ValidateUriReference(fl validator.FieldLevel) bool {
@@ -85,6 +91,12 @@ func ValidatePurl(fl validator.FieldLevel) bool {
return err == nil
}
+func ValidateLinkType(fl validator.FieldLevel) bool {
+ lt := LinkType(fl.Field().String())
+ _, ok := LinkTypes[lt]
+ return ok
+}
+
// AsCloudEvent renders a CDEvent as a CloudEvent
func AsCloudEvent(event CDEventReader) (*cloudevents.Event, error) {
if event == nil {
@@ -127,10 +139,9 @@ func AsJsonString(event CDEventReader) (string, error) {
// Validate checks the CDEvent against the JSON schema and validate constraints
func Validate(event CDEventReader) error {
- url, schema := event.GetSchema()
- sch, err := jsonschema.CompileString(url, schema)
+ _, sch, err := event.GetSchema()
if err != nil {
- return fmt.Errorf("cannot compile jsonschema %s, %s", url, err)
+ return err
}
var v interface{}
jsonString, err := AsJsonString(event)
@@ -157,19 +168,20 @@ func Validate(event CDEventReader) error {
// This works by unmarshalling the context first, extracting the event type and using
// that to unmarshal the rest of the event into the correct object.
// `ContextType` defines the type of Context that can be used to unmarshal the event.
-func NewFromJsonBytesContext[ContextType BaseContextReader](event []byte, cdeventsMap map[string]CDEvent) (CDEvent, error) {
+func NewFromJsonBytesContext[CDEventType CDEvent](event []byte, cdeventsMap map[string]CDEventType) (CDEventType, error) {
eventAux := &struct {
- Context ContextType `json:"context"`
+ Context Context `json:"context"`
}{}
+ var nilReturn CDEventType
err := json.Unmarshal(event, eventAux)
if err != nil {
- return nil, err
+ return nilReturn, err
}
eventType := eventAux.Context.GetType()
receiver, ok := cdeventsMap[eventType.UnversionedString()]
if !ok {
// This should not happen as unmarshalling and validate checks if the type is known to the SDK
- return nil, fmt.Errorf("unknown event type %s", eventAux.Context.GetType())
+ return nilReturn, fmt.Errorf("unknown event type %s", eventAux.Context.GetType())
}
// Check if the receiver is compatible. It must have the same subject and predicate
// and share the same major version.
@@ -177,11 +189,11 @@ func NewFromJsonBytesContext[ContextType BaseContextReader](event []byte, cdeven
// greater than the SDK one, some fields may be lost, as newer versions may add new
// fields to the event specification.
if !eventType.IsCompatible(receiver.GetType()) {
- return nil, fmt.Errorf("sdk event version %s not compatible with %s", receiver.GetType().Version, eventType.Version)
+ return nilReturn, fmt.Errorf("sdk event version %s not compatible with %s", receiver.GetType().Version, eventType.Version)
}
err = json.Unmarshal(event, receiver)
if err != nil {
- return nil, err
+ return nilReturn, err
}
return receiver, nil
}
diff --git a/pkg/api/bindings_test.go b/pkg/api/bindings_test.go
index aeccd52..3ae6e11 100644
--- a/pkg/api/bindings_test.go
+++ b/pkg/api/bindings_test.go
@@ -24,14 +24,13 @@ import (
"testing"
"github.com/cdevents/sdk-go/pkg/api"
- testapi "github.com/cdevents/sdk-go/pkg/api/v990"
+ testapi "github.com/cdevents/sdk-go/pkg/api/v991"
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
- jsonschema "github.com/santhosh-tekuri/jsonschema/v5"
)
-const testsFolder = "tests/examples"
+const testsFolder = "tests-v99.1/examples"
type testData struct {
TestValues []map[string]string `json:"testValues"`
@@ -50,6 +49,12 @@ var (
testDataXml = []byte("testData")
testChangeId = "myChange123"
+ // V04+ Examples Data
+ testLinks api.EmbeddedLinksArray
+ testContextId = "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ testChainId = "4c8cb7dd-3448-41de-8768-eec704e2829b"
+ testSchemaUri = "https://myorg.com/schema/custom"
+
eventJsonCustomData *testapi.FooSubjectBarPredicateEvent
eventNonJsonCustomData *testapi.FooSubjectBarPredicateEvent
eventJsonCustomDataUnmarshalled *testapi.FooSubjectBarPredicateEvent
@@ -57,6 +62,21 @@ var (
eventJsonCustomDataFile = "json_custom_data"
eventImplicitJsonCustomDataFile = "implicit_json_custom_data"
eventNonJsonCustomDataFile = "non_json_custom_data"
+
+ eventInvalidType = &testapi.FooSubjectBarPredicateEvent{
+ Context: api.ContextV04{
+ api.Context{
+ Type: api.CDEventType{
+ Subject: "invalid",
+ Predicate: "invalid",
+ Version: "1.2.3",
+ },
+ Version: "9.9.9",
+ },
+ api.ContextLinks{},
+ api.ContextCustom{},
+ },
+ }
)
func panicOnError(err error) {
@@ -70,31 +90,66 @@ func setContext(event api.CDEventWriter, subjectId string) {
event.SetSubjectId(subjectId)
}
+func setContextV04(event api.CDEventWriterV04, chainId, schemaUri bool) {
+ if chainId {
+ event.SetChainId(testChainId)
+ }
+ if schemaUri {
+ event.SetSchemaUri(testSchemaUri)
+ }
+ event.SetLinks(testLinks)
+}
+
func init() {
+ // Set up test links
+ tags := api.Tags{
+ "foo1": "bar",
+ "foo2": "bar",
+ }
+ reference := api.EventReference{
+ ContextId: testContextId,
+ }
+ elr := api.NewEmbeddedLinkRelation()
+ elr.SetTags(tags)
+ elr.SetLinkKind("TRIGGER")
+ elr.SetTarget(reference)
+ elp := api.NewEmbeddedLinkPath()
+ elp.SetTags(tags)
+ elp.SetFrom(reference)
+ ele := api.NewEmbeddedLinkEnd()
+ ele.SetTags(tags)
+ ele.SetFrom(reference)
+ testLinks = api.EmbeddedLinksArray{
+ elr, elp, ele,
+ }
+
eventJsonCustomData, _ = testapi.NewFooSubjectBarPredicateEvent()
setContext(eventJsonCustomData, testSubjectId)
+ setContextV04(eventJsonCustomData, true, true)
eventJsonCustomData.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
eventJsonCustomData.SetSubjectPlainField(testValue)
eventJsonCustomData.SetSubjectArtifactId(testArtifactId)
- eventJsonCustomData.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
+ eventJsonCustomData.SetSubjectObjectField(&testapi.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
err := eventJsonCustomData.SetCustomData("application/json", testDataJson)
panicOnError(err)
eventJsonCustomDataUnmarshalled, _ = testapi.NewFooSubjectBarPredicateEvent()
setContext(eventJsonCustomDataUnmarshalled, testSubjectId)
+ setContextV04(eventJsonCustomDataUnmarshalled, true, true)
eventJsonCustomDataUnmarshalled.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
eventJsonCustomDataUnmarshalled.SetSubjectPlainField(testValue)
eventJsonCustomDataUnmarshalled.SetSubjectArtifactId(testArtifactId)
- eventJsonCustomDataUnmarshalled.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
+ eventJsonCustomDataUnmarshalled.SetSubjectObjectField(&testapi.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
err = eventJsonCustomDataUnmarshalled.SetCustomData("application/json", testDataJsonUnmarshalled)
panicOnError(err)
eventNonJsonCustomData, _ = testapi.NewFooSubjectBarPredicateEvent()
setContext(eventNonJsonCustomData, testSubjectId)
+ setContextV04(eventNonJsonCustomData, true, true)
eventNonJsonCustomData.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
eventNonJsonCustomData.SetSubjectPlainField(testValue)
eventNonJsonCustomData.SetSubjectArtifactId(testArtifactId)
- eventNonJsonCustomData.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
+ eventNonJsonCustomData.SetSubjectObjectField(&testapi.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
err = eventNonJsonCustomData.SetCustomData("application/xml", testDataXml)
panicOnError(err)
}
@@ -172,9 +227,24 @@ func TestAsCloudEvent(t *testing.T) {
}
func TestAsCloudEventInvalid(t *testing.T) {
- _, err := api.AsCloudEvent(nil)
- if err == nil {
- t.Fatalf("expected it to fail, but it didn't")
+
+ tests := []struct {
+ name string
+ event api.CDEventReader
+ }{{
+ name: "nil event",
+ event: nil,
+ }, {
+ name: "event with invalid type",
+ event: eventInvalidType,
+ }}
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ _, err := api.AsCloudEvent(tc.event)
+ if err == nil {
+ t.Fatalf("expected it to fail, but it didn't")
+ }
+ })
}
}
@@ -206,10 +276,9 @@ func TestAsJsonBytes(t *testing.T) {
t.Fatalf("didn't expected it to fail, but it did: %v", err)
}
// First validate that the test JSON compiles against the schema
- schema, url := tc.event.GetSchema()
- sch, err := jsonschema.CompileString(schema, url)
+ url, sch, err := tc.event.GetSchema()
if err != nil {
- t.Fatalf("Cannot compile jsonschema %s: %v", url, err)
+ t.Fatalf("Cannot find jsonschema %s: %v", url, err)
}
var v interface{}
if err := json.Unmarshal(eventBytes, &v); err != nil {
@@ -274,11 +343,13 @@ func TestInvalidEvent(t *testing.T) {
// invalid event type
eventInvalidType := &testapi.FooSubjectBarPredicateEvent{
- Context: api.Context{
- Type: api.CDEventType{Subject: "not-a-valid-type"},
- Version: api.CDEventsSpecVersion,
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: api.CDEventType{Subject: "not-a-valid-type"},
+ Version: api.CDEventsSpecVersion,
+ },
},
- Subject: api.FooSubjectBarPredicateSubject{
+ Subject: testapi.FooSubjectBarPredicateSubject{
SubjectBase: api.SubjectBase{
Type: "notAValidSubjectType",
},
@@ -338,7 +409,7 @@ func TestNewFromJsonString(t *testing.T) {
tests := []struct {
name string
- event api.CDEvent
+ event api.CDEventV04
fileName string
}{{
name: "json custom data",
@@ -380,6 +451,16 @@ func TestNewFromJsonString(t *testing.T) {
if d := cmp.Diff(tc.event.GetType(), obtainedEvent.GetType()); d != "" {
t.Errorf("args: diff(-want,+got):\n%s", d)
}
+ // Check V04 context
+ if d := cmp.Diff(tc.event.GetChainId(), obtainedEvent.GetChainId()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ if d := cmp.Diff(tc.event.GetSchemaUri(), obtainedEvent.GetSchemaUri()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ if d := cmp.Diff(tc.event.GetLinks(), obtainedEvent.GetLinks()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
// Check the subject
if d := cmp.Diff(tc.event.GetSubject(), obtainedEvent.GetSubject()); d != "" {
t.Errorf("args: diff(-want,+got):\n%s", d)
@@ -474,10 +555,11 @@ func TestParseType(t *testing.T) {
func testEventWithVersion(eventVersion string, specVersion string) *testapi.FooSubjectBarPredicateEvent {
event, _ := testapi.NewFooSubjectBarPredicateEvent()
setContext(event, testSubjectId)
+ setContextV04(event, true, true)
event.SetSubjectReferenceField(&api.Reference{Id: testChangeId})
event.SetSubjectPlainField(testValue)
event.SetSubjectArtifactId(testArtifactId)
- event.SetSubjectObjectField(&api.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
+ event.SetSubjectObjectField(&testapi.FooSubjectBarPredicateSubjectContentObjectField{Required: testChangeId, Optional: testSource})
err := event.SetCustomData("application/json", testDataJsonUnmarshalled)
panicOnError(err)
event.Context.Type.Version = eventVersion
@@ -487,10 +569,10 @@ func testEventWithVersion(eventVersion string, specVersion string) *testapi.FooS
func TestNewFromJsonBytes(t *testing.T) {
- minorVersion := testEventWithVersion("1.999.0", testapi.SpecVersion)
- patchVersion := testEventWithVersion("1.2.999", testapi.SpecVersion)
- pastPatchVersion := testEventWithVersion("1.2.0", testapi.SpecVersion)
- pastSpecVersion := testEventWithVersion("1.2.3", "0.1.0")
+ minorVersion := testEventWithVersion("2.999.1", testapi.SpecVersion)
+ patchVersion := testEventWithVersion("2.2.999", testapi.SpecVersion)
+ pastPatchVersion := testEventWithVersion("2.2.0", testapi.SpecVersion)
+ pastSpecVersion := testEventWithVersion("2.2.3", "0.1.0")
tests := []struct {
testFile string
@@ -500,7 +582,7 @@ func TestNewFromJsonBytes(t *testing.T) {
}{{
testFile: "future_event_major_version",
description: "A newer major version in the event is backward incompatible and cannot be parsed",
- wantError: "sdk event version 1.2.3 not compatible with 999.0.0",
+ wantError: "sdk event version 2.2.3 not compatible with 999.1.0",
}, {
testFile: "future_event_minor_version",
description: "A newer minor version in the event is compatible and can be parsed, data is lost",
diff --git a/pkg/api/schemas.go b/pkg/api/schemas.go
new file mode 100644
index 0000000..601ecdc
--- /dev/null
+++ b/pkg/api/schemas.go
@@ -0,0 +1,11692 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2024 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "encoding/json"
+ "fmt"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+type SchemaDB map[string]*jsonschema.Schema
+
+var (
+ // All compiled schemas by Id
+ CompiledSchemas SchemaDB
+
+ // All schemas as string by Id
+ SchemasById = map[string]string{
+ "https://cdevents.dev/0.3.0/schema/artifact-packaged-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/artifact-packaged-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.packaged.0.1.1"
+ ],
+ "default": "dev.cdevents.artifact.packaged.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {
+ "change": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "change"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/artifact-published-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/artifact-published-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.published.0.1.1"
+ ],
+ "default": "dev.cdevents.artifact.published.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/artifact-signed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/artifact-signed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.signed.0.1.0"
+ ],
+ "default": "dev.cdevents.artifact.signed.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {
+ "signature": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "signature"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/branch-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/branch-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.branch.created.0.1.2"
+ ],
+ "default": "dev.cdevents.branch.created.0.1.2"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "branch"
+ ],
+ "default": "branch"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/branch-deleted-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/branch-deleted-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.branch.deleted.0.1.2"
+ ],
+ "default": "dev.cdevents.branch.deleted.0.1.2"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "branch"
+ ],
+ "default": "branch"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/build-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/build-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.build.finished.0.1.1"
+ ],
+ "default": "dev.cdevents.build.finished.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "build"
+ ],
+ "default": "build"
+ },
+ "content": {
+ "properties": {
+ "artifactId": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/build-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/build-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.build.queued.0.1.1"
+ ],
+ "default": "dev.cdevents.build.queued.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "build"
+ ],
+ "default": "build"
+ },
+ "content": {
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/build-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/build-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.build.started.0.1.1"
+ ],
+ "default": "dev.cdevents.build.started.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "build"
+ ],
+ "default": "build"
+ },
+ "content": {
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/change-abandoned-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/change-abandoned-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.abandoned.0.1.2"
+ ],
+ "default": "dev.cdevents.change.abandoned.0.1.2"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/change-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/change-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.created.0.1.2"
+ ],
+ "default": "dev.cdevents.change.created.0.1.2"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/change-merged-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/change-merged-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.merged.0.1.2"
+ ],
+ "default": "dev.cdevents.change.merged.0.1.2"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/change-reviewed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/change-reviewed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.reviewed.0.1.2"
+ ],
+ "default": "dev.cdevents.change.reviewed.0.1.2"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/change-updated-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/change-updated-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.updated.0.1.2"
+ ],
+ "default": "dev.cdevents.change.updated.0.1.2"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/environment-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/environment-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.environment.created.0.1.1"
+ ],
+ "default": "dev.cdevents.environment.created.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "environment"
+ ],
+ "default": "environment"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/environment-deleted-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/environment-deleted-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.environment.deleted.0.1.1"
+ ],
+ "default": "dev.cdevents.environment.deleted.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "environment"
+ ],
+ "default": "environment"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/environment-modified-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/environment-modified-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.environment.modified.0.1.1"
+ ],
+ "default": "dev.cdevents.environment.modified.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "environment"
+ ],
+ "default": "environment"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/incident-detected-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/incident-detected-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.incident.detected.0.1.0"
+ ],
+ "default": "dev.cdevents.incident.detected.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "incident"
+ ],
+ "default": "incident"
+ },
+ "content": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "service": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/incident-reported-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/incident-reported-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.incident.reported.0.1.0"
+ ],
+ "default": "dev.cdevents.incident.reported.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "incident"
+ ],
+ "default": "incident"
+ },
+ "content": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "ticketURI": {
+ "type": "string",
+ "format": "uri",
+ "minLength": 1
+ },
+ "service": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "ticketURI"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/incident-resolved-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/incident-resolved-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.incident.resolved.0.1.0"
+ ],
+ "default": "dev.cdevents.incident.resolved.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "incident"
+ ],
+ "default": "incident"
+ },
+ "content": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "service": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/pipelinerun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/pipeline-run-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.pipelinerun.finished.0.1.1"
+ ],
+ "default": "dev.cdevents.pipelinerun.finished.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "pipelineRun"
+ ],
+ "default": "pipelineRun"
+ },
+ "content": {
+ "properties": {
+ "pipelineName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "outcome": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/pipelinerun-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/pipeline-run-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.pipelinerun.queued.0.1.1"
+ ],
+ "default": "dev.cdevents.pipelinerun.queued.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "pipelineRun"
+ ],
+ "default": "pipelineRun"
+ },
+ "content": {
+ "properties": {
+ "pipelineName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/pipelinerun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/pipeline-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.pipelinerun.started.0.1.1"
+ ],
+ "default": "dev.cdevents.pipelinerun.started.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "pipelineRun"
+ ],
+ "default": "pipelineRun"
+ },
+ "content": {
+ "properties": {
+ "pipelineName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "pipelineName",
+ "url"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/repository-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/repository-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.repository.created.0.1.1"
+ ],
+ "default": "dev.cdevents.repository.created.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "repository"
+ ],
+ "default": "repository"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1
+ },
+ "owner": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string",
+ "minLength": 1
+ },
+ "viewUrl": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "name",
+ "url"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/repository-deleted-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/repository-deleted-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.repository.deleted.0.1.1"
+ ],
+ "default": "dev.cdevents.repository.deleted.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "repository"
+ ],
+ "default": "repository"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "viewUrl": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/repository-modified-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/repository-modified-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.repository.modified.0.1.1"
+ ],
+ "default": "dev.cdevents.repository.modified.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "repository"
+ ],
+ "default": "repository"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "viewUrl": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/service-deployed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/service-deployed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.deployed.0.1.1"
+ ],
+ "default": "dev.cdevents.service.deployed.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "artifactId"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/service-published-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/service-published-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.published.0.1.1"
+ ],
+ "default": "dev.cdevents.service.published.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/service-removed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/service-removed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.removed.0.1.1"
+ ],
+ "default": "dev.cdevents.service.removed.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/service-rolledback-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/service-rolledback-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.rolledback.0.1.1"
+ ],
+ "default": "dev.cdevents.service.rolledback.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "artifactId"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/service-upgraded-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/service-upgraded-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.upgraded.0.1.1"
+ ],
+ "default": "dev.cdevents.service.upgraded.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "artifactId"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/taskrun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/task-run-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.taskrun.finished.0.1.1"
+ ],
+ "default": "dev.cdevents.taskrun.finished.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "taskRun"
+ ],
+ "default": "taskRun"
+ },
+ "content": {
+ "properties": {
+ "taskName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "pipelineRun": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "outcome": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/taskrun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/task-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.taskrun.started.0.1.1"
+ ],
+ "default": "dev.cdevents.taskrun.started.0.1.1"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "taskRun"
+ ],
+ "default": "taskRun"
+ },
+ "content": {
+ "properties": {
+ "taskName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "pipelineRun": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.3.0/schema/testcaserun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/test-case-run-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testcaserun.finished.0.1.0"
+ ],
+ "default": "dev.cdevents.testcaserun.finished.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testCaseRun"
+ ],
+ "default": "testCaseRun"
+ },
+ "content": {
+ "properties": {
+ "outcome": {
+ "type": "string",
+ "enum": [
+ "pass",
+ "fail",
+ "cancel",
+ "error"
+ ]
+ },
+ "severity": {
+ "type": "string",
+ "enum": [
+ "low",
+ "medium",
+ "high",
+ "critical"
+ ]
+ },
+ "reason": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuiteRun": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "testCase": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "performance",
+ "functional",
+ "unit",
+ "security",
+ "compliance",
+ "integration",
+ "e2e",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "outcome",
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.3.0/schema/testcaserun-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/test-case-run-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testcaserun.queued.0.1.0"
+ ],
+ "default": "dev.cdevents.testcaserun.queued.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testCaseRun"
+ ],
+ "default": "testCaseRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuiteRun": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testCase": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "performance",
+ "functional",
+ "unit",
+ "security",
+ "compliance",
+ "integration",
+ "e2e",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.3.0/schema/testcaserun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/test-case-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testcaserun.started.0.1.0"
+ ],
+ "default": "dev.cdevents.testcaserun.started.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testCaseRun"
+ ],
+ "default": "testCaseRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuiteRun": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "testCase": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "performance",
+ "functional",
+ "unit",
+ "security",
+ "compliance",
+ "integration",
+ "e2e",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.3.0/schema/testoutput-published-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/test-output-published-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testoutput.published.0.1.0"
+ ],
+ "default": "dev.cdevents.testoutput.published.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testOutput"
+ ],
+ "default": "testOutput"
+ },
+ "content": {
+ "properties": {
+ "outputType": {
+ "type": "string",
+ "enum": [
+ "report",
+ "video",
+ "image",
+ "log",
+ "other"
+ ]
+ },
+ "format": {
+ "type": "string",
+ "example": "application/pdf"
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ },
+ "testCaseRun": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "outputType",
+ "format"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.3.0/schema/testsuiterun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/test-suite-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testsuiterun.finished.0.1.0"
+ ],
+ "default": "dev.cdevents.testsuiterun.finished.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testSuiteRun"
+ ],
+ "default": "testSuiteRun"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuite": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "outcome": {
+ "type": "string",
+ "enum": [
+ "pass",
+ "fail",
+ "cancel",
+ "error"
+ ]
+ },
+ "severity": {
+ "type": "string",
+ "enum": [
+ "low",
+ "medium",
+ "high",
+ "critical"
+ ]
+ },
+ "reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "outcome",
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.3.0/schema/testsuiterun-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/test-suite-run-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testsuiterun.queued.0.1.0"
+ ],
+ "default": "dev.cdevents.testsuiterun.queued.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testSuiteRun"
+ ],
+ "default": "testSuiteRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuite": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.3.0/schema/testsuiterun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.3.0/schema/test-suite-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testsuiterun.started.0.1.0"
+ ],
+ "default": "dev.cdevents.testsuiterun.started.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testSuiteRun"
+ ],
+ "default": "testSuiteRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuite": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/artifact-deleted-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/artifact-deleted-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.deleted.0.1.0"
+ ],
+ "default": "dev.cdevents.artifact.deleted.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {
+ "user": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/artifact-downloaded-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/artifact-downloaded-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.downloaded.0.1.0"
+ ],
+ "default": "dev.cdevents.artifact.downloaded.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {
+ "user": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/artifact-packaged-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/artifact-packaged-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.packaged.0.2.0"
+ ],
+ "default": "dev.cdevents.artifact.packaged.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {
+ "change": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "sbom": {
+ "properties": {
+ "uri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "uri"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "change"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/artifact-published-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/artifact-published-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.published.0.2.0"
+ ],
+ "default": "dev.cdevents.artifact.published.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {
+ "sbom": {
+ "properties": {
+ "uri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "uri"
+ ]
+ },
+ "user": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/artifact-signed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/artifact-signed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.artifact.signed.0.2.0"
+ ],
+ "default": "dev.cdevents.artifact.signed.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "artifact"
+ ],
+ "default": "artifact"
+ },
+ "content": {
+ "properties": {
+ "signature": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "signature"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/branch-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/branch-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.branch.created.0.2.0"
+ ],
+ "default": "dev.cdevents.branch.created.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "branch"
+ ],
+ "default": "branch"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/branch-deleted-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/branch-deleted-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.branch.deleted.0.2.0"
+ ],
+ "default": "dev.cdevents.branch.deleted.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "branch"
+ ],
+ "default": "branch"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/build-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/build-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.build.finished.0.2.0"
+ ],
+ "default": "dev.cdevents.build.finished.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "build"
+ ],
+ "default": "build"
+ },
+ "content": {
+ "properties": {
+ "artifactId": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/build-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/build-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.build.queued.0.2.0"
+ ],
+ "default": "dev.cdevents.build.queued.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "build"
+ ],
+ "default": "build"
+ },
+ "content": {
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/build-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/build-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.build.started.0.2.0"
+ ],
+ "default": "dev.cdevents.build.started.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "build"
+ ],
+ "default": "build"
+ },
+ "content": {
+ "properties": {},
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/change-abandoned-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/change-abandoned-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.abandoned.0.2.0"
+ ],
+ "default": "dev.cdevents.change.abandoned.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/change-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/change-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.created.0.3.0"
+ ],
+ "default": "dev.cdevents.change.created.0.3.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "description": {
+ "type": "string",
+ "minLength": 1
+ },
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/change-merged-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/change-merged-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.merged.0.2.0"
+ ],
+ "default": "dev.cdevents.change.merged.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/change-reviewed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/change-reviewed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.reviewed.0.2.0"
+ ],
+ "default": "dev.cdevents.change.reviewed.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/change-updated-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/change-updated-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.change.updated.0.2.0"
+ ],
+ "default": "dev.cdevents.change.updated.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "change"
+ ],
+ "default": "change"
+ },
+ "content": {
+ "properties": {
+ "repository": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/custom": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/custom",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "pattern": "^dev\\.cdeventsx\\.[a-zA-Z0-9]+-[a-zA-Z]+\\.[a-zA-Z]+\\.[0-9]\\.[0-9]\\.[0-9]$"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "pattern": "^[a-zA-Z0-9]+-[a-zA-Z]+$"
+ },
+ "content": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.4.1/schema/environment-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/environment-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.environment.created.0.2.0"
+ ],
+ "default": "dev.cdevents.environment.created.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "environment"
+ ],
+ "default": "environment"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/environment-deleted-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/environment-deleted-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.environment.deleted.0.2.0"
+ ],
+ "default": "dev.cdevents.environment.deleted.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "environment"
+ ],
+ "default": "environment"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/environment-modified-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/environment-modified-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.environment.modified.0.2.0"
+ ],
+ "default": "dev.cdevents.environment.modified.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "environment"
+ ],
+ "default": "environment"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/incident-detected-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/incident-detected-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.incident.detected.0.2.0"
+ ],
+ "default": "dev.cdevents.incident.detected.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "incident"
+ ],
+ "default": "incident"
+ },
+ "content": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "service": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/incident-reported-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/incident-reported-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.incident.reported.0.2.0"
+ ],
+ "default": "dev.cdevents.incident.reported.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "incident"
+ ],
+ "default": "incident"
+ },
+ "content": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "ticketURI": {
+ "type": "string",
+ "format": "uri",
+ "minLength": 1
+ },
+ "service": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "ticketURI"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/incident-resolved-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/incident-resolved-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.incident.resolved.0.2.0"
+ ],
+ "default": "dev.cdevents.incident.resolved.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "incident"
+ ],
+ "default": "incident"
+ },
+ "content": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "service": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/links/embeddedlinkend": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/embeddedlinkend",
+ "properties": {
+ "linkType": {
+ "type": "string",
+ "enum": [
+ "END"
+ ]
+ },
+ "from": {
+ "description": "When consuming a CDEvent, you are consuming a parent event. So, when looking at the 'from' key, this is the parent's parent.",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "linkType"
+ ]
+}
+
+`,
+ "https://cdevents.dev/0.4.1/schema/links/embeddedlinkpath": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/embeddedlinkpath",
+ "properties": {
+ "linkType": {
+ "type": "string",
+ "enum": [
+ "PATH"
+ ]
+ },
+ "from": {
+ "description": "When consuming a CDEvent, you are consuming a parent event. So, when looking at the 'from' key, this is the parent's parent.",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "linkType",
+ "from"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/links/embeddedlinkrelation": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/embeddedlinkrelation",
+ "properties": {
+ "linkType": {
+ "type": "string",
+ "enum": [
+ "RELATION"
+ ]
+ },
+ "linkKind": {
+ "type": "string",
+ "minLength": 1
+ },
+ "target": {
+ "description": "",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "linkType",
+ "linkKind",
+ "target"
+ ]
+}
+
+`,
+ "https://cdevents.dev/0.4.1/schema/links/embeddedlinksarray": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/embeddedlinksarray",
+ "type": "array",
+ "items": {
+ "anyOf": [
+ {
+ "type": "object",
+ "$ref": "embeddedlinkend"
+ },
+ {
+ "type": "object",
+ "$ref": "embeddedlinkpath"
+ },
+ {
+ "type": "object",
+ "$ref": "embeddedlinkrelation"
+ }
+ ]
+ }
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/links/linkend": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/linkend",
+ "properties": {
+ "chainId": {
+ "description": "This represents the full lifecycles of a series of events in CDEvents",
+ "type": "string",
+ "minLength": 1
+ },
+ "linkType": {
+ "description": "The type associated with the link. In this case, 'END', suggesting the end of some CI/CD lifecycle",
+ "type": "string",
+ "enum": [
+ "END"
+ ]
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "from": {
+ "description": "This is the context ID of the producing CDEvent.",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "end": {
+ "description": "This is the context ID of the final CDEvent in the chain",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "chainId",
+ "linkType",
+ "timestamp",
+ "from",
+ "end"
+ ]
+}
+
+`,
+ "https://cdevents.dev/0.4.1/schema/links/linkpath": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/linkpath",
+ "properties": {
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "linkType": {
+ "type": "string",
+ "enum": [
+ "PATH"
+ ]
+ },
+ "from": {
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "to": {
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "chainId",
+ "linkType",
+ "timestamp",
+ "from",
+ "to"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/links/linkrelation": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/linkrelation",
+ "properties": {
+ "chainId": {
+ "description": "This represents the full lifecycles of a series of events in CDEvents",
+ "type": "string",
+ "minLength": 1
+ },
+ "linkType": {
+ "type": "string",
+ "enum": [
+ "RELATION"
+ ]
+ },
+ "linkKind": {
+ "type": "string",
+ "minLength": 1
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "source": {
+ "description": "",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "target": {
+ "description": "",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "chainId",
+ "linkType",
+ "timestamp",
+ "source",
+ "target"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/links/linkstart": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/links/linkstart",
+ "properties": {
+ "chainId": {
+ "description": "This represents the full lifecycles of a series of events in CDEvents",
+ "type": "string",
+ "minLength": 1
+ },
+ "linkType": {
+ "description": "The type associated with the link. In this case, 'START', suggesting the start of some CI/CD lifecycle",
+ "type": "string",
+ "enum": [
+ "START"
+ ]
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "start": {
+ "description": "This is the context ID of the starting CDEvent in the chain.",
+ "type": "object",
+ "properties": {
+ "contextId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "contextId"
+ ]
+ },
+ "tags": {
+ "type": "object",
+ "additionalProperties": true
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "chainId",
+ "linkType",
+ "timestamp",
+ "start"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/pipelinerun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/pipeline-run-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.pipelinerun.finished.0.2.0"
+ ],
+ "default": "dev.cdevents.pipelinerun.finished.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "pipelineRun"
+ ],
+ "default": "pipelineRun"
+ },
+ "content": {
+ "properties": {
+ "pipelineName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "outcome": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/pipelinerun-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/pipeline-run-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.pipelinerun.queued.0.2.0"
+ ],
+ "default": "dev.cdevents.pipelinerun.queued.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "pipelineRun"
+ ],
+ "default": "pipelineRun"
+ },
+ "content": {
+ "properties": {
+ "pipelineName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/pipelinerun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/pipeline-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.pipelinerun.started.0.2.0"
+ ],
+ "default": "dev.cdevents.pipelinerun.started.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "pipelineRun"
+ ],
+ "default": "pipelineRun"
+ },
+ "content": {
+ "properties": {
+ "pipelineName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "pipelineName",
+ "url"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/repository-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/repository-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.repository.created.0.2.0"
+ ],
+ "default": "dev.cdevents.repository.created.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "repository"
+ ],
+ "default": "repository"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1
+ },
+ "owner": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string",
+ "minLength": 1
+ },
+ "viewUrl": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "name",
+ "url"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/repository-deleted-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/repository-deleted-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.repository.deleted.0.2.0"
+ ],
+ "default": "dev.cdevents.repository.deleted.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "repository"
+ ],
+ "default": "repository"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "viewUrl": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/repository-modified-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/repository-modified-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.repository.modified.0.2.0"
+ ],
+ "default": "dev.cdevents.repository.modified.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "repository"
+ ],
+ "default": "repository"
+ },
+ "content": {
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "owner": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "viewUrl": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/service-deployed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/service-deployed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.deployed.0.2.0"
+ ],
+ "default": "dev.cdevents.service.deployed.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "artifactId"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/service-published-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/service-published-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.published.0.2.0"
+ ],
+ "default": "dev.cdevents.service.published.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/service-removed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/service-removed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.removed.0.2.0"
+ ],
+ "default": "dev.cdevents.service.removed.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/service-rolledback-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/service-rolledback-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.rolledback.0.2.0"
+ ],
+ "default": "dev.cdevents.service.rolledback.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "artifactId"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/service-upgraded-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/service-upgraded-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.service.upgraded.0.2.0"
+ ],
+ "default": "dev.cdevents.service.upgraded.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "service"
+ ],
+ "default": "service"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment",
+ "artifactId"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/taskrun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/task-run-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.taskrun.finished.0.2.0"
+ ],
+ "default": "dev.cdevents.taskrun.finished.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "taskRun"
+ ],
+ "default": "taskRun"
+ },
+ "content": {
+ "properties": {
+ "taskName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "pipelineRun": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "outcome": {
+ "type": "string"
+ },
+ "errors": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/taskrun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/task-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.taskrun.started.0.2.0"
+ ],
+ "default": "dev.cdevents.taskrun.started.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "taskRun"
+ ],
+ "default": "taskRun"
+ },
+ "content": {
+ "properties": {
+ "taskName": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "pipelineRun": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/testcaserun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-case-run-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testcaserun.finished.0.2.0"
+ ],
+ "default": "dev.cdevents.testcaserun.finished.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testCaseRun"
+ ],
+ "default": "testCaseRun"
+ },
+ "content": {
+ "properties": {
+ "outcome": {
+ "type": "string",
+ "enum": [
+ "pass",
+ "fail",
+ "cancel",
+ "error"
+ ]
+ },
+ "severity": {
+ "type": "string",
+ "enum": [
+ "low",
+ "medium",
+ "high",
+ "critical"
+ ]
+ },
+ "reason": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuiteRun": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "testCase": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "performance",
+ "functional",
+ "unit",
+ "security",
+ "compliance",
+ "integration",
+ "e2e",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "outcome",
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/testcaserun-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-case-run-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testcaserun.queued.0.2.0"
+ ],
+ "default": "dev.cdevents.testcaserun.queued.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testCaseRun"
+ ],
+ "default": "testCaseRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuiteRun": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testCase": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "performance",
+ "functional",
+ "unit",
+ "security",
+ "compliance",
+ "integration",
+ "e2e",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/testcaserun-skipped-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-case-run-skipped-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testcaserun.skipped.0.1.0"
+ ],
+ "default": "dev.cdevents.testcaserun.skipped.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testCaseRun"
+ ],
+ "default": "testCaseRun"
+ },
+ "content": {
+ "properties": {
+ "reason": {
+ "type": "string"
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuiteRun": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "testCase": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "performance",
+ "functional",
+ "unit",
+ "security",
+ "compliance",
+ "integration",
+ "e2e",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": []
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/0.4.1/schema/testcaserun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-case-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testcaserun.started.0.2.0"
+ ],
+ "default": "dev.cdevents.testcaserun.started.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testCaseRun"
+ ],
+ "default": "testCaseRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuiteRun": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "testCase": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "performance",
+ "functional",
+ "unit",
+ "security",
+ "compliance",
+ "integration",
+ "e2e",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/testoutput-published-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-output-published-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testoutput.published.0.2.0"
+ ],
+ "default": "dev.cdevents.testoutput.published.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testOutput"
+ ],
+ "default": "testOutput"
+ },
+ "content": {
+ "properties": {
+ "outputType": {
+ "type": "string",
+ "enum": [
+ "report",
+ "video",
+ "image",
+ "log",
+ "other"
+ ]
+ },
+ "format": {
+ "type": "string",
+ "example": "application/pdf"
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ },
+ "testCaseRun": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "outputType",
+ "format"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/testsuiterun-finished-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-suite-run-finished-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testsuiterun.finished.0.2.0"
+ ],
+ "default": "dev.cdevents.testsuiterun.finished.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testSuiteRun"
+ ],
+ "default": "testSuiteRun"
+ },
+ "content": {
+ "properties": {
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuite": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "outcome": {
+ "type": "string",
+ "enum": [
+ "pass",
+ "fail",
+ "cancel",
+ "error"
+ ]
+ },
+ "severity": {
+ "type": "string",
+ "enum": [
+ "low",
+ "medium",
+ "high",
+ "critical"
+ ]
+ },
+ "reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "outcome",
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/testsuiterun-queued-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-suite-run-queued-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testsuiterun.queued.0.2.0"
+ ],
+ "default": "dev.cdevents.testsuiterun.queued.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testSuiteRun"
+ ],
+ "default": "testSuiteRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuite": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/testsuiterun-started-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/test-suite-run-started-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.testsuiterun.started.0.2.0"
+ ],
+ "default": "dev.cdevents.testsuiterun.started.0.2.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "testSuiteRun"
+ ],
+ "default": "testSuiteRun"
+ },
+ "content": {
+ "properties": {
+ "trigger": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "manual",
+ "pipeline",
+ "event",
+ "schedule",
+ "other"
+ ]
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ },
+ "environment": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "testSuite": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "version": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "uri": {
+ "type": "string",
+ "format": "uri"
+ }
+ }
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "environment"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/ticket-closed-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/ticket-closed-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.ticket.closed.0.1.0"
+ ],
+ "default": "dev.cdevents.ticket.closed.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "ticket"
+ ],
+ "default": "ticket"
+ },
+ "content": {
+ "properties": {
+ "summary": {
+ "type": "string"
+ },
+ "ticketType": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "bug",
+ "enhancement",
+ "incident",
+ "task",
+ "question"
+ ]
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "group": {
+ "type": "string"
+ },
+ "creator": {
+ "type": "string",
+ "minLength": 1
+ },
+ "assignees": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "priority": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "low",
+ "medium",
+ "high"
+ ]
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "milestone": {
+ "type": "string"
+ },
+ "uri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "resolution": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "completed",
+ "withdrawn",
+ "duplicate"
+ ]
+ },
+ {
+ "type": "string",
+ "minLength": 1
+ }
+ ]
+ },
+ "updatedBy": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "uri",
+ "resolution"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/ticket-created-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/ticket-created-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.ticket.created.0.1.0"
+ ],
+ "default": "dev.cdevents.ticket.created.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "ticket"
+ ],
+ "default": "ticket"
+ },
+ "content": {
+ "properties": {
+ "summary": {
+ "type": "string"
+ },
+ "ticketType": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "bug",
+ "enhancement",
+ "incident",
+ "task",
+ "question"
+ ]
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "group": {
+ "type": "string"
+ },
+ "creator": {
+ "type": "string",
+ "minLength": 1
+ },
+ "assignees": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "priority": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "low",
+ "medium",
+ "high"
+ ]
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "milestone": {
+ "type": "string"
+ },
+ "uri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "summary",
+ "creator",
+ "uri"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ "https://cdevents.dev/0.4.1/schema/ticket-updated-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/0.4.1/schema/ticket-updated-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.ticket.updated.0.1.0"
+ ],
+ "default": "dev.cdevents.ticket.updated.0.1.0"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "ticket"
+ ],
+ "default": "ticket"
+ },
+ "content": {
+ "properties": {
+ "summary": {
+ "type": "string"
+ },
+ "ticketType": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "bug",
+ "enhancement",
+ "incident",
+ "task",
+ "question"
+ ]
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "group": {
+ "type": "string"
+ },
+ "creator": {
+ "type": "string",
+ "minLength": 1
+ },
+ "assignees": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "priority": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": [
+ "low",
+ "medium",
+ "high"
+ ]
+ },
+ {
+ "type": "string"
+ }
+ ]
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "milestone": {
+ "type": "string"
+ },
+ "updatedBy": {
+ "type": "string"
+ },
+ "uri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "uri"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
+`,
+ }
+)
+
+func init() {
+ compiler, err := newJsonSchemaCompiler()
+ panicOnError(err)
+ CompiledSchemas = make(map[string]*jsonschema.Schema)
+ for url, _ := range SchemasById {
+ sch, err := compiler.Compile(url)
+ panicOnError(err)
+ CompiledSchemas[url] = sch
+ }
+}
+func (db SchemaDB) GetBySpecSubjectPredicate(specVersion, subject, predicate string) (string, *jsonschema.Schema, error) {
+ id := fmt.Sprintf(CDEventsSchemaURLTemplate, specVersion, subject, predicate)
+ if schemaString, found := db[id]; found {
+ return id, schemaString, nil
+ }
+ return "", nil, fmt.Errorf("event %s/%s not found for spec %s in local schema DB", specVersion, subject, predicate)
+}
+
+func newJsonSchemaCompiler() (*jsonschema.Compiler, error) {
+ c := jsonschema.NewCompiler()
+ for url, content := range SchemasById {
+ var loaded map[string]interface{}
+ err := json.Unmarshal([]byte(content), &loaded)
+ if err != nil {
+ return nil, err
+ }
+ if err := c.AddResource(url, loaded); err != nil {
+ return nil, err
+ }
+ }
+ return c, nil
+}
diff --git a/pkg/api/spec-v0.4 b/pkg/api/spec-v0.4
new file mode 160000
index 0000000..f95df21
--- /dev/null
+++ b/pkg/api/spec-v0.4
@@ -0,0 +1 @@
+Subproject commit f95df21d7e3045a37d2c85e07f90805130fd65be
diff --git a/pkg/api/tests/examples/future_event_major_version.json b/pkg/api/tests-v99.0/examples/future_event_major_version.json
similarity index 100%
rename from pkg/api/tests/examples/future_event_major_version.json
rename to pkg/api/tests-v99.0/examples/future_event_major_version.json
diff --git a/pkg/api/tests/examples/future_event_minor_version.json b/pkg/api/tests-v99.0/examples/future_event_minor_version.json
similarity index 100%
rename from pkg/api/tests/examples/future_event_minor_version.json
rename to pkg/api/tests-v99.0/examples/future_event_minor_version.json
diff --git a/pkg/api/tests/examples/future_event_patch_version.json b/pkg/api/tests-v99.0/examples/future_event_patch_version.json
similarity index 100%
rename from pkg/api/tests/examples/future_event_patch_version.json
rename to pkg/api/tests-v99.0/examples/future_event_patch_version.json
diff --git a/pkg/api/tests/examples/implicit_json_custom_data.json b/pkg/api/tests-v99.0/examples/implicit_json_custom_data.json
similarity index 100%
rename from pkg/api/tests/examples/implicit_json_custom_data.json
rename to pkg/api/tests-v99.0/examples/implicit_json_custom_data.json
diff --git a/pkg/api/tests/examples/json_custom_data.json b/pkg/api/tests-v99.0/examples/json_custom_data.json
similarity index 100%
rename from pkg/api/tests/examples/json_custom_data.json
rename to pkg/api/tests-v99.0/examples/json_custom_data.json
diff --git a/pkg/api/tests/examples/non_json_custom_data.json b/pkg/api/tests-v99.0/examples/non_json_custom_data.json
similarity index 100%
rename from pkg/api/tests/examples/non_json_custom_data.json
rename to pkg/api/tests-v99.0/examples/non_json_custom_data.json
diff --git a/pkg/api/tests/examples/non_unmarshable.json b/pkg/api/tests-v99.0/examples/non_unmarshable.json
similarity index 100%
rename from pkg/api/tests/examples/non_unmarshable.json
rename to pkg/api/tests-v99.0/examples/non_unmarshable.json
diff --git a/pkg/api/tests/examples/past_event_patch_version.json b/pkg/api/tests-v99.0/examples/past_event_patch_version.json
similarity index 100%
rename from pkg/api/tests/examples/past_event_patch_version.json
rename to pkg/api/tests-v99.0/examples/past_event_patch_version.json
diff --git a/pkg/api/tests/examples/past_spec_patch_version.json b/pkg/api/tests-v99.0/examples/past_spec_patch_version.json
similarity index 100%
rename from pkg/api/tests/examples/past_spec_patch_version.json
rename to pkg/api/tests-v99.0/examples/past_spec_patch_version.json
diff --git a/pkg/api/tests/examples/unknown_type.json b/pkg/api/tests-v99.0/examples/unknown_type.json
similarity index 100%
rename from pkg/api/tests/examples/unknown_type.json
rename to pkg/api/tests-v99.0/examples/unknown_type.json
diff --git a/pkg/api/tests/examples/unparsable_context.json b/pkg/api/tests-v99.0/examples/unparsable_context.json
similarity index 100%
rename from pkg/api/tests/examples/unparsable_context.json
rename to pkg/api/tests-v99.0/examples/unparsable_context.json
diff --git a/pkg/api/tests/examples/unparsable_type.json b/pkg/api/tests-v99.0/examples/unparsable_type.json
similarity index 100%
rename from pkg/api/tests/examples/unparsable_type.json
rename to pkg/api/tests-v99.0/examples/unparsable_type.json
diff --git a/pkg/api/tests/schemas/foosubjectbarpredicate.json b/pkg/api/tests-v99.0/schemas/foosubjectbarpredicate.json
similarity index 100%
rename from pkg/api/tests/schemas/foosubjectbarpredicate.json
rename to pkg/api/tests-v99.0/schemas/foosubjectbarpredicate.json
diff --git a/pkg/api/tests-v99.1/examples/future_event_major_version.json b/pkg/api/tests-v99.1/examples/future_event_major_version.json
new file mode 100644
index 0000000..4a0b84b
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/future_event_major_version.json
@@ -0,0 +1,62 @@
+{
+ "context": {
+ "version": "99.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.999.1.0",
+ "timestamp": "2023-03-20T14:27:05.315384Z",
+ "chainId": "4c8cb7dd-3448-41de-8768-eec704e2829b",
+ "schemaUri": "https://myorg.com/schema/custom",
+ "links": [
+ {
+ "linkType": "RELATION",
+ "linkKind": "TRIGGER",
+ "target": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "PATH",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "END",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }
+ ]
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "contentRenamed": {
+ "referenceField": {
+ "id": "myChange123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {
+ "k1": "v1"
+ },
+ {
+ "k2": "v2"
+ }
+ ]
+ },
+ "customDataContentType": "application/json"
+}
diff --git a/pkg/api/tests-v99.1/examples/future_event_minor_version.json b/pkg/api/tests-v99.1/examples/future_event_minor_version.json
new file mode 100644
index 0000000..f398a80
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/future_event_minor_version.json
@@ -0,0 +1,72 @@
+{
+ "context": {
+ "version": "99.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.2.999.1",
+ "timestamp": "2023-03-20T14:27:05.315384Z",
+ "newContextField": "ignored",
+ "chainId": "4c8cb7dd-3448-41de-8768-eec704e2829b",
+ "schemaUri": "https://myorg.com/schema/custom",
+ "links": [
+ {
+ "linkType": "RELATION",
+ "linkKind": "TRIGGER",
+ "target": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "PATH",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "END",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }
+ ]
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "plainField": "testValue",
+ "artifactId": "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427",
+ "referenceField": {
+ "id": "myChange123"
+ },
+ "objectField": {
+ "required": "myChange123",
+ "optional": "/event/source/123"
+ }
+ },
+ "newSubjectField": "ignored"
+ },
+ "customData": {
+ "testValues": [
+ {
+ "k1": "v1"
+ },
+ {
+ "k2": "v2"
+ }
+ ]
+ },
+ "customDataContentType": "application/json",
+ "newRootField": "ignored"
+}
diff --git a/pkg/api/tests-v99.1/examples/future_event_patch_version.json b/pkg/api/tests-v99.1/examples/future_event_patch_version.json
new file mode 100644
index 0000000..c3b3b85
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/future_event_patch_version.json
@@ -0,0 +1,69 @@
+{
+ "context": {
+ "version": "99.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.2.2.999",
+ "timestamp": "2023-03-20T14:27:05.315384Z",
+ "chainId": "4c8cb7dd-3448-41de-8768-eec704e2829b",
+ "schemaUri": "https://myorg.com/schema/custom",
+ "links": [
+ {
+ "linkType": "RELATION",
+ "linkKind": "TRIGGER",
+ "target": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "PATH",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "END",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }
+ ]
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "plainField": "testValue",
+ "artifactId": "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427",
+ "referenceField": {
+ "id": "myChange123"
+ },
+ "objectField": {
+ "required": "myChange123",
+ "optional": "/event/source/123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {
+ "k1": "v1"
+ },
+ {
+ "k2": "v2"
+ }
+ ]
+ },
+ "customDataContentType": "application/json"
+}
diff --git a/pkg/api/tests-v99.1/examples/implicit_json_custom_data.json b/pkg/api/tests-v99.1/examples/implicit_json_custom_data.json
new file mode 100644
index 0000000..c0164b9
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/implicit_json_custom_data.json
@@ -0,0 +1,31 @@
+{
+ "context": {
+ "version": "99.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.2.2.3",
+ "timestamp": "2023-03-20T14:27:05.315384Z"
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "artifactId": "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427",
+ "plainField": "testValue",
+ "referenceField": {
+ "id": "myChange123"
+ },
+ "objectField": {
+ "required": "myChange123",
+ "optional": "/event/source/123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {"k1": "v1"},
+ {"k2": "v2"}
+ ]
+ }
+}
\ No newline at end of file
diff --git a/pkg/api/tests-v99.1/examples/json_custom_data.json b/pkg/api/tests-v99.1/examples/json_custom_data.json
new file mode 100644
index 0000000..df0d95a
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/json_custom_data.json
@@ -0,0 +1,65 @@
+{
+ "context": {
+ "version": "99.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.2.2.3",
+ "timestamp": "2023-03-20T14:27:05.315384Z",
+ "chainId": "4c8cb7dd-3448-41de-8768-eec704e2829b",
+ "schemaUri": "https://myorg.com/schema/custom",
+ "links": [
+ {
+ "linkType": "RELATION",
+ "linkKind": "TRIGGER",
+ "target": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "PATH",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "END",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }
+ ]
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "referenceField": {
+ "id": "myChange123"
+ },
+ "artifactId": "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427",
+ "plainField": "testValue",
+ "objectField": {
+ "required": "myChange123",
+ "optional": "/event/source/123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {"k1": "v1"},
+ {"k2": "v2"}
+ ]
+ },
+ "customDataContentType": "application/json"
+}
\ No newline at end of file
diff --git a/pkg/api/tests-v99.1/examples/non_json_custom_data.json b/pkg/api/tests-v99.1/examples/non_json_custom_data.json
new file mode 100644
index 0000000..6bf0081
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/non_json_custom_data.json
@@ -0,0 +1,60 @@
+{
+ "context": {
+ "version": "99.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.2.2.3",
+ "timestamp": "2023-03-20T14:27:05.315384Z",
+ "chainId": "4c8cb7dd-3448-41de-8768-eec704e2829b",
+ "schemaUri": "https://myorg.com/schema/custom",
+ "links": [
+ {
+ "linkType": "RELATION",
+ "linkKind": "TRIGGER",
+ "target": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "PATH",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "END",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }
+ ]
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "referenceField": {
+ "id": "myChange123"
+ },
+ "artifactId": "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427",
+ "plainField": "testValue",
+ "objectField": {
+ "required": "myChange123",
+ "optional": "/event/source/123"
+ }
+ }
+ },
+ "customData": "PHhtbD50ZXN0RGF0YTwveG1sPg==",
+ "customDataContentType": "application/xml"
+}
\ No newline at end of file
diff --git a/pkg/api/tests-v99.1/examples/non_unmarshable.json b/pkg/api/tests-v99.1/examples/non_unmarshable.json
new file mode 100644
index 0000000..99e586c
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/non_unmarshable.json
@@ -0,0 +1,26 @@
+{
+ "context": {
+ "version": "0.1.1",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.0.1.0",
+ "timestamp": "2023-03-20T14:27:05.315384Z"
+ },
+ "subject": {
+ "id": "mySubject123"@,
+ "source": "/event/source/123",
+ "type": "artifact",
+ "content": {
+ "change": {
+ "id": "myChange123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {"k1": "v1"},
+ {"k2": "v2"}
+ ]
+ },
+ "customDataContentType": "application/json"
+}
\ No newline at end of file
diff --git a/pkg/api/tests-v99.1/examples/past_event_patch_version.json b/pkg/api/tests-v99.1/examples/past_event_patch_version.json
new file mode 100644
index 0000000..8192baa
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/past_event_patch_version.json
@@ -0,0 +1,65 @@
+{
+ "context": {
+ "version": "99.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.2.2.0",
+ "timestamp": "2023-03-20T14:27:05.315384Z",
+ "chainId": "4c8cb7dd-3448-41de-8768-eec704e2829b",
+ "schemaUri": "https://myorg.com/schema/custom",
+ "links": [
+ {
+ "linkType": "RELATION",
+ "linkKind": "TRIGGER",
+ "target": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "PATH",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "END",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }
+ ]
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "plainField": "testValue",
+ "artifactId": "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427",
+ "referenceField": {
+ "id": "myChange123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {
+ "k1": "v1"
+ },
+ {
+ "k2": "v2"
+ }
+ ]
+ },
+ "customDataContentType": "application/json"
+}
diff --git a/pkg/api/tests-v99.1/examples/past_spec_patch_version.json b/pkg/api/tests-v99.1/examples/past_spec_patch_version.json
new file mode 100644
index 0000000..5064e9b
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/past_spec_patch_version.json
@@ -0,0 +1,65 @@
+{
+ "context": {
+ "version": "0.1.0",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.barpredicate.2.2.3",
+ "timestamp": "2023-03-20T14:27:05.315384Z",
+ "chainId": "4c8cb7dd-3448-41de-8768-eec704e2829b",
+ "schemaUri": "https://myorg.com/schema/custom",
+ "links": [
+ {
+ "linkType": "RELATION",
+ "linkKind": "TRIGGER",
+ "target": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "PATH",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }, {
+ "linkType": "END",
+ "from": {
+ "contextId": "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ },
+ "tags": {
+ "foo1": "bar",
+ "foo2": "bar"
+ }
+ }
+ ]
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "plainField": "testValue",
+ "artifactId": "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427",
+ "referenceField": {
+ "id": "myChange123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {
+ "k1": "v1"
+ },
+ {
+ "k2": "v2"
+ }
+ ]
+ },
+ "customDataContentType": "application/json"
+}
diff --git a/pkg/api/tests-v99.1/examples/unknown_type.json b/pkg/api/tests-v99.1/examples/unknown_type.json
new file mode 100644
index 0000000..30c753f
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/unknown_type.json
@@ -0,0 +1,30 @@
+{
+ "context": {
+ "version": "0.1.2",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject.gazumped.0.1.0",
+ "timestamp": "2023-03-20T14:27:05.315384Z"
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "change": {
+ "id": "myChange123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {
+ "k1": "v1"
+ },
+ {
+ "k2": "v2"
+ }
+ ]
+ },
+ "customDataContentType": "application/json"
+}
diff --git a/pkg/api/tests-v99.1/examples/unparsable_context.json b/pkg/api/tests-v99.1/examples/unparsable_context.json
new file mode 100644
index 0000000..6248a13
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/unparsable_context.json
@@ -0,0 +1,24 @@
+{
+ "context": {
+ "version": "0.1.0"&,
+ "source": "/event/source/123",
+ "type": "dev.cdevents.artifact.packaged.0.1.0",
+ "timestamp": "2023-03-20T14:27:05.315384Z"
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "contentRenamed": {
+ "change": {
+ "id": "myChange123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {"k1": "v1"},
+ {"k2": "v2"}
+ ]
+ },
+ "customDataContentType": "application/json"
+}
\ No newline at end of file
diff --git a/pkg/api/tests-v99.1/examples/unparsable_type.json b/pkg/api/tests-v99.1/examples/unparsable_type.json
new file mode 100644
index 0000000..b267e40
--- /dev/null
+++ b/pkg/api/tests-v99.1/examples/unparsable_type.json
@@ -0,0 +1,26 @@
+{
+ "context": {
+ "version": "0.1.1",
+ "id": "271069a8-fc18-44f1-b38f-9d70a1695819",
+ "source": "/event/source/123",
+ "type": "dev.cdevents.foosubject_barpredicate_0.1.0",
+ "timestamp": "2023-03-20T14:27:05.315384Z"
+ },
+ "subject": {
+ "id": "mySubject123",
+ "source": "/event/source/123",
+ "type": "fooSubject",
+ "content": {
+ "change": {
+ "id": "myChange123"
+ }
+ }
+ },
+ "customData": {
+ "testValues": [
+ {"k1": "v1"},
+ {"k2": "v2"}
+ ]
+ },
+ "customDataContentType": "application/json"
+}
\ No newline at end of file
diff --git a/pkg/api/tests-v99.1/schemas/foosubjectbarpredicate.json b/pkg/api/tests-v99.1/schemas/foosubjectbarpredicate.json
new file mode 100644
index 0000000..d678264
--- /dev/null
+++ b/pkg/api/tests-v99.1/schemas/foosubjectbarpredicate.json
@@ -0,0 +1,155 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/99.1.0/schema/foosubject-barpredicate-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.foosubject.barpredicate.2.2.3"
+ ],
+ "default": "dev.cdevents.foosubject.barpredicate.2.2.3"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "https://cdevents.dev/0.4.1/schema/links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "fooSubject"
+ ],
+ "default": "fooSubject"
+ },
+ "content": {
+ "properties": {
+ "plainField": {
+ "type": "string",
+ "minLength": 1
+ },
+ "referenceField": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "objectField": {
+ "properties": {
+ "required": {
+ "type": "string",
+ "minLength": 1
+ },
+ "optional": {
+ "type": "string",
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "required"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "plainField",
+ "referenceField"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}
\ No newline at end of file
diff --git a/pkg/api/types.go b/pkg/api/types.go
index 6b86e2b..b68bfdb 100644
--- a/pkg/api/types.go
+++ b/pkg/api/types.go
@@ -26,6 +26,7 @@ import (
"strings"
"time"
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
"golang.org/x/mod/semver"
)
@@ -34,9 +35,20 @@ const (
CDEventsSpecVersion = "0.3.0"
CDEventsSchemaURLTemplate = "https://cdevents.dev/%s/schema/%s-%s-event"
CDEventsTypeRegex = "^dev\\.cdevents\\.(?P[a-z]+)\\.(?P[a-z]+)\\.(?P.*)$"
+
+ LinkTypePath LinkType = "PATH"
+ LinkTypeEnd LinkType = "END"
+ LinkTypeRelation LinkType = "RELATION"
)
-var CDEventsTypeCRegex = regexp.MustCompile(CDEventsTypeRegex)
+var (
+ CDEventsTypeCRegex = regexp.MustCompile(CDEventsTypeRegex)
+ LinkTypes = map[LinkType]interface{}{
+ LinkTypePath: "",
+ LinkTypeEnd: "",
+ LinkTypeRelation: "",
+ }
+)
type BaseContextReader interface {
@@ -83,10 +95,10 @@ type Context struct {
// types should be prefixed with dev.cdevents.
// One occurrence may have multiple events associated, as long as they have
// different event types
- Type CDEventType `json:"type" jsonschema:"required,minLength=1" validate:"event-type"`
+ Type CDEventType `json:"type" jsonschema:"required,minLength=1" validate:"required,structonly"`
// Spec: https://cdevents.dev/docs/spec/#timestamp
- // Description: Description: defines the time of the occurrence. When the
+ // Description: defines the time of the occurrence. When the
// time of the occurrence is not available, the time when the event was
// produced MAY be used. In case the transport layer should require a
// re-transmission of the event, the timestamp SHOULD NOT be updated, i.e.
@@ -94,6 +106,243 @@ type Context struct {
Timestamp time.Time `json:"timestamp" jsonschema:"required"`
}
+type Tags map[string]interface{}
+
+type LinkType string
+
+type EmbeddedLink interface {
+ // GetLinkType returns the content of the jsonschema "linkType"
+ GetLinkType() LinkType
+}
+
+type EmbeddedLinkWithTags interface {
+ EmbeddedLink
+
+ // GetTags returns the content of the jsonschema "tags" object field
+ // which defines no property and allows for additional ones
+ GetTags() Tags
+
+ // SetTags sets the content of the jsonschema "tags" object field
+ SetTags(tags Tags)
+}
+
+type EmbeddedLinkWithTagsAndSource interface {
+ EmbeddedLinkWithTags
+
+ // GetFrom returns the source of the link, in the "from" field
+ GetFrom() EventReference
+
+ // SetFrom sets the source of the link, in the "from" field
+ SetFrom(reference EventReference)
+}
+
+type EmbeddedLinkWithTagsAndRelation interface {
+ EmbeddedLinkWithTags
+
+ // GetTarget returns the target of the link, in the "target" field
+ GetTarget() EventReference
+
+ // SetTarget sets the target of the link, in the "target" field
+ SetTarget(reference EventReference)
+
+ // GetLinkKind returns the link kind, in the "linkKind" field
+ GetLinkKind() string
+
+ // SetLinkKind sets the kind of the link, in the "linkKind" field
+ SetLinkKind(kind string)
+}
+
+// EventReference contains the ID of a linked event
+type EventReference struct {
+ // ContextId is the ID of the linked event
+ ContextId string `json:"contextId" jsonschema:"required,minLength=1"`
+}
+
+// embeddedLinkPath is private so that NewEmbeddedLinkPath must be used
+// to create an object with correct defaults
+type embeddedLinkPath struct {
+ LinkType LinkType `json:"linkType" jsonschema:"required,minLength=1" validate:"event-link-type"`
+ From EventReference `json:"from" jsonschema:"required,minLength=1"`
+ Tags Tags `json:"tags"`
+}
+
+func (l embeddedLinkPath) GetLinkType() LinkType {
+ return l.LinkType
+}
+
+func (l embeddedLinkPath) GetTags() Tags {
+ return l.Tags
+}
+
+func (l embeddedLinkPath) GetFrom() EventReference {
+ return l.From
+}
+
+func (l *embeddedLinkPath) SetTags(tags Tags) {
+ l.Tags = tags
+}
+
+func (l *embeddedLinkPath) SetFrom(from EventReference) {
+ l.From = from
+}
+
+func NewEmbeddedLinkPath() EmbeddedLinkWithTagsAndSource {
+ return &embeddedLinkPath{
+ LinkType: LinkTypePath,
+ }
+}
+
+// embeddedLinkPath is private so that NewEmbeddedLinkPath must be used
+// to create an object with correct defaults
+type embeddedLinkEnd struct {
+ LinkType LinkType `json:"linkType" jsonschema:"required,minLength=1" validate:"event-link-type"`
+ From EventReference `json:"from" jsonschema:"required,minLength=1"`
+ Tags Tags `json:"tags"`
+}
+
+func (l embeddedLinkEnd) GetLinkType() LinkType {
+ return l.LinkType
+}
+
+func (l embeddedLinkEnd) GetTags() Tags {
+ return l.Tags
+}
+
+func (l embeddedLinkEnd) GetFrom() EventReference {
+ return l.From
+}
+
+func (l *embeddedLinkEnd) SetTags(tags Tags) {
+ l.Tags = tags
+}
+
+func (l *embeddedLinkEnd) SetFrom(from EventReference) {
+ l.From = from
+}
+
+func NewEmbeddedLinkEnd() EmbeddedLinkWithTagsAndSource {
+ return &embeddedLinkEnd{
+ LinkType: LinkTypeEnd,
+ }
+}
+
+// embeddedLinkPath is private so that NewEmbeddedLinkPath must be used
+// to create an object with correct defaults
+type embeddedLinkRelation struct {
+ LinkType LinkType `json:"linkType" jsonschema:"required,minLength=1" validate:"event-link-type"`
+ LinkKind string `json:"linkKind" jsonschema:"required,minLength=1"`
+ Target EventReference `json:"target" jsonschema:"required,minLength=1"`
+ Tags Tags `json:"tags"`
+}
+
+func (l embeddedLinkRelation) GetLinkType() LinkType {
+ return l.LinkType
+}
+
+func (l embeddedLinkRelation) GetLinkKind() string {
+ return l.LinkKind
+}
+
+func (l embeddedLinkRelation) GetTags() Tags {
+ return l.Tags
+}
+
+func (l embeddedLinkRelation) GetTarget() EventReference {
+ return l.Target
+}
+
+func (l *embeddedLinkRelation) SetLinkKind(linkKind string) {
+ l.LinkKind = linkKind
+}
+
+func (l *embeddedLinkRelation) SetTags(tags Tags) {
+ l.Tags = tags
+}
+
+func (l *embeddedLinkRelation) SetTarget(target EventReference) {
+ l.Target = target
+}
+
+func NewEmbeddedLinkRelation() EmbeddedLinkWithTagsAndRelation {
+ return &embeddedLinkRelation{
+ LinkType: LinkTypeRelation,
+ }
+}
+
+type EmbeddedLinksArray []EmbeddedLinkWithTags
+
+func (ela *EmbeddedLinksArray) UnmarshalJSON(b []byte) error {
+ var rawEmbeddedLinks []*json.RawMessage
+ err := json.Unmarshal(b, &rawEmbeddedLinks)
+ if err != nil {
+ return err
+ }
+
+ m := &struct {
+ LinkType LinkType `json:"linkType"`
+ }{}
+ receiver := make([]EmbeddedLinkWithTags, len(rawEmbeddedLinks))
+ for index, rawEmbeddedLink := range rawEmbeddedLinks {
+ err = json.Unmarshal(*rawEmbeddedLink, &m)
+ if err != nil {
+ return err
+ }
+ if m.LinkType == LinkTypeEnd {
+ var e embeddedLinkEnd
+ err = json.Unmarshal(*rawEmbeddedLink, &e)
+ if err != nil {
+ return err
+ }
+ receiver[index] = &e
+ } else if m.LinkType == LinkTypePath {
+ var e embeddedLinkPath
+ err = json.Unmarshal(*rawEmbeddedLink, &e)
+ if err != nil {
+ return err
+ }
+ receiver[index] = &e
+ } else if m.LinkType == LinkTypeRelation {
+ var e embeddedLinkRelation
+ err = json.Unmarshal(*rawEmbeddedLink, &e)
+ if err != nil {
+ return err
+ }
+ receiver[index] = &e
+ } else {
+ return fmt.Errorf("unsupported link type %s found", m.LinkType)
+ }
+ }
+ *ela = receiver
+ return nil
+}
+
+type ContextLinks struct {
+ // Spec: https://cdevents.dev/docs/spec/#chain_id
+ // Description: Identifier for a chain as defined in the links spec
+ // https://github.com/cdevents/spec/blob/v0.4.1/links.md
+ ChainId string `json:"chainId,omitempty"`
+
+ // Spec: https://cdevents.dev/docs/spec/#links
+ // Description: Identifier for an event. Subsequent delivery attempts of the
+ // same event MAY share the same id. This attribute matches the syntax and
+ // semantics of the id attribute of CloudEvents:
+ // https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id
+ Links EmbeddedLinksArray `json:"links,omitempty" validate:"dive"`
+}
+
+type ContextCustom struct {
+ // Spec: https://cdevents.dev/docs/spec/#schemauri
+ // Description: ink to a jsonschema schema that further refines
+ // the event schema as defined by CDEvents.
+ SchemaUri string `json:"schemaUri,omitempty"`
+}
+
+type ContextV04 struct {
+ Context
+ ContextLinks
+ ContextCustom
+}
+
type Reference struct {
// Spec: https://cdevents.dev/docs/spec/#format-of-subjects
@@ -211,7 +460,7 @@ type CDEventReader interface {
GetSubject() Subject
// The URL and content of the schema file associated to the event type
- GetSchema() (string, string)
+ GetSchema() (string, *jsonschema.Schema, error)
// The custom data attached to the event
// Depends on GetCustomDataContentType()
@@ -256,6 +505,32 @@ type CDEventWriter interface {
SetCustomData(contentType string, data interface{}) error
}
+type CDEventReaderV04 interface {
+ CDEventReader
+
+ // The ChainId for the event
+ GetChainId() string
+
+ // The links array for the event
+ GetLinks() EmbeddedLinksArray
+
+ // The custom schema URI
+ GetSchemaUri() string
+}
+
+type CDEventWriterV04 interface {
+ CDEventWriter
+
+ // The ChainId for the event
+ SetChainId(chainId string)
+
+ // The links array for the event
+ SetLinks(links EmbeddedLinksArray)
+
+ // The custom schema URI
+ SetSchemaUri(schema string)
+}
+
type CDEventCustomDataEncoding string
func (t CDEventCustomDataEncoding) String() string {
@@ -300,6 +575,11 @@ type CDEvent interface {
CDEventWriter
}
+type CDEventV04 interface {
+ CDEventReaderV04
+ CDEventWriterV04
+}
+
// Used to implement type specific GetCustomDataRaw()
func GetCustomDataRaw(contentType string, data interface{}) ([]byte, error) {
switch data := data.(type) {
diff --git a/pkg/api/types_test.go b/pkg/api/types_test.go
index dbca3cb..b9bb644 100644
--- a/pkg/api/types_test.go
+++ b/pkg/api/types_test.go
@@ -22,7 +22,8 @@ import (
"encoding/json"
"testing"
- "github.com/cdevents/sdk-go/pkg/api"
+ api "github.com/cdevents/sdk-go/pkg/api"
+ testapi "github.com/cdevents/sdk-go/pkg/api/v990"
"github.com/google/go-cmp/cmp"
)
@@ -33,11 +34,11 @@ const (
var (
testObject = testType{TestData: "testValue"}
testJsonString []byte
- eventWithNonJsonCustomData *api.ArtifactPackagedEventV0_1_1
- eventWithInterfaceJsonCustomData *api.ArtifactPackagedEventV0_1_1
- eventWithInterfaceJsonImplicitCustomData *api.ArtifactPackagedEventV0_1_1
- eventWithJsonCustomData *api.ArtifactPackagedEventV0_1_1
- eventWithJsonImplicitCustomData *api.ArtifactPackagedEventV0_1_1
+ eventWithNonJsonCustomData *testapi.FooSubjectBarPredicateEvent
+ eventWithInterfaceJsonCustomData *testapi.FooSubjectBarPredicateEvent
+ eventWithInterfaceJsonImplicitCustomData *testapi.FooSubjectBarPredicateEvent
+ eventWithJsonCustomData *testapi.FooSubjectBarPredicateEvent
+ eventWithJsonImplicitCustomData *testapi.FooSubjectBarPredicateEvent
)
func init() {
@@ -45,23 +46,23 @@ func init() {
testJsonString, err = json.Marshal(testObject)
panicOnError(err)
- eventWithNonJsonCustomData, _ = api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ eventWithNonJsonCustomData, _ = testapi.NewFooSubjectBarPredicateEvent()
eventWithNonJsonCustomData.CustomDataContentType = "application/xml"
eventWithNonJsonCustomData.CustomData = []byte(testXmlString)
- eventWithJsonCustomData, _ = api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ eventWithJsonCustomData, _ = testapi.NewFooSubjectBarPredicateEvent()
eventWithJsonCustomData.CustomDataContentType = "application/json"
eventWithJsonCustomData.CustomData = testJsonString
- eventWithJsonImplicitCustomData, _ = api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ eventWithJsonImplicitCustomData, _ = testapi.NewFooSubjectBarPredicateEvent()
eventWithJsonImplicitCustomData.CustomDataContentType = ""
eventWithJsonImplicitCustomData.CustomData = testJsonString
- eventWithInterfaceJsonCustomData, _ = api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ eventWithInterfaceJsonCustomData, _ = testapi.NewFooSubjectBarPredicateEvent()
eventWithInterfaceJsonCustomData.CustomDataContentType = "application/json"
eventWithInterfaceJsonCustomData.CustomData = testObject
- eventWithInterfaceJsonImplicitCustomData, _ = api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ eventWithInterfaceJsonImplicitCustomData, _ = testapi.NewFooSubjectBarPredicateEvent()
eventWithInterfaceJsonImplicitCustomData.CustomDataContentType = ""
eventWithInterfaceJsonImplicitCustomData.CustomData = testObject
}
@@ -192,7 +193,7 @@ func TestSetCustomData(t *testing.T) {
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
- e, _ := api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ e, _ := testapi.NewFooSubjectBarPredicateEvent()
err := e.SetCustomData(tc.contentType, tc.data)
if err != nil {
t.Fatalf("expected to set the custom data, but got %v", err)
@@ -206,7 +207,7 @@ func TestSetCustomData(t *testing.T) {
}
func TestSetCustomDataInvalid(t *testing.T) {
- e, _ := api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ e, _ := testapi.NewFooSubjectBarPredicateEvent()
err := e.SetCustomData("application/xml", testType{TestData: "testValue"})
if err == nil {
t.Fatalf("did not expect this to work, but it did")
@@ -249,7 +250,7 @@ func TestGetCustomData(t *testing.T) {
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
- e, _ := api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ e, _ := testapi.NewFooSubjectBarPredicateEvent()
err := e.SetCustomData(tc.contentType, tc.data)
if err != nil {
t.Fatalf("expected to set the custom data, but got %v", err)
@@ -267,7 +268,7 @@ func TestGetCustomData(t *testing.T) {
}
func TestGetCustomDataInvalidJson(t *testing.T) {
- e, _ := api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ e, _ := testapi.NewFooSubjectBarPredicateEvent()
data := testType{TestData: "testValue"}
dataBytes, err := json.Marshal(data)
if err != nil {
@@ -284,7 +285,7 @@ func TestGetCustomDataInvalidJson(t *testing.T) {
}
func TestGetCustomDataXmlNotBytes(t *testing.T) {
- e, _ := api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ e, _ := testapi.NewFooSubjectBarPredicateEvent()
data := testType{TestData: "testValue"}
// Set using "application/json", else it won't be allowed
err := e.SetCustomData("application/json", data)
@@ -331,7 +332,7 @@ func TestGetCustomDataRaw(t *testing.T) {
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
- e, _ := api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ e, _ := testapi.NewFooSubjectBarPredicateEvent()
err := e.SetCustomData(tc.contentType, tc.data)
if err != nil {
t.Fatalf("expected to set the custom data, but got %v", err)
@@ -349,7 +350,7 @@ func TestGetCustomDataRaw(t *testing.T) {
}
func TestGetCustomDataRawXmlNotBytes(t *testing.T) {
- e, _ := api.NewArtifactPackagedEventV0_1_1(testSpecVersion)
+ e, _ := testapi.NewFooSubjectBarPredicateEvent()
data := testType{TestData: "testValue"}
// Set using "application/json", else it won't be allowed
err := e.SetCustomData("application/json", data)
diff --git a/pkg/api/v03/docs.go b/pkg/api/v03/docs.go
index 3d35c7a..5ae4183 100644
--- a/pkg/api/v03/docs.go
+++ b/pkg/api/v03/docs.go
@@ -28,245 +28,392 @@ import "github.com/cdevents/sdk-go/pkg/api"
var SpecVersion = "0.3.0"
type ArtifactPackagedEvent = api.ArtifactPackagedEventV0_1_1
+type ArtifactPackagedSubject = api.ArtifactPackagedSubjectV0_1_1
func NewArtifactPackagedEvent() (*ArtifactPackagedEvent, error) {
return api.NewArtifactPackagedEventV0_1_1(SpecVersion)
}
+var ArtifactPackagedEventType = api.ArtifactPackagedEventTypeV0_1_1
+
type ArtifactPublishedEvent = api.ArtifactPublishedEventV0_1_1
+type ArtifactPublishedSubject = api.ArtifactPublishedSubjectV0_1_1
func NewArtifactPublishedEvent() (*ArtifactPublishedEvent, error) {
return api.NewArtifactPublishedEventV0_1_1(SpecVersion)
}
+var ArtifactPublishedEventType = api.ArtifactPublishedEventTypeV0_1_1
+
type ArtifactSignedEvent = api.ArtifactSignedEventV0_1_0
+type ArtifactSignedSubject = api.ArtifactSignedSubjectV0_1_0
func NewArtifactSignedEvent() (*ArtifactSignedEvent, error) {
return api.NewArtifactSignedEventV0_1_0(SpecVersion)
}
+var ArtifactSignedEventType = api.ArtifactSignedEventTypeV0_1_0
+
type BranchCreatedEvent = api.BranchCreatedEventV0_1_2
+type BranchCreatedSubject = api.BranchCreatedSubjectV0_1_2
func NewBranchCreatedEvent() (*BranchCreatedEvent, error) {
return api.NewBranchCreatedEventV0_1_2(SpecVersion)
}
+var BranchCreatedEventType = api.BranchCreatedEventTypeV0_1_2
+
type BranchDeletedEvent = api.BranchDeletedEventV0_1_2
+type BranchDeletedSubject = api.BranchDeletedSubjectV0_1_2
func NewBranchDeletedEvent() (*BranchDeletedEvent, error) {
return api.NewBranchDeletedEventV0_1_2(SpecVersion)
}
+var BranchDeletedEventType = api.BranchDeletedEventTypeV0_1_2
+
type BuildFinishedEvent = api.BuildFinishedEventV0_1_1
+type BuildFinishedSubject = api.BuildFinishedSubjectV0_1_1
func NewBuildFinishedEvent() (*BuildFinishedEvent, error) {
return api.NewBuildFinishedEventV0_1_1(SpecVersion)
}
+var BuildFinishedEventType = api.BuildFinishedEventTypeV0_1_1
+
type BuildQueuedEvent = api.BuildQueuedEventV0_1_1
+type BuildQueuedSubject = api.BuildQueuedSubjectV0_1_1
func NewBuildQueuedEvent() (*BuildQueuedEvent, error) {
return api.NewBuildQueuedEventV0_1_1(SpecVersion)
}
+var BuildQueuedEventType = api.BuildQueuedEventTypeV0_1_1
+
type BuildStartedEvent = api.BuildStartedEventV0_1_1
+type BuildStartedSubject = api.BuildStartedSubjectV0_1_1
func NewBuildStartedEvent() (*BuildStartedEvent, error) {
return api.NewBuildStartedEventV0_1_1(SpecVersion)
}
+var BuildStartedEventType = api.BuildStartedEventTypeV0_1_1
+
type ChangeAbandonedEvent = api.ChangeAbandonedEventV0_1_2
+type ChangeAbandonedSubject = api.ChangeAbandonedSubjectV0_1_2
func NewChangeAbandonedEvent() (*ChangeAbandonedEvent, error) {
return api.NewChangeAbandonedEventV0_1_2(SpecVersion)
}
+var ChangeAbandonedEventType = api.ChangeAbandonedEventTypeV0_1_2
+
type ChangeCreatedEvent = api.ChangeCreatedEventV0_1_2
+type ChangeCreatedSubject = api.ChangeCreatedSubjectV0_1_2
func NewChangeCreatedEvent() (*ChangeCreatedEvent, error) {
return api.NewChangeCreatedEventV0_1_2(SpecVersion)
}
+var ChangeCreatedEventType = api.ChangeCreatedEventTypeV0_1_2
+
type ChangeMergedEvent = api.ChangeMergedEventV0_1_2
+type ChangeMergedSubject = api.ChangeMergedSubjectV0_1_2
func NewChangeMergedEvent() (*ChangeMergedEvent, error) {
return api.NewChangeMergedEventV0_1_2(SpecVersion)
}
+var ChangeMergedEventType = api.ChangeMergedEventTypeV0_1_2
+
type ChangeReviewedEvent = api.ChangeReviewedEventV0_1_2
+type ChangeReviewedSubject = api.ChangeReviewedSubjectV0_1_2
func NewChangeReviewedEvent() (*ChangeReviewedEvent, error) {
return api.NewChangeReviewedEventV0_1_2(SpecVersion)
}
+var ChangeReviewedEventType = api.ChangeReviewedEventTypeV0_1_2
+
type ChangeUpdatedEvent = api.ChangeUpdatedEventV0_1_2
+type ChangeUpdatedSubject = api.ChangeUpdatedSubjectV0_1_2
func NewChangeUpdatedEvent() (*ChangeUpdatedEvent, error) {
return api.NewChangeUpdatedEventV0_1_2(SpecVersion)
}
+var ChangeUpdatedEventType = api.ChangeUpdatedEventTypeV0_1_2
+
type EnvironmentCreatedEvent = api.EnvironmentCreatedEventV0_1_1
+type EnvironmentCreatedSubject = api.EnvironmentCreatedSubjectV0_1_1
func NewEnvironmentCreatedEvent() (*EnvironmentCreatedEvent, error) {
return api.NewEnvironmentCreatedEventV0_1_1(SpecVersion)
}
+var EnvironmentCreatedEventType = api.EnvironmentCreatedEventTypeV0_1_1
+
type EnvironmentDeletedEvent = api.EnvironmentDeletedEventV0_1_1
+type EnvironmentDeletedSubject = api.EnvironmentDeletedSubjectV0_1_1
func NewEnvironmentDeletedEvent() (*EnvironmentDeletedEvent, error) {
return api.NewEnvironmentDeletedEventV0_1_1(SpecVersion)
}
+var EnvironmentDeletedEventType = api.EnvironmentDeletedEventTypeV0_1_1
+
type EnvironmentModifiedEvent = api.EnvironmentModifiedEventV0_1_1
+type EnvironmentModifiedSubject = api.EnvironmentModifiedSubjectV0_1_1
func NewEnvironmentModifiedEvent() (*EnvironmentModifiedEvent, error) {
return api.NewEnvironmentModifiedEventV0_1_1(SpecVersion)
}
+var EnvironmentModifiedEventType = api.EnvironmentModifiedEventTypeV0_1_1
+
type IncidentDetectedEvent = api.IncidentDetectedEventV0_1_0
+type IncidentDetectedSubject = api.IncidentDetectedSubjectV0_1_0
func NewIncidentDetectedEvent() (*IncidentDetectedEvent, error) {
return api.NewIncidentDetectedEventV0_1_0(SpecVersion)
}
+var IncidentDetectedEventType = api.IncidentDetectedEventTypeV0_1_0
+
type IncidentReportedEvent = api.IncidentReportedEventV0_1_0
+type IncidentReportedSubject = api.IncidentReportedSubjectV0_1_0
func NewIncidentReportedEvent() (*IncidentReportedEvent, error) {
return api.NewIncidentReportedEventV0_1_0(SpecVersion)
}
+var IncidentReportedEventType = api.IncidentReportedEventTypeV0_1_0
+
type IncidentResolvedEvent = api.IncidentResolvedEventV0_1_0
+type IncidentResolvedSubject = api.IncidentResolvedSubjectV0_1_0
func NewIncidentResolvedEvent() (*IncidentResolvedEvent, error) {
return api.NewIncidentResolvedEventV0_1_0(SpecVersion)
}
+var IncidentResolvedEventType = api.IncidentResolvedEventTypeV0_1_0
+
type PipelineRunFinishedEvent = api.PipelineRunFinishedEventV0_1_1
+type PipelineRunFinishedSubject = api.PipelineRunFinishedSubjectV0_1_1
func NewPipelineRunFinishedEvent() (*PipelineRunFinishedEvent, error) {
return api.NewPipelineRunFinishedEventV0_1_1(SpecVersion)
}
+var PipelineRunFinishedEventType = api.PipelineRunFinishedEventTypeV0_1_1
+
type PipelineRunQueuedEvent = api.PipelineRunQueuedEventV0_1_1
+type PipelineRunQueuedSubject = api.PipelineRunQueuedSubjectV0_1_1
func NewPipelineRunQueuedEvent() (*PipelineRunQueuedEvent, error) {
return api.NewPipelineRunQueuedEventV0_1_1(SpecVersion)
}
+var PipelineRunQueuedEventType = api.PipelineRunQueuedEventTypeV0_1_1
+
type PipelineRunStartedEvent = api.PipelineRunStartedEventV0_1_1
+type PipelineRunStartedSubject = api.PipelineRunStartedSubjectV0_1_1
func NewPipelineRunStartedEvent() (*PipelineRunStartedEvent, error) {
return api.NewPipelineRunStartedEventV0_1_1(SpecVersion)
}
+var PipelineRunStartedEventType = api.PipelineRunStartedEventTypeV0_1_1
+
type RepositoryCreatedEvent = api.RepositoryCreatedEventV0_1_1
+type RepositoryCreatedSubject = api.RepositoryCreatedSubjectV0_1_1
func NewRepositoryCreatedEvent() (*RepositoryCreatedEvent, error) {
return api.NewRepositoryCreatedEventV0_1_1(SpecVersion)
}
+var RepositoryCreatedEventType = api.RepositoryCreatedEventTypeV0_1_1
+
type RepositoryDeletedEvent = api.RepositoryDeletedEventV0_1_1
+type RepositoryDeletedSubject = api.RepositoryDeletedSubjectV0_1_1
func NewRepositoryDeletedEvent() (*RepositoryDeletedEvent, error) {
return api.NewRepositoryDeletedEventV0_1_1(SpecVersion)
}
+var RepositoryDeletedEventType = api.RepositoryDeletedEventTypeV0_1_1
+
type RepositoryModifiedEvent = api.RepositoryModifiedEventV0_1_1
+type RepositoryModifiedSubject = api.RepositoryModifiedSubjectV0_1_1
func NewRepositoryModifiedEvent() (*RepositoryModifiedEvent, error) {
return api.NewRepositoryModifiedEventV0_1_1(SpecVersion)
}
+var RepositoryModifiedEventType = api.RepositoryModifiedEventTypeV0_1_1
+
type ServiceDeployedEvent = api.ServiceDeployedEventV0_1_1
+type ServiceDeployedSubject = api.ServiceDeployedSubjectV0_1_1
func NewServiceDeployedEvent() (*ServiceDeployedEvent, error) {
return api.NewServiceDeployedEventV0_1_1(SpecVersion)
}
+var ServiceDeployedEventType = api.ServiceDeployedEventTypeV0_1_1
+
type ServicePublishedEvent = api.ServicePublishedEventV0_1_1
+type ServicePublishedSubject = api.ServicePublishedSubjectV0_1_1
func NewServicePublishedEvent() (*ServicePublishedEvent, error) {
return api.NewServicePublishedEventV0_1_1(SpecVersion)
}
+var ServicePublishedEventType = api.ServicePublishedEventTypeV0_1_1
+
type ServiceRemovedEvent = api.ServiceRemovedEventV0_1_1
+type ServiceRemovedSubject = api.ServiceRemovedSubjectV0_1_1
func NewServiceRemovedEvent() (*ServiceRemovedEvent, error) {
return api.NewServiceRemovedEventV0_1_1(SpecVersion)
}
+var ServiceRemovedEventType = api.ServiceRemovedEventTypeV0_1_1
+
type ServiceRolledbackEvent = api.ServiceRolledbackEventV0_1_1
+type ServiceRolledbackSubject = api.ServiceRolledbackSubjectV0_1_1
func NewServiceRolledbackEvent() (*ServiceRolledbackEvent, error) {
return api.NewServiceRolledbackEventV0_1_1(SpecVersion)
}
+var ServiceRolledbackEventType = api.ServiceRolledbackEventTypeV0_1_1
+
type ServiceUpgradedEvent = api.ServiceUpgradedEventV0_1_1
+type ServiceUpgradedSubject = api.ServiceUpgradedSubjectV0_1_1
func NewServiceUpgradedEvent() (*ServiceUpgradedEvent, error) {
return api.NewServiceUpgradedEventV0_1_1(SpecVersion)
}
+var ServiceUpgradedEventType = api.ServiceUpgradedEventTypeV0_1_1
+
type TaskRunFinishedEvent = api.TaskRunFinishedEventV0_1_1
+type TaskRunFinishedSubject = api.TaskRunFinishedSubjectV0_1_1
func NewTaskRunFinishedEvent() (*TaskRunFinishedEvent, error) {
return api.NewTaskRunFinishedEventV0_1_1(SpecVersion)
}
+var TaskRunFinishedEventType = api.TaskRunFinishedEventTypeV0_1_1
+
type TaskRunStartedEvent = api.TaskRunStartedEventV0_1_1
+type TaskRunStartedSubject = api.TaskRunStartedSubjectV0_1_1
func NewTaskRunStartedEvent() (*TaskRunStartedEvent, error) {
return api.NewTaskRunStartedEventV0_1_1(SpecVersion)
}
+var TaskRunStartedEventType = api.TaskRunStartedEventTypeV0_1_1
+
type TestCaseRunFinishedEvent = api.TestCaseRunFinishedEventV0_1_0
+type TestCaseRunFinishedSubject = api.TestCaseRunFinishedSubjectV0_1_0
+
+// TestCaseRunTestCaseRunSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunFinishedSubjectContentTestCase = api.TestCaseRunFinishedSubjectContentTestCaseV0_1_0
func NewTestCaseRunFinishedEvent() (*TestCaseRunFinishedEvent, error) {
return api.NewTestCaseRunFinishedEventV0_1_0(SpecVersion)
}
+var TestCaseRunFinishedEventType = api.TestCaseRunFinishedEventTypeV0_1_0
+
type TestCaseRunQueuedEvent = api.TestCaseRunQueuedEventV0_1_0
+type TestCaseRunQueuedSubject = api.TestCaseRunQueuedSubjectV0_1_0
+
+// TestCaseRunTestCaseRunSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunQueuedSubjectContentTestCase = api.TestCaseRunQueuedSubjectContentTestCaseV0_1_0
+
+// TestCaseRunTestCaseRunSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestCaseRunQueuedSubjectContentTrigger = api.TestCaseRunQueuedSubjectContentTriggerV0_1_0
func NewTestCaseRunQueuedEvent() (*TestCaseRunQueuedEvent, error) {
return api.NewTestCaseRunQueuedEventV0_1_0(SpecVersion)
}
+var TestCaseRunQueuedEventType = api.TestCaseRunQueuedEventTypeV0_1_0
+
type TestCaseRunStartedEvent = api.TestCaseRunStartedEventV0_1_0
+type TestCaseRunStartedSubject = api.TestCaseRunStartedSubjectV0_1_0
+
+// TestCaseRunTestCaseRunSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunStartedSubjectContentTestCase = api.TestCaseRunStartedSubjectContentTestCaseV0_1_0
+
+// TestCaseRunTestCaseRunSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestCaseRunStartedSubjectContentTrigger = api.TestCaseRunStartedSubjectContentTriggerV0_1_0
func NewTestCaseRunStartedEvent() (*TestCaseRunStartedEvent, error) {
return api.NewTestCaseRunStartedEventV0_1_0(SpecVersion)
}
+var TestCaseRunStartedEventType = api.TestCaseRunStartedEventTypeV0_1_0
+
type TestOutputPublishedEvent = api.TestOutputPublishedEventV0_1_0
+type TestOutputPublishedSubject = api.TestOutputPublishedSubjectV0_1_0
func NewTestOutputPublishedEvent() (*TestOutputPublishedEvent, error) {
return api.NewTestOutputPublishedEventV0_1_0(SpecVersion)
}
+var TestOutputPublishedEventType = api.TestOutputPublishedEventTypeV0_1_0
+
type TestSuiteRunFinishedEvent = api.TestSuiteRunFinishedEventV0_1_0
+type TestSuiteRunFinishedSubject = api.TestSuiteRunFinishedSubjectV0_1_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTestSuiteV0_1_0 holds the content of a TestSuite field in the content
+type TestSuiteRunFinishedSubjectContentTestSuite = api.TestSuiteRunFinishedSubjectContentTestSuiteV0_1_0
func NewTestSuiteRunFinishedEvent() (*TestSuiteRunFinishedEvent, error) {
return api.NewTestSuiteRunFinishedEventV0_1_0(SpecVersion)
}
+var TestSuiteRunFinishedEventType = api.TestSuiteRunFinishedEventTypeV0_1_0
+
type TestSuiteRunQueuedEvent = api.TestSuiteRunQueuedEventV0_1_0
+type TestSuiteRunQueuedSubject = api.TestSuiteRunQueuedSubjectV0_1_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTestSuiteV0_1_0 holds the content of a TestSuite field in the content
+type TestSuiteRunQueuedSubjectContentTestSuite = api.TestSuiteRunQueuedSubjectContentTestSuiteV0_1_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestSuiteRunQueuedSubjectContentTrigger = api.TestSuiteRunQueuedSubjectContentTriggerV0_1_0
func NewTestSuiteRunQueuedEvent() (*TestSuiteRunQueuedEvent, error) {
return api.NewTestSuiteRunQueuedEventV0_1_0(SpecVersion)
}
+var TestSuiteRunQueuedEventType = api.TestSuiteRunQueuedEventTypeV0_1_0
+
type TestSuiteRunStartedEvent = api.TestSuiteRunStartedEventV0_1_0
+type TestSuiteRunStartedSubject = api.TestSuiteRunStartedSubjectV0_1_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTestSuiteV0_1_0 holds the content of a TestSuite field in the content
+type TestSuiteRunStartedSubjectContentTestSuite = api.TestSuiteRunStartedSubjectContentTestSuiteV0_1_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestSuiteRunStartedSubjectContentTrigger = api.TestSuiteRunStartedSubjectContentTriggerV0_1_0
func NewTestSuiteRunStartedEvent() (*TestSuiteRunStartedEvent, error) {
return api.NewTestSuiteRunStartedEventV0_1_0(SpecVersion)
}
+var TestSuiteRunStartedEventType = api.TestSuiteRunStartedEventTypeV0_1_0
+
// NewFromJsonBytes builds a new CDEventReader from a JSON string as []bytes
// This works by unmarshalling the context first, extracting the event type and using
// that to unmarshal the rest of the event into the correct object.
// It assumes the context can be unmarshalled in a `Context` object.
func NewFromJsonBytes(event []byte) (api.CDEvent, error) {
- return api.NewFromJsonBytesContext[api.Context](event, CDEventsByUnversionedTypes)
+ return api.NewFromJsonBytesContext[api.CDEvent](event, CDEventsByUnversionedTypes)
}
// Build a new CDEventReader from a JSON string
diff --git a/pkg/api/examples_v0.3_test.go b/pkg/api/v03/examples_test.go
similarity index 75%
rename from pkg/api/examples_v0.3_test.go
rename to pkg/api/v03/examples_test.go
index 604ab4f..27435da 100644
--- a/pkg/api/examples_v0.3_test.go
+++ b/pkg/api/v03/examples_test.go
@@ -16,10 +16,11 @@ limitations under the License.
SPDX-License-Identifier: Apache-2.0
*/
-package api_test
+package v03_test
import (
"os"
+ "path/filepath"
"testing"
"time"
@@ -61,15 +62,15 @@ var (
testSignature = "MEYCIQCBT8U5ypDXWCjlNKfzTV4KH516/SK13NZSh8znnSMNkQIhAJ3XiQlc9PM1KyjITcZXHotdMB+J3NGua5T/yshmiPmp"
testTestEnvironment = &api.Reference{
Id: "dev", Source: "testkube-dev-123"}
- testTestCaseStarted = &api.TestCaseRunStartedSubjectContentTestCase{
+ testTestCaseStarted = &apiv03.TestCaseRunStartedSubjectContentTestCase{
Id: "92834723894", Name: "Login Test", Type: "integration", Version: "1.0"}
- testTestCaseFinished = &api.TestCaseRunFinishedSubjectContentTestCase{
+ testTestCaseFinished = &apiv03.TestCaseRunFinishedSubjectContentTestCase{
Id: "92834723894", Name: "Login Test", Type: "integration", Version: "1.0"}
- testTestCaseQueued = &api.TestCaseRunQueuedSubjectContentTestCase{
+ testTestCaseQueued = &apiv03.TestCaseRunQueuedSubjectContentTestCase{
Id: "92834723894", Name: "Login Test", Type: "integration", Version: "1.0"}
- testTestTriggerQueued = &api.TestCaseRunQueuedSubjectContentTrigger{
+ testTestTriggerQueued = &apiv03.TestCaseRunQueuedSubjectContentTrigger{
Type: "schedule"}
- testTestTriggerStarted = &api.TestCaseRunStartedSubjectContentTrigger{
+ testTestTriggerStarted = &apiv03.TestCaseRunStartedSubjectContentTrigger{
Type: "schedule"}
testTestOutcome = "pass"
testTestOutputSubjectId = "testrunreport-12123"
@@ -78,17 +79,17 @@ var (
testTestOutputOutputType = "video"
testTestCaseRun = &api.Reference{Id: testTestRunId, Source: "testkube-dev-123"}
testTestSuiteRunId = "myTestSuiteRun123"
- testTestSuiteStarted = &api.TestSuiteRunStartedSubjectContentTestSuite{
+ testTestSuiteStarted = &apiv03.TestSuiteRunStartedSubjectContentTestSuite{
Id: "92834723894", Name: "Auth TestSuite", Version: "1.0"}
- testTestSuiteQueued = &api.TestSuiteRunQueuedSubjectContentTestSuite{
+ testTestSuiteQueued = &apiv03.TestSuiteRunQueuedSubjectContentTestSuite{
Id: "92834723894", Name: "Auth TestSuite", Version: "1.0"}
- testTestSuiteFinished = &api.TestSuiteRunFinishedSubjectContentTestSuite{
+ testTestSuiteFinished = &apiv03.TestSuiteRunFinishedSubjectContentTestSuite{
Id: "92834723894", Name: "Auth TestSuite", Version: "1.0"}
testTestSuiteOutcome = "fail"
testTestSuiteReason = "Host 123.34.23.32 not found"
testTestSuiteSeverity = "critical"
- testTestSuiteTriggerQueued = &api.TestSuiteRunQueuedSubjectContentTrigger{Type: "pipeline"}
- testTestSuiteTriggerStarted = &api.TestSuiteRunStartedSubjectContentTrigger{Type: "pipeline"}
+ testTestSuiteTriggerQueued = &apiv03.TestSuiteRunQueuedSubjectContentTrigger{Type: "pipeline"}
+ testTestSuiteTriggerStarted = &apiv03.TestSuiteRunStartedSubjectContentTrigger{Type: "pipeline"}
examplesConsumed map[string][]byte
examplesProduced map[string]api.CDEvent
@@ -109,89 +110,89 @@ func init() {
}
}
-func exampleArtifactPackagedEvent(e *api.ArtifactPackagedEventV0_1_1) {
+func exampleArtifactPackagedEvent(e *apiv03.ArtifactPackagedEvent) {
// Set example specific fields
setContext(e, testArtifactSubjectId)
e.SetSubjectChange(&api.Reference{Id: testChangeId, Source: testChangeSource})
}
-func exampleArtifactPublishedEvent(e *api.ArtifactPublishedEventV0_1_1) {
+func exampleArtifactPublishedEvent(e *apiv03.ArtifactPublishedEvent) {
// Set example specific fields
setContext(e, testArtifactSubjectId)
}
-func exampleArtifactSignedEvent(e *api.ArtifactSignedEventV0_1_0) {
+func exampleArtifactSignedEvent(e *apiv03.ArtifactSignedEvent) {
// Set example specific fields
setContext(e, testArtifactSubjectId)
e.SetSubjectSignature(testSignature)
}
-func exampleBranchCreatedEvent(e *api.BranchCreatedEventV0_1_2) {
+func exampleBranchCreatedEvent(e *apiv03.BranchCreatedEvent) {
// Set example specific fields
e.SetSubjectRepository(testRepoReference)
}
-func exampleBranchDeletedEvent(e *api.BranchDeletedEventV0_1_2) {
+func exampleBranchDeletedEvent(e *apiv03.BranchDeletedEvent) {
// Set example specific fields
e.SetSubjectRepository(testRepoReference)
}
-func exampleBuildFinishedEvent(e *api.BuildFinishedEventV0_1_1) {
+func exampleBuildFinishedEvent(e *apiv03.BuildFinishedEvent) {
// Set example specific fields
e.SetSubjectArtifactId(testArtifactId)
}
-func exampleBuildQueuedEvent(e *api.BuildQueuedEventV0_1_1) {
+func exampleBuildQueuedEvent(e *apiv03.BuildQueuedEvent) {
// Set example specific fields
}
-func exampleBuildStartedEvent(e *api.BuildStartedEventV0_1_1) {
+func exampleBuildStartedEvent(e *apiv03.BuildStartedEvent) {
// Set example specific fields
}
-func exampleChangeAbandonedEvent(e *api.ChangeAbandonedEventV0_1_2) {
+func exampleChangeAbandonedEvent(e *apiv03.ChangeAbandonedEvent) {
// Set example specific fields
e.SetSubjectRepository(testRepoReference)
}
-func exampleChangeCreatedEvent(e *api.ChangeCreatedEventV0_1_2) {
+func exampleChangeCreatedEvent(e *apiv03.ChangeCreatedEvent) {
// Set example specific fields
e.SetSubjectRepository(testRepoReference)
}
-func exampleChangeMergedEvent(e *api.ChangeMergedEventV0_1_2) {
+func exampleChangeMergedEvent(e *apiv03.ChangeMergedEvent) {
// Set example specific fields
e.SetSubjectRepository(testRepoReference)
}
-func exampleChangeReviewedEvent(e *api.ChangeReviewedEventV0_1_2) {
+func exampleChangeReviewedEvent(e *apiv03.ChangeReviewedEvent) {
// Set example specific fields
e.SetSubjectRepository(testRepoReference)
}
-func exampleChangeUpdatedEvent(e *api.ChangeUpdatedEventV0_1_2) {
+func exampleChangeUpdatedEvent(e *apiv03.ChangeUpdatedEvent) {
// Set example specific fields
e.SetSubjectRepository(testRepoReference)
}
-func exampleEnvironmentCreatedEvent(e *api.EnvironmentCreatedEventV0_1_1) {
+func exampleEnvironmentCreatedEvent(e *apiv03.EnvironmentCreatedEvent) {
// Set example specific fields
e.SetSubjectName(testEnvironmentName)
e.SetSubjectUrl(testEnvironmentUrl)
}
-func exampleEnvironmentDeletedEvent(e *api.EnvironmentDeletedEventV0_1_1) {
+func exampleEnvironmentDeletedEvent(e *apiv03.EnvironmentDeletedEvent) {
// Set example specific fields
e.SetSubjectName(testEnvironmentName)
}
-func exampleEnvironmentModifiedEvent(e *api.EnvironmentModifiedEventV0_1_1) {
+func exampleEnvironmentModifiedEvent(e *apiv03.EnvironmentModifiedEvent) {
// Set example specific fields
e.SetSubjectName(testEnvironmentName)
e.SetSubjectUrl(testEnvironmentUrl)
}
-func exampleIncidentDetectedEvent(e *api.IncidentDetectedEventV0_1_0) {
+func exampleIncidentDetectedEvent(e *apiv03.IncidentDetectedEvent) {
// Set example specific fields
e.SetSubjectId(testIncidentSubjectId)
e.SetSource(testIncidentSource)
@@ -202,7 +203,7 @@ func exampleIncidentDetectedEvent(e *api.IncidentDetectedEventV0_1_0) {
e.SetSubjectDescription("Response time above threshold of 100ms")
}
-func exampleIncidentReportedEvent(e *api.IncidentReportedEventV0_1_0) {
+func exampleIncidentReportedEvent(e *apiv03.IncidentReportedEvent) {
// Set example specific fields
e.SetSubjectId(testIncidentSubjectId)
e.SetSource(testIncidentSource)
@@ -214,7 +215,7 @@ func exampleIncidentReportedEvent(e *api.IncidentReportedEventV0_1_0) {
e.SetSubjectTicketURI("https://my-issues.example/incidents/ticket-345")
}
-func exampleIncidentResolvedEvent(e *api.IncidentResolvedEventV0_1_0) {
+func exampleIncidentResolvedEvent(e *apiv03.IncidentResolvedEvent) {
// Set example specific fields
e.SetSubjectId(testIncidentSubjectId)
e.SetSource(testIncidentSource)
@@ -225,7 +226,7 @@ func exampleIncidentResolvedEvent(e *api.IncidentResolvedEventV0_1_0) {
e.SetSubjectDescription("Response time restored below 100ms")
}
-func examplePipelineRunFinishedEvent(e *api.PipelineRunFinishedEventV0_1_1) {
+func examplePipelineRunFinishedEvent(e *apiv03.PipelineRunFinishedEvent) {
// Set example specific fields
e.SetSubjectPipelineName(testPipeline)
e.SetSubjectUrl(testSubjecturl)
@@ -233,19 +234,19 @@ func examplePipelineRunFinishedEvent(e *api.PipelineRunFinishedEventV0_1_1) {
e.SetSubjectErrors(testPipelineErrors)
}
-func examplePipelineRunQueuedEvent(e *api.PipelineRunQueuedEventV0_1_1) {
+func examplePipelineRunQueuedEvent(e *apiv03.PipelineRunQueuedEvent) {
// Set example specific fields
e.SetSubjectPipelineName(testPipeline)
e.SetSubjectUrl(testSubjecturl)
}
-func examplePipelineRunStartedEvent(e *api.PipelineRunStartedEventV0_1_1) {
+func examplePipelineRunStartedEvent(e *apiv03.PipelineRunStartedEvent) {
// Set example specific fields
e.SetSubjectPipelineName(testPipeline)
e.SetSubjectUrl(testSubjecturl)
}
-func exampleRepositoryCreatedEvent(e *api.RepositoryCreatedEventV0_1_1) {
+func exampleRepositoryCreatedEvent(e *apiv03.RepositoryCreatedEvent) {
// Set example specific fields
e.SetSubjectName(testRepo)
e.SetSubjectOwner(testOwner)
@@ -253,7 +254,7 @@ func exampleRepositoryCreatedEvent(e *api.RepositoryCreatedEventV0_1_1) {
e.SetSubjectViewUrl(testViewUrl)
}
-func exampleRepositoryDeletedEvent(e *api.RepositoryDeletedEventV0_1_1) {
+func exampleRepositoryDeletedEvent(e *apiv03.RepositoryDeletedEvent) {
// Set example specific fields
e.SetSubjectName(testRepo)
e.SetSubjectOwner(testOwner)
@@ -261,7 +262,7 @@ func exampleRepositoryDeletedEvent(e *api.RepositoryDeletedEventV0_1_1) {
e.SetSubjectViewUrl(testViewUrl)
}
-func exampleRepositoryModifiedEvent(e *api.RepositoryModifiedEventV0_1_1) {
+func exampleRepositoryModifiedEvent(e *apiv03.RepositoryModifiedEvent) {
// Set example specific fields
e.SetSubjectName(testRepo)
e.SetSubjectOwner(testOwner)
@@ -269,35 +270,35 @@ func exampleRepositoryModifiedEvent(e *api.RepositoryModifiedEventV0_1_1) {
e.SetSubjectViewUrl(testViewUrl)
}
-func exampleServiceDeployedEvent(e *api.ServiceDeployedEventV0_1_1) {
+func exampleServiceDeployedEvent(e *apiv03.ServiceDeployedEvent) {
// Set example specific fields
e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
e.SetSubjectArtifactId(testArtifactId)
}
-func exampleServicePublishedEvent(e *api.ServicePublishedEventV0_1_1) {
+func exampleServicePublishedEvent(e *apiv03.ServicePublishedEvent) {
// Set example specific fields
e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
}
-func exampleServiceRemovedEvent(e *api.ServiceRemovedEventV0_1_1) {
+func exampleServiceRemovedEvent(e *apiv03.ServiceRemovedEvent) {
// Set example specific fields
e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
}
-func exampleServiceRolledbackEvent(e *api.ServiceRolledbackEventV0_1_1) {
+func exampleServiceRolledbackEvent(e *apiv03.ServiceRolledbackEvent) {
// Set example specific fields
e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
e.SetSubjectArtifactId(testArtifactId)
}
-func exampleServiceUpgradedEvent(e *api.ServiceUpgradedEventV0_1_1) {
+func exampleServiceUpgradedEvent(e *apiv03.ServiceUpgradedEvent) {
// Set example specific fields
e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
e.SetSubjectArtifactId(testArtifactId)
}
-func exampleTaskRunFinishedEvent(e *api.TaskRunFinishedEventV0_1_1) {
+func exampleTaskRunFinishedEvent(e *apiv03.TaskRunFinishedEvent) {
// Set example specific fields
e.SetSubjectTaskName(testTaskName)
e.SetSubjectUrl(testSubjecturl)
@@ -306,14 +307,14 @@ func exampleTaskRunFinishedEvent(e *api.TaskRunFinishedEventV0_1_1) {
e.SetSubjectErrors(testTaskRunErrors)
}
-func exampleTaskRunStartedEvent(e *api.TaskRunStartedEventV0_1_1) {
+func exampleTaskRunStartedEvent(e *apiv03.TaskRunStartedEvent) {
// Set example specific fields
e.SetSubjectTaskName(testTaskName)
e.SetSubjectUrl(testSubjecturl)
e.SetSubjectPipelineRun(&api.Reference{Id: testSubjectId})
}
-func exampleTestCaseRunFinishedEvent(e *api.TestCaseRunFinishedEventV0_1_0) {
+func exampleTestCaseRunFinishedEvent(e *apiv03.TestCaseRunFinishedEvent) {
// Set example specific fields
e.SetSubjectId(testTestRunId)
e.SetSubjectId(testTestRunId)
@@ -322,7 +323,7 @@ func exampleTestCaseRunFinishedEvent(e *api.TestCaseRunFinishedEventV0_1_0) {
e.SetSubjectOutcome(testTestOutcome)
}
-func exampleTestCaseRunQueuedEvent(e *api.TestCaseRunQueuedEventV0_1_0) {
+func exampleTestCaseRunQueuedEvent(e *apiv03.TestCaseRunQueuedEvent) {
// Set example specific fields
e.SetSubjectId(testTestRunId)
e.SetSubjectId(testTestRunId)
@@ -331,7 +332,7 @@ func exampleTestCaseRunQueuedEvent(e *api.TestCaseRunQueuedEventV0_1_0) {
e.SetSubjectTrigger(testTestTriggerQueued)
}
-func exampleTestCaseRunStartedEvent(e *api.TestCaseRunStartedEventV0_1_0) {
+func exampleTestCaseRunStartedEvent(e *apiv03.TestCaseRunStartedEvent) {
// Set example specific fields
e.SetSubjectId(testTestRunId)
e.SetSubjectEnvironment(testTestEnvironment)
@@ -339,7 +340,7 @@ func exampleTestCaseRunStartedEvent(e *api.TestCaseRunStartedEventV0_1_0) {
e.SetSubjectTrigger(testTestTriggerStarted)
}
-func exampleTestSuiteRunFinishedEvent(e *api.TestSuiteRunFinishedEventV0_1_0) {
+func exampleTestSuiteRunFinishedEvent(e *apiv03.TestSuiteRunFinishedEvent) {
// Set example specific fields
e.SetSubjectId(testTestSuiteRunId)
e.SetSubjectEnvironment(testTestEnvironment)
@@ -349,7 +350,7 @@ func exampleTestSuiteRunFinishedEvent(e *api.TestSuiteRunFinishedEventV0_1_0) {
e.SetSubjectReason(testTestSuiteReason)
}
-func exampleTestSuiteRunStartedEvent(e *api.TestSuiteRunStartedEventV0_1_0) {
+func exampleTestSuiteRunStartedEvent(e *apiv03.TestSuiteRunStartedEvent) {
// Set example specific fields
e.SetSubjectId(testTestSuiteRunId)
e.SetSubjectEnvironment(testTestEnvironment)
@@ -357,7 +358,7 @@ func exampleTestSuiteRunStartedEvent(e *api.TestSuiteRunStartedEventV0_1_0) {
e.SetSubjectTrigger(testTestSuiteTriggerStarted)
}
-func exampleTestSuiteRunQueuedEvent(e *api.TestSuiteRunQueuedEventV0_1_0) {
+func exampleTestSuiteRunQueuedEvent(e *apiv03.TestSuiteRunQueuedEvent) {
// Set example specific fields
e.SetSubjectId(testTestSuiteRunId)
e.SetSubjectEnvironment(testTestEnvironment)
@@ -365,7 +366,7 @@ func exampleTestSuiteRunQueuedEvent(e *api.TestSuiteRunQueuedEventV0_1_0) {
e.SetSubjectTrigger(testTestSuiteTriggerQueued)
}
-func exampleTestOutputPublishedEvent(e *api.TestOutputPublishedEventV0_1_0) {
+func exampleTestOutputPublishedEvent(e *apiv03.TestOutputPublishedEvent) {
// Set example specific fields
e.SetSubjectId(testTestOutputSubjectId)
e.SetSubjectSource(testTestOutputSubjectSource)
@@ -381,7 +382,7 @@ func init() {
for _, event := range apiv03.CDEventsTypes {
short := event.GetType().Short()
- examplesConsumed[short], err = os.ReadFile(examplesFolder + string(os.PathSeparator) + short + ".json")
+ examplesConsumed[short], err = os.ReadFile(filepath.Join("..", examplesFolder, short+".json"))
panicOnError(err)
}
}
diff --git a/pkg/api/factory_test.go b/pkg/api/v03/factory_test.go
similarity index 99%
rename from pkg/api/factory_test.go
rename to pkg/api/v03/factory_test.go
index a460d85..eae6f0a 100644
--- a/pkg/api/factory_test.go
+++ b/pkg/api/v03/factory_test.go
@@ -16,7 +16,7 @@ limitations under the License.
SPDX-License-Identifier: Apache-2.0
*/
-package api_test
+package v03_test
import (
"encoding/json"
diff --git a/pkg/api/zz_examples_test.go b/pkg/api/v03/zz_examples_test.go
similarity index 95%
rename from pkg/api/zz_examples_test.go
rename to pkg/api/v03/zz_examples_test.go
index e6da6bd..d658d61 100644
--- a/pkg/api/zz_examples_test.go
+++ b/pkg/api/v03/zz_examples_test.go
@@ -18,7 +18,7 @@ limitations under the License.
SPDX-License-Identifier: Apache-2.0
*/
-package api_test
+package v03_test
import (
"github.com/cdevents/sdk-go/pkg/api"
@@ -28,6 +28,30 @@ import (
func init() {
// Create events equal to examples in the spec
examplesProduced = make(map[string]api.CDEvent)
+
+ // Set up test links
+ tags := api.Tags{
+ "foo1": "bar",
+ "foo2": "bar",
+ }
+ reference := api.EventReference{
+ ContextId: testContextId,
+ }
+ elr := api.NewEmbeddedLinkRelation()
+ elr.SetTags(tags)
+ elr.SetLinkKind("TRIGGER")
+ elr.SetTarget(reference)
+ elp := api.NewEmbeddedLinkPath()
+ elp.SetTags(tags)
+ elp.SetFrom(reference)
+ ele := api.NewEmbeddedLinkEnd()
+ ele.SetTags(tags)
+ ele.SetFrom(reference)
+ testLinks = api.EmbeddedLinksArray{
+ elr, elp, ele,
+ }
+
+ // Create events for test
// ArtifactPackaged Event producer
newArtifactPackaged, _ := specv03.NewArtifactPackagedEvent()
setContext(newArtifactPackaged, testSubjectId)
diff --git a/pkg/api/zz_factory_test.go b/pkg/api/v03/zz_factory_test.go
similarity index 51%
rename from pkg/api/zz_factory_test.go
rename to pkg/api/v03/zz_factory_test.go
index 2df50f4..ec23c73 100644
--- a/pkg/api/zz_factory_test.go
+++ b/pkg/api/v03/zz_factory_test.go
@@ -18,23 +18,26 @@ limitations under the License.
SPDX-License-Identifier: Apache-2.0
*/
-package api_test
+package v03_test
-import "github.com/cdevents/sdk-go/pkg/api"
+import (
+ "github.com/cdevents/sdk-go/pkg/api"
+ apiv03 "github.com/cdevents/sdk-go/pkg/api/v03"
+)
func init() {
tests = []testNewCDEventType{}
tests = append(tests, testNewCDEventType{
name: "artifact packaged",
- eventType: api.ArtifactPackagedEventTypeV0_1_1.String(),
- expectedEvent: &api.ArtifactPackagedEventV0_1_1{
+ eventType: apiv03.ArtifactPackagedEventType.String(),
+ expectedEvent: &apiv03.ArtifactPackagedEvent{
Context: api.Context{
- Type: api.ArtifactPackagedEventTypeV0_1_1,
+ Type: apiv03.ArtifactPackagedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ArtifactPackagedSubject{
+ Subject: apiv03.ArtifactPackagedSubject{
SubjectBase: api.SubjectBase{
Type: "artifact",
},
@@ -43,15 +46,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "artifact published",
- eventType: api.ArtifactPublishedEventTypeV0_1_1.String(),
- expectedEvent: &api.ArtifactPublishedEventV0_1_1{
+ eventType: apiv03.ArtifactPublishedEventType.String(),
+ expectedEvent: &apiv03.ArtifactPublishedEvent{
Context: api.Context{
- Type: api.ArtifactPublishedEventTypeV0_1_1,
+ Type: apiv03.ArtifactPublishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ArtifactPublishedSubject{
+ Subject: apiv03.ArtifactPublishedSubject{
SubjectBase: api.SubjectBase{
Type: "artifact",
},
@@ -60,15 +63,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "artifact signed",
- eventType: api.ArtifactSignedEventTypeV0_1_0.String(),
- expectedEvent: &api.ArtifactSignedEventV0_1_0{
+ eventType: apiv03.ArtifactSignedEventType.String(),
+ expectedEvent: &apiv03.ArtifactSignedEvent{
Context: api.Context{
- Type: api.ArtifactSignedEventTypeV0_1_0,
+ Type: apiv03.ArtifactSignedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ArtifactSignedSubject{
+ Subject: apiv03.ArtifactSignedSubject{
SubjectBase: api.SubjectBase{
Type: "artifact",
},
@@ -77,15 +80,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "branch created",
- eventType: api.BranchCreatedEventTypeV0_1_2.String(),
- expectedEvent: &api.BranchCreatedEventV0_1_2{
+ eventType: apiv03.BranchCreatedEventType.String(),
+ expectedEvent: &apiv03.BranchCreatedEvent{
Context: api.Context{
- Type: api.BranchCreatedEventTypeV0_1_2,
+ Type: apiv03.BranchCreatedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.BranchCreatedSubject{
+ Subject: apiv03.BranchCreatedSubject{
SubjectBase: api.SubjectBase{
Type: "branch",
},
@@ -94,15 +97,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "branch deleted",
- eventType: api.BranchDeletedEventTypeV0_1_2.String(),
- expectedEvent: &api.BranchDeletedEventV0_1_2{
+ eventType: apiv03.BranchDeletedEventType.String(),
+ expectedEvent: &apiv03.BranchDeletedEvent{
Context: api.Context{
- Type: api.BranchDeletedEventTypeV0_1_2,
+ Type: apiv03.BranchDeletedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.BranchDeletedSubject{
+ Subject: apiv03.BranchDeletedSubject{
SubjectBase: api.SubjectBase{
Type: "branch",
},
@@ -111,15 +114,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "build finished",
- eventType: api.BuildFinishedEventTypeV0_1_1.String(),
- expectedEvent: &api.BuildFinishedEventV0_1_1{
+ eventType: apiv03.BuildFinishedEventType.String(),
+ expectedEvent: &apiv03.BuildFinishedEvent{
Context: api.Context{
- Type: api.BuildFinishedEventTypeV0_1_1,
+ Type: apiv03.BuildFinishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.BuildFinishedSubject{
+ Subject: apiv03.BuildFinishedSubject{
SubjectBase: api.SubjectBase{
Type: "build",
},
@@ -128,15 +131,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "build queued",
- eventType: api.BuildQueuedEventTypeV0_1_1.String(),
- expectedEvent: &api.BuildQueuedEventV0_1_1{
+ eventType: apiv03.BuildQueuedEventType.String(),
+ expectedEvent: &apiv03.BuildQueuedEvent{
Context: api.Context{
- Type: api.BuildQueuedEventTypeV0_1_1,
+ Type: apiv03.BuildQueuedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.BuildQueuedSubject{
+ Subject: apiv03.BuildQueuedSubject{
SubjectBase: api.SubjectBase{
Type: "build",
},
@@ -145,15 +148,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "build started",
- eventType: api.BuildStartedEventTypeV0_1_1.String(),
- expectedEvent: &api.BuildStartedEventV0_1_1{
+ eventType: apiv03.BuildStartedEventType.String(),
+ expectedEvent: &apiv03.BuildStartedEvent{
Context: api.Context{
- Type: api.BuildStartedEventTypeV0_1_1,
+ Type: apiv03.BuildStartedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.BuildStartedSubject{
+ Subject: apiv03.BuildStartedSubject{
SubjectBase: api.SubjectBase{
Type: "build",
},
@@ -162,15 +165,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "change abandoned",
- eventType: api.ChangeAbandonedEventTypeV0_1_2.String(),
- expectedEvent: &api.ChangeAbandonedEventV0_1_2{
+ eventType: apiv03.ChangeAbandonedEventType.String(),
+ expectedEvent: &apiv03.ChangeAbandonedEvent{
Context: api.Context{
- Type: api.ChangeAbandonedEventTypeV0_1_2,
+ Type: apiv03.ChangeAbandonedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ChangeAbandonedSubject{
+ Subject: apiv03.ChangeAbandonedSubject{
SubjectBase: api.SubjectBase{
Type: "change",
},
@@ -179,15 +182,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "change created",
- eventType: api.ChangeCreatedEventTypeV0_1_2.String(),
- expectedEvent: &api.ChangeCreatedEventV0_1_2{
+ eventType: apiv03.ChangeCreatedEventType.String(),
+ expectedEvent: &apiv03.ChangeCreatedEvent{
Context: api.Context{
- Type: api.ChangeCreatedEventTypeV0_1_2,
+ Type: apiv03.ChangeCreatedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ChangeCreatedSubject{
+ Subject: apiv03.ChangeCreatedSubject{
SubjectBase: api.SubjectBase{
Type: "change",
},
@@ -196,15 +199,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "change merged",
- eventType: api.ChangeMergedEventTypeV0_1_2.String(),
- expectedEvent: &api.ChangeMergedEventV0_1_2{
+ eventType: apiv03.ChangeMergedEventType.String(),
+ expectedEvent: &apiv03.ChangeMergedEvent{
Context: api.Context{
- Type: api.ChangeMergedEventTypeV0_1_2,
+ Type: apiv03.ChangeMergedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ChangeMergedSubject{
+ Subject: apiv03.ChangeMergedSubject{
SubjectBase: api.SubjectBase{
Type: "change",
},
@@ -213,15 +216,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "change reviewed",
- eventType: api.ChangeReviewedEventTypeV0_1_2.String(),
- expectedEvent: &api.ChangeReviewedEventV0_1_2{
+ eventType: apiv03.ChangeReviewedEventType.String(),
+ expectedEvent: &apiv03.ChangeReviewedEvent{
Context: api.Context{
- Type: api.ChangeReviewedEventTypeV0_1_2,
+ Type: apiv03.ChangeReviewedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ChangeReviewedSubject{
+ Subject: apiv03.ChangeReviewedSubject{
SubjectBase: api.SubjectBase{
Type: "change",
},
@@ -230,15 +233,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "change updated",
- eventType: api.ChangeUpdatedEventTypeV0_1_2.String(),
- expectedEvent: &api.ChangeUpdatedEventV0_1_2{
+ eventType: apiv03.ChangeUpdatedEventType.String(),
+ expectedEvent: &apiv03.ChangeUpdatedEvent{
Context: api.Context{
- Type: api.ChangeUpdatedEventTypeV0_1_2,
+ Type: apiv03.ChangeUpdatedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ChangeUpdatedSubject{
+ Subject: apiv03.ChangeUpdatedSubject{
SubjectBase: api.SubjectBase{
Type: "change",
},
@@ -247,15 +250,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "environment created",
- eventType: api.EnvironmentCreatedEventTypeV0_1_1.String(),
- expectedEvent: &api.EnvironmentCreatedEventV0_1_1{
+ eventType: apiv03.EnvironmentCreatedEventType.String(),
+ expectedEvent: &apiv03.EnvironmentCreatedEvent{
Context: api.Context{
- Type: api.EnvironmentCreatedEventTypeV0_1_1,
+ Type: apiv03.EnvironmentCreatedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.EnvironmentCreatedSubject{
+ Subject: apiv03.EnvironmentCreatedSubject{
SubjectBase: api.SubjectBase{
Type: "environment",
},
@@ -264,15 +267,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "environment deleted",
- eventType: api.EnvironmentDeletedEventTypeV0_1_1.String(),
- expectedEvent: &api.EnvironmentDeletedEventV0_1_1{
+ eventType: apiv03.EnvironmentDeletedEventType.String(),
+ expectedEvent: &apiv03.EnvironmentDeletedEvent{
Context: api.Context{
- Type: api.EnvironmentDeletedEventTypeV0_1_1,
+ Type: apiv03.EnvironmentDeletedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.EnvironmentDeletedSubject{
+ Subject: apiv03.EnvironmentDeletedSubject{
SubjectBase: api.SubjectBase{
Type: "environment",
},
@@ -281,15 +284,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "environment modified",
- eventType: api.EnvironmentModifiedEventTypeV0_1_1.String(),
- expectedEvent: &api.EnvironmentModifiedEventV0_1_1{
+ eventType: apiv03.EnvironmentModifiedEventType.String(),
+ expectedEvent: &apiv03.EnvironmentModifiedEvent{
Context: api.Context{
- Type: api.EnvironmentModifiedEventTypeV0_1_1,
+ Type: apiv03.EnvironmentModifiedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.EnvironmentModifiedSubject{
+ Subject: apiv03.EnvironmentModifiedSubject{
SubjectBase: api.SubjectBase{
Type: "environment",
},
@@ -298,15 +301,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "incident detected",
- eventType: api.IncidentDetectedEventTypeV0_1_0.String(),
- expectedEvent: &api.IncidentDetectedEventV0_1_0{
+ eventType: apiv03.IncidentDetectedEventType.String(),
+ expectedEvent: &apiv03.IncidentDetectedEvent{
Context: api.Context{
- Type: api.IncidentDetectedEventTypeV0_1_0,
+ Type: apiv03.IncidentDetectedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.IncidentDetectedSubject{
+ Subject: apiv03.IncidentDetectedSubject{
SubjectBase: api.SubjectBase{
Type: "incident",
},
@@ -315,15 +318,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "incident reported",
- eventType: api.IncidentReportedEventTypeV0_1_0.String(),
- expectedEvent: &api.IncidentReportedEventV0_1_0{
+ eventType: apiv03.IncidentReportedEventType.String(),
+ expectedEvent: &apiv03.IncidentReportedEvent{
Context: api.Context{
- Type: api.IncidentReportedEventTypeV0_1_0,
+ Type: apiv03.IncidentReportedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.IncidentReportedSubject{
+ Subject: apiv03.IncidentReportedSubject{
SubjectBase: api.SubjectBase{
Type: "incident",
},
@@ -332,15 +335,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "incident resolved",
- eventType: api.IncidentResolvedEventTypeV0_1_0.String(),
- expectedEvent: &api.IncidentResolvedEventV0_1_0{
+ eventType: apiv03.IncidentResolvedEventType.String(),
+ expectedEvent: &apiv03.IncidentResolvedEvent{
Context: api.Context{
- Type: api.IncidentResolvedEventTypeV0_1_0,
+ Type: apiv03.IncidentResolvedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.IncidentResolvedSubject{
+ Subject: apiv03.IncidentResolvedSubject{
SubjectBase: api.SubjectBase{
Type: "incident",
},
@@ -349,15 +352,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "pipelinerun finished",
- eventType: api.PipelineRunFinishedEventTypeV0_1_1.String(),
- expectedEvent: &api.PipelineRunFinishedEventV0_1_1{
+ eventType: apiv03.PipelineRunFinishedEventType.String(),
+ expectedEvent: &apiv03.PipelineRunFinishedEvent{
Context: api.Context{
- Type: api.PipelineRunFinishedEventTypeV0_1_1,
+ Type: apiv03.PipelineRunFinishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.PipelineRunFinishedSubject{
+ Subject: apiv03.PipelineRunFinishedSubject{
SubjectBase: api.SubjectBase{
Type: "pipelineRun",
},
@@ -366,15 +369,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "pipelinerun queued",
- eventType: api.PipelineRunQueuedEventTypeV0_1_1.String(),
- expectedEvent: &api.PipelineRunQueuedEventV0_1_1{
+ eventType: apiv03.PipelineRunQueuedEventType.String(),
+ expectedEvent: &apiv03.PipelineRunQueuedEvent{
Context: api.Context{
- Type: api.PipelineRunQueuedEventTypeV0_1_1,
+ Type: apiv03.PipelineRunQueuedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.PipelineRunQueuedSubject{
+ Subject: apiv03.PipelineRunQueuedSubject{
SubjectBase: api.SubjectBase{
Type: "pipelineRun",
},
@@ -383,15 +386,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "pipelinerun started",
- eventType: api.PipelineRunStartedEventTypeV0_1_1.String(),
- expectedEvent: &api.PipelineRunStartedEventV0_1_1{
+ eventType: apiv03.PipelineRunStartedEventType.String(),
+ expectedEvent: &apiv03.PipelineRunStartedEvent{
Context: api.Context{
- Type: api.PipelineRunStartedEventTypeV0_1_1,
+ Type: apiv03.PipelineRunStartedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.PipelineRunStartedSubject{
+ Subject: apiv03.PipelineRunStartedSubject{
SubjectBase: api.SubjectBase{
Type: "pipelineRun",
},
@@ -400,15 +403,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "repository created",
- eventType: api.RepositoryCreatedEventTypeV0_1_1.String(),
- expectedEvent: &api.RepositoryCreatedEventV0_1_1{
+ eventType: apiv03.RepositoryCreatedEventType.String(),
+ expectedEvent: &apiv03.RepositoryCreatedEvent{
Context: api.Context{
- Type: api.RepositoryCreatedEventTypeV0_1_1,
+ Type: apiv03.RepositoryCreatedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.RepositoryCreatedSubject{
+ Subject: apiv03.RepositoryCreatedSubject{
SubjectBase: api.SubjectBase{
Type: "repository",
},
@@ -417,15 +420,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "repository deleted",
- eventType: api.RepositoryDeletedEventTypeV0_1_1.String(),
- expectedEvent: &api.RepositoryDeletedEventV0_1_1{
+ eventType: apiv03.RepositoryDeletedEventType.String(),
+ expectedEvent: &apiv03.RepositoryDeletedEvent{
Context: api.Context{
- Type: api.RepositoryDeletedEventTypeV0_1_1,
+ Type: apiv03.RepositoryDeletedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.RepositoryDeletedSubject{
+ Subject: apiv03.RepositoryDeletedSubject{
SubjectBase: api.SubjectBase{
Type: "repository",
},
@@ -434,15 +437,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "repository modified",
- eventType: api.RepositoryModifiedEventTypeV0_1_1.String(),
- expectedEvent: &api.RepositoryModifiedEventV0_1_1{
+ eventType: apiv03.RepositoryModifiedEventType.String(),
+ expectedEvent: &apiv03.RepositoryModifiedEvent{
Context: api.Context{
- Type: api.RepositoryModifiedEventTypeV0_1_1,
+ Type: apiv03.RepositoryModifiedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.RepositoryModifiedSubject{
+ Subject: apiv03.RepositoryModifiedSubject{
SubjectBase: api.SubjectBase{
Type: "repository",
},
@@ -451,15 +454,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "service deployed",
- eventType: api.ServiceDeployedEventTypeV0_1_1.String(),
- expectedEvent: &api.ServiceDeployedEventV0_1_1{
+ eventType: apiv03.ServiceDeployedEventType.String(),
+ expectedEvent: &apiv03.ServiceDeployedEvent{
Context: api.Context{
- Type: api.ServiceDeployedEventTypeV0_1_1,
+ Type: apiv03.ServiceDeployedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ServiceDeployedSubject{
+ Subject: apiv03.ServiceDeployedSubject{
SubjectBase: api.SubjectBase{
Type: "service",
},
@@ -468,15 +471,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "service published",
- eventType: api.ServicePublishedEventTypeV0_1_1.String(),
- expectedEvent: &api.ServicePublishedEventV0_1_1{
+ eventType: apiv03.ServicePublishedEventType.String(),
+ expectedEvent: &apiv03.ServicePublishedEvent{
Context: api.Context{
- Type: api.ServicePublishedEventTypeV0_1_1,
+ Type: apiv03.ServicePublishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ServicePublishedSubject{
+ Subject: apiv03.ServicePublishedSubject{
SubjectBase: api.SubjectBase{
Type: "service",
},
@@ -485,15 +488,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "service removed",
- eventType: api.ServiceRemovedEventTypeV0_1_1.String(),
- expectedEvent: &api.ServiceRemovedEventV0_1_1{
+ eventType: apiv03.ServiceRemovedEventType.String(),
+ expectedEvent: &apiv03.ServiceRemovedEvent{
Context: api.Context{
- Type: api.ServiceRemovedEventTypeV0_1_1,
+ Type: apiv03.ServiceRemovedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ServiceRemovedSubject{
+ Subject: apiv03.ServiceRemovedSubject{
SubjectBase: api.SubjectBase{
Type: "service",
},
@@ -502,15 +505,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "service rolledback",
- eventType: api.ServiceRolledbackEventTypeV0_1_1.String(),
- expectedEvent: &api.ServiceRolledbackEventV0_1_1{
+ eventType: apiv03.ServiceRolledbackEventType.String(),
+ expectedEvent: &apiv03.ServiceRolledbackEvent{
Context: api.Context{
- Type: api.ServiceRolledbackEventTypeV0_1_1,
+ Type: apiv03.ServiceRolledbackEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ServiceRolledbackSubject{
+ Subject: apiv03.ServiceRolledbackSubject{
SubjectBase: api.SubjectBase{
Type: "service",
},
@@ -519,15 +522,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "service upgraded",
- eventType: api.ServiceUpgradedEventTypeV0_1_1.String(),
- expectedEvent: &api.ServiceUpgradedEventV0_1_1{
+ eventType: apiv03.ServiceUpgradedEventType.String(),
+ expectedEvent: &apiv03.ServiceUpgradedEvent{
Context: api.Context{
- Type: api.ServiceUpgradedEventTypeV0_1_1,
+ Type: apiv03.ServiceUpgradedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.ServiceUpgradedSubject{
+ Subject: apiv03.ServiceUpgradedSubject{
SubjectBase: api.SubjectBase{
Type: "service",
},
@@ -536,15 +539,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "taskrun finished",
- eventType: api.TaskRunFinishedEventTypeV0_1_1.String(),
- expectedEvent: &api.TaskRunFinishedEventV0_1_1{
+ eventType: apiv03.TaskRunFinishedEventType.String(),
+ expectedEvent: &apiv03.TaskRunFinishedEvent{
Context: api.Context{
- Type: api.TaskRunFinishedEventTypeV0_1_1,
+ Type: apiv03.TaskRunFinishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TaskRunFinishedSubject{
+ Subject: apiv03.TaskRunFinishedSubject{
SubjectBase: api.SubjectBase{
Type: "taskRun",
},
@@ -553,15 +556,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "taskrun started",
- eventType: api.TaskRunStartedEventTypeV0_1_1.String(),
- expectedEvent: &api.TaskRunStartedEventV0_1_1{
+ eventType: apiv03.TaskRunStartedEventType.String(),
+ expectedEvent: &apiv03.TaskRunStartedEvent{
Context: api.Context{
- Type: api.TaskRunStartedEventTypeV0_1_1,
+ Type: apiv03.TaskRunStartedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TaskRunStartedSubject{
+ Subject: apiv03.TaskRunStartedSubject{
SubjectBase: api.SubjectBase{
Type: "taskRun",
},
@@ -570,15 +573,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "testcaserun finished",
- eventType: api.TestCaseRunFinishedEventTypeV0_1_0.String(),
- expectedEvent: &api.TestCaseRunFinishedEventV0_1_0{
+ eventType: apiv03.TestCaseRunFinishedEventType.String(),
+ expectedEvent: &apiv03.TestCaseRunFinishedEvent{
Context: api.Context{
- Type: api.TestCaseRunFinishedEventTypeV0_1_0,
+ Type: apiv03.TestCaseRunFinishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TestCaseRunFinishedSubject{
+ Subject: apiv03.TestCaseRunFinishedSubject{
SubjectBase: api.SubjectBase{
Type: "testCaseRun",
},
@@ -587,15 +590,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "testcaserun queued",
- eventType: api.TestCaseRunQueuedEventTypeV0_1_0.String(),
- expectedEvent: &api.TestCaseRunQueuedEventV0_1_0{
+ eventType: apiv03.TestCaseRunQueuedEventType.String(),
+ expectedEvent: &apiv03.TestCaseRunQueuedEvent{
Context: api.Context{
- Type: api.TestCaseRunQueuedEventTypeV0_1_0,
+ Type: apiv03.TestCaseRunQueuedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TestCaseRunQueuedSubject{
+ Subject: apiv03.TestCaseRunQueuedSubject{
SubjectBase: api.SubjectBase{
Type: "testCaseRun",
},
@@ -604,15 +607,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "testcaserun started",
- eventType: api.TestCaseRunStartedEventTypeV0_1_0.String(),
- expectedEvent: &api.TestCaseRunStartedEventV0_1_0{
+ eventType: apiv03.TestCaseRunStartedEventType.String(),
+ expectedEvent: &apiv03.TestCaseRunStartedEvent{
Context: api.Context{
- Type: api.TestCaseRunStartedEventTypeV0_1_0,
+ Type: apiv03.TestCaseRunStartedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TestCaseRunStartedSubject{
+ Subject: apiv03.TestCaseRunStartedSubject{
SubjectBase: api.SubjectBase{
Type: "testCaseRun",
},
@@ -621,15 +624,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "testoutput published",
- eventType: api.TestOutputPublishedEventTypeV0_1_0.String(),
- expectedEvent: &api.TestOutputPublishedEventV0_1_0{
+ eventType: apiv03.TestOutputPublishedEventType.String(),
+ expectedEvent: &apiv03.TestOutputPublishedEvent{
Context: api.Context{
- Type: api.TestOutputPublishedEventTypeV0_1_0,
+ Type: apiv03.TestOutputPublishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TestOutputPublishedSubject{
+ Subject: apiv03.TestOutputPublishedSubject{
SubjectBase: api.SubjectBase{
Type: "testOutput",
},
@@ -638,15 +641,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "testsuiterun finished",
- eventType: api.TestSuiteRunFinishedEventTypeV0_1_0.String(),
- expectedEvent: &api.TestSuiteRunFinishedEventV0_1_0{
+ eventType: apiv03.TestSuiteRunFinishedEventType.String(),
+ expectedEvent: &apiv03.TestSuiteRunFinishedEvent{
Context: api.Context{
- Type: api.TestSuiteRunFinishedEventTypeV0_1_0,
+ Type: apiv03.TestSuiteRunFinishedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TestSuiteRunFinishedSubject{
+ Subject: apiv03.TestSuiteRunFinishedSubject{
SubjectBase: api.SubjectBase{
Type: "testSuiteRun",
},
@@ -655,15 +658,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "testsuiterun queued",
- eventType: api.TestSuiteRunQueuedEventTypeV0_1_0.String(),
- expectedEvent: &api.TestSuiteRunQueuedEventV0_1_0{
+ eventType: apiv03.TestSuiteRunQueuedEventType.String(),
+ expectedEvent: &apiv03.TestSuiteRunQueuedEvent{
Context: api.Context{
- Type: api.TestSuiteRunQueuedEventTypeV0_1_0,
+ Type: apiv03.TestSuiteRunQueuedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TestSuiteRunQueuedSubject{
+ Subject: apiv03.TestSuiteRunQueuedSubject{
SubjectBase: api.SubjectBase{
Type: "testSuiteRun",
},
@@ -672,15 +675,15 @@ func init() {
})
tests = append(tests, testNewCDEventType{
name: "testsuiterun started",
- eventType: api.TestSuiteRunStartedEventTypeV0_1_0.String(),
- expectedEvent: &api.TestSuiteRunStartedEventV0_1_0{
+ eventType: apiv03.TestSuiteRunStartedEventType.String(),
+ expectedEvent: &apiv03.TestSuiteRunStartedEvent{
Context: api.Context{
- Type: api.TestSuiteRunStartedEventTypeV0_1_0,
+ Type: apiv03.TestSuiteRunStartedEventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "0.3.0",
},
- Subject: api.TestSuiteRunStartedSubject{
+ Subject: apiv03.TestSuiteRunStartedSubject{
SubjectBase: api.SubjectBase{
Type: "testSuiteRun",
},
diff --git a/pkg/api/v03/zz_shared_test.go b/pkg/api/v03/zz_shared_test.go
new file mode 100644
index 0000000..22cf47c
--- /dev/null
+++ b/pkg/api/v03/zz_shared_test.go
@@ -0,0 +1,92 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v03_test
+
+import "github.com/cdevents/sdk-go/pkg/api"
+
+func panicOnError(err error) {
+ if err != nil {
+ panic(err.Error())
+ }
+}
+
+type testData struct {
+ TestValues []map[string]string `json:"testValues"`
+}
+
+var (
+ // Examples Data
+ testSource = "/event/source/123"
+ testSubjectId = "mySubject123"
+ testValue = "testValue"
+ testArtifactId = "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427"
+ testDataJson = testData{TestValues: []map[string]string{{"k1": "v1"}, {"k2": "v2"}}}
+ testDataJsonUnmarshalled = map[string]any{
+ "testValues": []any{map[string]any{"k1": string("v1")}, map[string]any{"k2": string("v2")}},
+ }
+ testDataXml = []byte("testData")
+ testChangeId = "myChange123"
+
+ // V04+ Examples Data
+ testChainId = "4c8cb7dd-3448-41de-8768-eec704e2829b"
+ testLinks api.EmbeddedLinksArray
+ testContextId = "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ testSchemaUri = "https://myorg.com/schema/custom"
+)
+
+func init() {
+ // Set up test links
+ tags := api.Tags{
+ "foo1": "bar",
+ "foo2": "bar",
+ }
+ reference := api.EventReference{
+ ContextId: testContextId,
+ }
+ elr := api.NewEmbeddedLinkRelation()
+ elr.SetTags(tags)
+ elr.SetLinkKind("TRIGGER")
+ elr.SetTarget(reference)
+ elp := api.NewEmbeddedLinkPath()
+ elp.SetTags(tags)
+ elp.SetFrom(reference)
+ ele := api.NewEmbeddedLinkEnd()
+ ele.SetTags(tags)
+ ele.SetFrom(reference)
+ testLinks = api.EmbeddedLinksArray{
+ elr, elp, ele,
+ }
+}
+
+func setContext(event api.CDEventWriter, subjectId string) {
+ event.SetSource(testSource)
+ event.SetSubjectId(subjectId)
+}
+
+func setContextV04(event api.CDEventWriterV04, chainId, schemaUri bool) {
+ if chainId {
+ event.SetChainId(testChainId)
+ }
+ if schemaUri {
+ event.SetSchemaUri(testSchemaUri)
+ }
+ event.SetLinks(testLinks)
+}
diff --git a/pkg/api/v04/conformance_test.go b/pkg/api/v04/conformance_test.go
new file mode 100644
index 0000000..b1346b9
--- /dev/null
+++ b/pkg/api/v04/conformance_test.go
@@ -0,0 +1,552 @@
+/*
+Copyright 2022 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v04_test
+
+import (
+ "os"
+ "path/filepath"
+ "testing"
+ "time"
+
+ "github.com/cdevents/sdk-go/pkg/api"
+ apiv04 "github.com/cdevents/sdk-go/pkg/api/v04"
+ "github.com/google/go-cmp/cmp"
+ "github.com/google/uuid"
+)
+
+const examplesFolder = "spec-v0.4/conformance"
+
+var (
+ // Examples Data
+ testArtifactSubjectId = "pkg:golang/mygit.com/myorg/myapp@234fd47e07d1004f0aed9c"
+ testChangeSource = "my-git.example/an-org/a-repo"
+ testPipeline = "myPipeline"
+ testSubjecturl = "https://www.example.com/mySubject123"
+ testPipelineOutcome = "failure"
+ testPipelineErrors = "Something went wrong\nWith some more details"
+ testTaskName = "myTask"
+ testTaskOutcome = "failure"
+ testTaskRunErrors = "Something went wrong\nWith some more details"
+ testRepo = "TestRepo"
+ testOwner = "TestOrg"
+ testUrl = "https://example.org/TestOrg/TestRepo"
+ testViewUrl = "https://example.org/view/TestOrg/TestRepo"
+ testEnvironmentId = "test123"
+ testEnvironmentName = "testEnv"
+ testEnvironmentUrl = "https://example.org/testEnv"
+ testRepoReference = &api.Reference{
+ Id: "TestRepo/TestOrg", Source: "https://example.org"}
+ testIncidentSubjectId = "incident-123"
+ testIncidentSource = "/monitoring/prod1"
+ testEnvironmentReference = &api.Reference{
+ Id: "prod1", Source: "/iaas/geo1"}
+ testServiceReference = &api.Reference{
+ Id: "myApp", Source: "/clusterA/namespaceB"}
+ testTestRunId = "myTestCaseRun123"
+ testSignature = "MEYCIQCBT8U5ypDXWCjlNKfzTV4KH516/SK13NZSh8znnSMNkQIhAJ3XiQlc9PM1KyjITcZXHotdMB+J3NGua5T/yshmiPmp"
+ testTestEnvironment = &api.Reference{
+ Id: "dev", Source: "testkube-dev-123"}
+ testTestCaseStarted = &apiv04.TestCaseRunStartedSubjectContentTestCase{
+ Id: "92834723894", Name: "Login Test", Type: "integration", Version: "1.0"}
+ testTestCaseFinished = &apiv04.TestCaseRunFinishedSubjectContentTestCase{
+ Id: "92834723894", Name: "Login Test", Type: "integration", Version: "1.0"}
+ testTestCaseQueued = &apiv04.TestCaseRunQueuedSubjectContentTestCase{
+ Id: "92834723894", Name: "Login Test", Type: "integration", Version: "1.0"}
+ testTestTriggerQueued = &apiv04.TestCaseRunQueuedSubjectContentTrigger{
+ Type: "schedule"}
+ testTestTriggerStarted = &apiv04.TestCaseRunStartedSubjectContentTrigger{
+ Type: "schedule"}
+ testTestOutcome = "pass"
+ testTestOutputSubjectId = "testrunreport-12123"
+ testTestOutputSubjectSource = "/event/source/testrunreport-12123"
+ testTestOutputFormat = "video/quicktime"
+ testTestOutputOutputType = "video"
+ testTestCaseRun = &api.Reference{Id: testTestRunId, Source: "testkube-dev-123"}
+ testTestSuiteRunId = "myTestSuiteRun123"
+ testTestSuiteStarted = &apiv04.TestSuiteRunStartedSubjectContentTestSuite{
+ Id: "92834723894", Name: "Auth TestSuite", Version: "1.0"}
+ testTestSuiteQueued = &apiv04.TestSuiteRunQueuedSubjectContentTestSuite{
+ Id: "92834723894", Name: "Auth TestSuite", Version: "1.0"}
+ testTestSuiteFinished = &apiv04.TestSuiteRunFinishedSubjectContentTestSuite{
+ Id: "92834723894", Name: "Auth TestSuite", Version: "1.0"}
+ testTestSuiteOutcome = "fail"
+ testTestSuiteReason = "Host 123.34.23.32 not found"
+ testTestSuiteSeverity = "critical"
+ testTestSuiteTriggerQueued = &apiv04.TestSuiteRunQueuedSubjectContentTrigger{Type: "pipeline"}
+ testTestSuiteTriggerStarted = &apiv04.TestSuiteRunStartedSubjectContentTrigger{Type: "pipeline"}
+ testSubjectUser = "mybot-myapp"
+ testSbomUri = "https://sbom.repo/myorg/234fd47e07d1004f0aed9c.sbom"
+ testChangeDescription = "This PR address a bug from a recent PR"
+ testTicketId = "ticket-123"
+ testTicketSource = "/ticketing/system"
+ testTicketAssignees = []string{"Bob"}
+ testTicketCreator = "Alice"
+ testTicketGroup = "security"
+ testTicketLabels = []string{"bug"}
+ testTicketMilestone = "123"
+ testTicketPriority = "high"
+ testTicketResolution = "completed"
+ testTicketSummary = "New CVE-123 detected"
+ testTicketType = "task"
+ testTicketUpdatedBy = "Bob"
+ testTicketUri = "https://example.issues.com/ticket123"
+
+ examplesConsumed map[string][]byte
+ examplesProduced map[string]api.CDEventV04
+ err error
+)
+
+func init() {
+ // Get the time once
+ t, _ := time.Parse(time.RFC3339Nano, "2023-03-20T14:27:05.315384Z")
+ timeNow = func() time.Time {
+ return t
+ }
+
+ // Set the UUID to a fixed one
+ u, _ := uuid.Parse("271069a8-fc18-44f1-b38f-9d70a1695819")
+ uuidNewRandom = func() (uuid.UUID, error) {
+ return u, nil
+ }
+}
+
+func exampleArtifactPackagedEvent(e *apiv04.ArtifactPackagedEvent) {
+ // Set example specific fields
+ setContext(e, testArtifactSubjectId)
+ e.SetSubjectChange(&api.Reference{Id: testChangeId, Source: testChangeSource})
+ e.SetSubjectSbom(&api.ArtifactPackagedSubjectContentSbomV0_2_0{
+ Uri: testSbomUri,
+ })
+}
+
+func exampleArtifactPublishedEvent(e *apiv04.ArtifactPublishedEvent) {
+ // Set example specific fields
+ setContext(e, testArtifactSubjectId)
+ e.SetSubjectUser(testSubjectUser)
+ e.SetSubjectSbom(&api.ArtifactPublishedSubjectContentSbomV0_2_0{
+ Uri: testSbomUri,
+ })
+}
+
+func exampleArtifactSignedEvent(e *apiv04.ArtifactSignedEvent) {
+ // Set example specific fields
+ setContext(e, testArtifactSubjectId)
+ e.SetSubjectSignature(testSignature)
+}
+
+func exampleArtifactDeletedEvent(e *apiv04.ArtifactDeletedEvent) {
+ // Set example specific fields
+ setContext(e, testArtifactSubjectId)
+ e.SetSubjectUser(testSubjectUser)
+ e.SetChainId("")
+}
+
+func exampleArtifactDownloadedEvent(e *apiv04.ArtifactDownloadedEvent) {
+ // Set example specific fields
+ setContext(e, testArtifactSubjectId)
+ e.SetSubjectUser(testSubjectUser)
+ e.SetChainId("")
+}
+
+func exampleBranchCreatedEvent(e *apiv04.BranchCreatedEvent) {
+ // Set example specific fields
+ e.SetSubjectRepository(testRepoReference)
+}
+
+func exampleBranchDeletedEvent(e *apiv04.BranchDeletedEvent) {
+ // Set example specific fields
+ e.SetSubjectRepository(testRepoReference)
+}
+
+func exampleBuildFinishedEvent(e *apiv04.BuildFinishedEvent) {
+ // Set example specific fields
+ e.SetSubjectArtifactId(testArtifactId)
+}
+
+func exampleBuildQueuedEvent(e *apiv04.BuildQueuedEvent) {
+ // Set example specific fields
+}
+
+func exampleBuildStartedEvent(e *apiv04.BuildStartedEvent) {
+ // Set example specific fields
+}
+
+func exampleChangeAbandonedEvent(e *apiv04.ChangeAbandonedEvent) {
+ // Set example specific fields
+ e.SetSubjectRepository(testRepoReference)
+}
+
+func exampleChangeCreatedEvent(e *apiv04.ChangeCreatedEvent) {
+ // Set example specific fields
+ e.SetSubjectRepository(testRepoReference)
+ e.SetSubjectDescription(testChangeDescription)
+}
+
+func exampleChangeMergedEvent(e *apiv04.ChangeMergedEvent) {
+ // Set example specific fields
+ e.SetSubjectRepository(testRepoReference)
+}
+
+func exampleChangeReviewedEvent(e *apiv04.ChangeReviewedEvent) {
+ // Set example specific fields
+ e.SetSubjectRepository(testRepoReference)
+}
+
+func exampleChangeUpdatedEvent(e *apiv04.ChangeUpdatedEvent) {
+ // Set example specific fields
+ e.SetSubjectRepository(testRepoReference)
+}
+
+func exampleEnvironmentCreatedEvent(e *apiv04.EnvironmentCreatedEvent) {
+ // Set example specific fields
+ e.SetSubjectName(testEnvironmentName)
+ e.SetSubjectUrl(testEnvironmentUrl)
+}
+
+func exampleEnvironmentDeletedEvent(e *apiv04.EnvironmentDeletedEvent) {
+ // Set example specific fields
+ e.SetSubjectName(testEnvironmentName)
+}
+
+func exampleEnvironmentModifiedEvent(e *apiv04.EnvironmentModifiedEvent) {
+ // Set example specific fields
+ e.SetSubjectName(testEnvironmentName)
+ e.SetSubjectUrl(testEnvironmentUrl)
+}
+
+func exampleIncidentDetectedEvent(e *apiv04.IncidentDetectedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testIncidentSubjectId)
+ e.SetSource(testIncidentSource)
+ e.SetSubjectSource(testIncidentSource)
+ e.SetSubjectArtifactId(testArtifactId)
+ e.SetSubjectService(testServiceReference)
+ e.SetSubjectEnvironment(testEnvironmentReference)
+ e.SetSubjectDescription("Response time above threshold of 100ms")
+}
+
+func exampleIncidentReportedEvent(e *apiv04.IncidentReportedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testIncidentSubjectId)
+ e.SetSource(testIncidentSource)
+ e.SetSubjectSource(testIncidentSource)
+ e.SetSubjectArtifactId(testArtifactId)
+ e.SetSubjectService(testServiceReference)
+ e.SetSubjectEnvironment(testEnvironmentReference)
+ e.SetSubjectDescription("Response time above threshold of 100ms")
+ e.SetSubjectTicketURI("https://my-issues.example/incidents/ticket-345")
+}
+
+func exampleIncidentResolvedEvent(e *apiv04.IncidentResolvedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testIncidentSubjectId)
+ e.SetSource(testIncidentSource)
+ e.SetSubjectSource(testIncidentSource)
+ e.SetSubjectArtifactId("pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93439")
+ e.SetSubjectService(testServiceReference)
+ e.SetSubjectEnvironment(testEnvironmentReference)
+ e.SetSubjectDescription("Response time restored below 100ms")
+}
+
+func examplePipelineRunFinishedEvent(e *apiv04.PipelineRunFinishedEvent) {
+ // Set example specific fields
+ e.SetSubjectPipelineName(testPipeline)
+ e.SetSubjectUrl(testSubjecturl)
+ e.SetSubjectOutcome(testPipelineOutcome)
+ e.SetSubjectErrors(testPipelineErrors)
+}
+
+func examplePipelineRunQueuedEvent(e *apiv04.PipelineRunQueuedEvent) {
+ // Set example specific fields
+ e.SetSubjectPipelineName(testPipeline)
+ e.SetSubjectUrl(testSubjecturl)
+}
+
+func examplePipelineRunStartedEvent(e *apiv04.PipelineRunStartedEvent) {
+ // Set example specific fields
+ e.SetSubjectPipelineName(testPipeline)
+ e.SetSubjectUrl(testSubjecturl)
+}
+
+func exampleRepositoryCreatedEvent(e *apiv04.RepositoryCreatedEvent) {
+ // Set example specific fields
+ e.SetSubjectName(testRepo)
+ e.SetSubjectOwner(testOwner)
+ e.SetSubjectUrl(testUrl)
+ e.SetSubjectViewUrl(testViewUrl)
+}
+
+func exampleRepositoryDeletedEvent(e *apiv04.RepositoryDeletedEvent) {
+ // Set example specific fields
+ e.SetSubjectName(testRepo)
+ e.SetSubjectOwner(testOwner)
+ e.SetSubjectUrl(testUrl)
+ e.SetSubjectViewUrl(testViewUrl)
+}
+
+func exampleRepositoryModifiedEvent(e *apiv04.RepositoryModifiedEvent) {
+ // Set example specific fields
+ e.SetSubjectName(testRepo)
+ e.SetSubjectOwner(testOwner)
+ e.SetSubjectUrl(testUrl)
+ e.SetSubjectViewUrl(testViewUrl)
+}
+
+func exampleServiceDeployedEvent(e *apiv04.ServiceDeployedEvent) {
+ // Set example specific fields
+ e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
+ e.SetSubjectArtifactId(testArtifactId)
+}
+
+func exampleServicePublishedEvent(e *apiv04.ServicePublishedEvent) {
+ // Set example specific fields
+ e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
+}
+
+func exampleServiceRemovedEvent(e *apiv04.ServiceRemovedEvent) {
+ // Set example specific fields
+ e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
+}
+
+func exampleServiceRolledbackEvent(e *apiv04.ServiceRolledbackEvent) {
+ // Set example specific fields
+ e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
+ e.SetSubjectArtifactId(testArtifactId)
+}
+
+func exampleServiceUpgradedEvent(e *apiv04.ServiceUpgradedEvent) {
+ // Set example specific fields
+ e.SetSubjectEnvironment(&api.Reference{Id: testEnvironmentId})
+ e.SetSubjectArtifactId(testArtifactId)
+}
+
+func exampleTaskRunFinishedEvent(e *apiv04.TaskRunFinishedEvent) {
+ // Set example specific fields
+ e.SetSubjectTaskName(testTaskName)
+ e.SetSubjectUrl(testSubjecturl)
+ e.SetSubjectPipelineRun(&api.Reference{Id: testSubjectId})
+ e.SetSubjectOutcome(testTaskOutcome)
+ e.SetSubjectErrors(testTaskRunErrors)
+}
+
+func exampleTestCaseRunSkippedEvent(e *apiv04.TestCaseRunSkippedEvent) {
+ // Set example specific fields
+ e.SetSubjectId("myTestCaseRun123")
+ e.SetSubjectEnvironment(&api.Reference{
+ Id: "dev",
+ Source: "testkube-dev-123",
+ })
+ e.SetSubjectReason("Not running in this environment")
+ e.SetSubjectTestCase(&api.TestCaseRunSkippedSubjectContentTestCaseV0_1_0{
+ Id: "92834723894",
+ Name: "Login Test",
+ Type: "integration",
+ Version: "1.0",
+ })
+ e.SetSubjectTestSuiteRun(&api.Reference{
+ Id: "test-suite-111",
+ Source: "testkube-dev-123",
+ })
+ e.SetChainId("")
+}
+
+func exampleTaskRunStartedEvent(e *apiv04.TaskRunStartedEvent) {
+ // Set example specific fields
+ e.SetSubjectTaskName(testTaskName)
+ e.SetSubjectUrl(testSubjecturl)
+ e.SetSubjectPipelineRun(&api.Reference{Id: testSubjectId})
+}
+
+func exampleTestCaseRunFinishedEvent(e *apiv04.TestCaseRunFinishedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTestRunId)
+ e.SetSubjectId(testTestRunId)
+ e.SetSubjectEnvironment(testTestEnvironment)
+ e.SetSubjectTestCase(testTestCaseFinished)
+ e.SetSubjectOutcome(testTestOutcome)
+}
+
+func exampleTestCaseRunQueuedEvent(e *apiv04.TestCaseRunQueuedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTestRunId)
+ e.SetSubjectId(testTestRunId)
+ e.SetSubjectEnvironment(testTestEnvironment)
+ e.SetSubjectTestCase(testTestCaseQueued)
+ e.SetSubjectTrigger(testTestTriggerQueued)
+}
+
+func exampleTestCaseRunStartedEvent(e *apiv04.TestCaseRunStartedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTestRunId)
+ e.SetSubjectEnvironment(testTestEnvironment)
+ e.SetSubjectTestCase(testTestCaseStarted)
+ e.SetSubjectTrigger(testTestTriggerStarted)
+}
+
+func exampleTestSuiteRunFinishedEvent(e *apiv04.TestSuiteRunFinishedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTestSuiteRunId)
+ e.SetSubjectEnvironment(testTestEnvironment)
+ e.SetSubjectTestSuite(testTestSuiteFinished)
+ e.SetSubjectOutcome(testTestSuiteOutcome)
+ e.SetSubjectSeverity(testTestSuiteSeverity)
+ e.SetSubjectReason(testTestSuiteReason)
+}
+
+func exampleTestSuiteRunStartedEvent(e *apiv04.TestSuiteRunStartedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTestSuiteRunId)
+ e.SetSubjectEnvironment(testTestEnvironment)
+ e.SetSubjectTestSuite(testTestSuiteStarted)
+ e.SetSubjectTrigger(testTestSuiteTriggerStarted)
+}
+
+func exampleTestSuiteRunQueuedEvent(e *apiv04.TestSuiteRunQueuedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTestSuiteRunId)
+ e.SetSubjectEnvironment(testTestEnvironment)
+ e.SetSubjectTestSuite(testTestSuiteQueued)
+ e.SetSubjectTrigger(testTestSuiteTriggerQueued)
+}
+
+func exampleTestOutputPublishedEvent(e *apiv04.TestOutputPublishedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTestOutputSubjectId)
+ e.SetSubjectSource(testTestOutputSubjectSource)
+ e.SetSubjectOutputType(testTestOutputOutputType)
+ e.SetSubjectFormat(testTestOutputFormat)
+ e.SetSubjectTestCaseRun(testTestCaseRun)
+}
+
+func exampleTicketClosedEvent(e *apiv04.TicketClosedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTicketId)
+ e.SetSource(testTicketSource)
+ e.SetSubjectSource(testTicketSource)
+ e.SetSubjectAssignees(testTicketAssignees)
+ e.SetSubjectCreator(testTicketCreator)
+ e.SetSubjectGroup(testTicketGroup)
+ e.SetSubjectLabels(testTicketLabels)
+ e.SetSubjectMilestone(testTicketMilestone)
+ e.SetSubjectPriority(testTicketPriority)
+ e.SetSubjectResolution(testTicketResolution)
+ e.SetSubjectSummary(testTicketSummary)
+ e.SetSubjectTicketType(testTicketType)
+ e.SetSubjectUpdatedBy(testTicketUpdatedBy)
+ e.SetSubjectUri(testTicketUri)
+ e.SetChainId("")
+}
+
+func exampleTicketCreatedEvent(e *apiv04.TicketCreatedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTicketId)
+ e.SetSource(testTicketSource)
+ e.SetSubjectSource(testTicketSource)
+ e.SetSubjectAssignees(testTicketAssignees)
+ e.SetSubjectCreator(testTicketCreator)
+ e.SetSubjectGroup(testTicketGroup)
+ e.SetSubjectLabels(testTicketLabels)
+ e.SetSubjectMilestone(testTicketMilestone)
+ e.SetSubjectPriority(testTicketPriority)
+ e.SetSubjectSummary(testTicketSummary)
+ e.SetSubjectTicketType(testTicketType)
+ e.SetSubjectUri(testTicketUri)
+ e.SetChainId("")
+}
+
+func exampleTicketUpdatedEvent(e *apiv04.TicketUpdatedEvent) {
+ // Set example specific fields
+ e.SetSubjectId(testTicketId)
+ e.SetSource(testTicketSource)
+ e.SetSubjectSource(testTicketSource)
+ e.SetSubjectAssignees(testTicketAssignees)
+ e.SetSubjectCreator(testTicketCreator)
+ e.SetSubjectGroup(testTicketGroup)
+ e.SetSubjectLabels(testTicketLabels)
+ e.SetSubjectMilestone(testTicketMilestone)
+ e.SetSubjectPriority(testTicketPriority)
+ e.SetSubjectSummary(testTicketSummary)
+ e.SetSubjectTicketType(testTicketType)
+ e.SetSubjectUpdatedBy(testTicketUpdatedBy)
+ e.SetSubjectUri(testTicketUri)
+ e.SetChainId("")
+}
+
+func init() {
+
+ // Load event examples from the spec
+ examplesConsumed = make(map[string][]byte)
+
+ for _, event := range apiv04.CDEventsTypes {
+ short := event.GetType().Short()
+ examplesConsumed[short], err = os.ReadFile(filepath.Join("..", examplesFolder, short+".json"))
+ panicOnError(err)
+ }
+}
+
+// TestExamples verifies that the SDK can produce events like those
+// included in the specification examples folder.
+// To do so:
+// - it produces a CDEvent from scratch, and sets the values like in the examples
+// - it parses the examples into a CDEvent and
+// - it verifies that produced and consumed CDEvent match
+func TestExamples(t *testing.T) {
+
+ for name, exampleConsumed := range examplesConsumed {
+ t.Run(name, func(t *testing.T) {
+ produced, ok := examplesProduced[name]
+ if !ok {
+ t.Fatalf("missing produced event for event type: %v", name)
+ }
+ // Check that the produced event is valid
+ err := api.Validate(produced)
+ if err != nil {
+ t.Errorf("produced event failed to validate: %v", err)
+ }
+ consumed, err := apiv04.NewFromJsonBytes(exampleConsumed)
+ if err != nil {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ }
+ // Check the context, except for ID and Timestamp
+ if d := cmp.Diff(consumed.GetVersion(), produced.GetVersion()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ if d := cmp.Diff(consumed.GetSource(), produced.GetSource()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ if d := cmp.Diff(consumed.GetType(), produced.GetType()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ // Check the subject
+ if d := cmp.Diff(consumed.GetSubject(), produced.GetSubject()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ // Check v04+ attributes
+ if d := cmp.Diff(consumed.GetChainId(), produced.GetChainId()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ if d := cmp.Diff(consumed.GetSchemaUri(), produced.GetSchemaUri()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ if d := cmp.Diff(consumed.GetLinks(), produced.GetLinks()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ })
+ }
+}
diff --git a/pkg/api/v04/docs.go b/pkg/api/v04/docs.go
new file mode 100644
index 0000000..15db905
--- /dev/null
+++ b/pkg/api/v04/docs.go
@@ -0,0 +1,485 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2024 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v03 contains method to create events that belong to the
+// CDEvents specification v0.4.x
+
+package v04
+
+import "github.com/cdevents/sdk-go/pkg/api"
+
+var SpecVersion = "0.4.1"
+
+type ArtifactDeletedEvent = api.ArtifactDeletedEventV0_1_0
+type ArtifactDeletedSubject = api.ArtifactDeletedSubjectV0_1_0
+
+func NewArtifactDeletedEvent() (*ArtifactDeletedEvent, error) {
+ return api.NewArtifactDeletedEventV0_1_0(SpecVersion)
+}
+
+var ArtifactDeletedEventType = api.ArtifactDeletedEventTypeV0_1_0
+
+type ArtifactDownloadedEvent = api.ArtifactDownloadedEventV0_1_0
+type ArtifactDownloadedSubject = api.ArtifactDownloadedSubjectV0_1_0
+
+func NewArtifactDownloadedEvent() (*ArtifactDownloadedEvent, error) {
+ return api.NewArtifactDownloadedEventV0_1_0(SpecVersion)
+}
+
+var ArtifactDownloadedEventType = api.ArtifactDownloadedEventTypeV0_1_0
+
+type ArtifactPackagedEvent = api.ArtifactPackagedEventV0_2_0
+type ArtifactPackagedSubject = api.ArtifactPackagedSubjectV0_2_0
+
+// ArtifactArtifactSubjectContentSbomV0_2_0 holds the content of a Sbom field in the content
+type ArtifactPackagedSubjectContentSbom = api.ArtifactPackagedSubjectContentSbomV0_2_0
+
+func NewArtifactPackagedEvent() (*ArtifactPackagedEvent, error) {
+ return api.NewArtifactPackagedEventV0_2_0(SpecVersion)
+}
+
+var ArtifactPackagedEventType = api.ArtifactPackagedEventTypeV0_2_0
+
+type ArtifactPublishedEvent = api.ArtifactPublishedEventV0_2_0
+type ArtifactPublishedSubject = api.ArtifactPublishedSubjectV0_2_0
+
+// ArtifactArtifactSubjectContentSbomV0_2_0 holds the content of a Sbom field in the content
+type ArtifactPublishedSubjectContentSbom = api.ArtifactPublishedSubjectContentSbomV0_2_0
+
+func NewArtifactPublishedEvent() (*ArtifactPublishedEvent, error) {
+ return api.NewArtifactPublishedEventV0_2_0(SpecVersion)
+}
+
+var ArtifactPublishedEventType = api.ArtifactPublishedEventTypeV0_2_0
+
+type ArtifactSignedEvent = api.ArtifactSignedEventV0_2_0
+type ArtifactSignedSubject = api.ArtifactSignedSubjectV0_2_0
+
+func NewArtifactSignedEvent() (*ArtifactSignedEvent, error) {
+ return api.NewArtifactSignedEventV0_2_0(SpecVersion)
+}
+
+var ArtifactSignedEventType = api.ArtifactSignedEventTypeV0_2_0
+
+type BranchCreatedEvent = api.BranchCreatedEventV0_2_0
+type BranchCreatedSubject = api.BranchCreatedSubjectV0_2_0
+
+func NewBranchCreatedEvent() (*BranchCreatedEvent, error) {
+ return api.NewBranchCreatedEventV0_2_0(SpecVersion)
+}
+
+var BranchCreatedEventType = api.BranchCreatedEventTypeV0_2_0
+
+type BranchDeletedEvent = api.BranchDeletedEventV0_2_0
+type BranchDeletedSubject = api.BranchDeletedSubjectV0_2_0
+
+func NewBranchDeletedEvent() (*BranchDeletedEvent, error) {
+ return api.NewBranchDeletedEventV0_2_0(SpecVersion)
+}
+
+var BranchDeletedEventType = api.BranchDeletedEventTypeV0_2_0
+
+type BuildFinishedEvent = api.BuildFinishedEventV0_2_0
+type BuildFinishedSubject = api.BuildFinishedSubjectV0_2_0
+
+func NewBuildFinishedEvent() (*BuildFinishedEvent, error) {
+ return api.NewBuildFinishedEventV0_2_0(SpecVersion)
+}
+
+var BuildFinishedEventType = api.BuildFinishedEventTypeV0_2_0
+
+type BuildQueuedEvent = api.BuildQueuedEventV0_2_0
+type BuildQueuedSubject = api.BuildQueuedSubjectV0_2_0
+
+func NewBuildQueuedEvent() (*BuildQueuedEvent, error) {
+ return api.NewBuildQueuedEventV0_2_0(SpecVersion)
+}
+
+var BuildQueuedEventType = api.BuildQueuedEventTypeV0_2_0
+
+type BuildStartedEvent = api.BuildStartedEventV0_2_0
+type BuildStartedSubject = api.BuildStartedSubjectV0_2_0
+
+func NewBuildStartedEvent() (*BuildStartedEvent, error) {
+ return api.NewBuildStartedEventV0_2_0(SpecVersion)
+}
+
+var BuildStartedEventType = api.BuildStartedEventTypeV0_2_0
+
+type ChangeAbandonedEvent = api.ChangeAbandonedEventV0_2_0
+type ChangeAbandonedSubject = api.ChangeAbandonedSubjectV0_2_0
+
+func NewChangeAbandonedEvent() (*ChangeAbandonedEvent, error) {
+ return api.NewChangeAbandonedEventV0_2_0(SpecVersion)
+}
+
+var ChangeAbandonedEventType = api.ChangeAbandonedEventTypeV0_2_0
+
+type ChangeCreatedEvent = api.ChangeCreatedEventV0_3_0
+type ChangeCreatedSubject = api.ChangeCreatedSubjectV0_3_0
+
+func NewChangeCreatedEvent() (*ChangeCreatedEvent, error) {
+ return api.NewChangeCreatedEventV0_3_0(SpecVersion)
+}
+
+var ChangeCreatedEventType = api.ChangeCreatedEventTypeV0_3_0
+
+type ChangeMergedEvent = api.ChangeMergedEventV0_2_0
+type ChangeMergedSubject = api.ChangeMergedSubjectV0_2_0
+
+func NewChangeMergedEvent() (*ChangeMergedEvent, error) {
+ return api.NewChangeMergedEventV0_2_0(SpecVersion)
+}
+
+var ChangeMergedEventType = api.ChangeMergedEventTypeV0_2_0
+
+type ChangeReviewedEvent = api.ChangeReviewedEventV0_2_0
+type ChangeReviewedSubject = api.ChangeReviewedSubjectV0_2_0
+
+func NewChangeReviewedEvent() (*ChangeReviewedEvent, error) {
+ return api.NewChangeReviewedEventV0_2_0(SpecVersion)
+}
+
+var ChangeReviewedEventType = api.ChangeReviewedEventTypeV0_2_0
+
+type ChangeUpdatedEvent = api.ChangeUpdatedEventV0_2_0
+type ChangeUpdatedSubject = api.ChangeUpdatedSubjectV0_2_0
+
+func NewChangeUpdatedEvent() (*ChangeUpdatedEvent, error) {
+ return api.NewChangeUpdatedEventV0_2_0(SpecVersion)
+}
+
+var ChangeUpdatedEventType = api.ChangeUpdatedEventTypeV0_2_0
+
+type EnvironmentCreatedEvent = api.EnvironmentCreatedEventV0_2_0
+type EnvironmentCreatedSubject = api.EnvironmentCreatedSubjectV0_2_0
+
+func NewEnvironmentCreatedEvent() (*EnvironmentCreatedEvent, error) {
+ return api.NewEnvironmentCreatedEventV0_2_0(SpecVersion)
+}
+
+var EnvironmentCreatedEventType = api.EnvironmentCreatedEventTypeV0_2_0
+
+type EnvironmentDeletedEvent = api.EnvironmentDeletedEventV0_2_0
+type EnvironmentDeletedSubject = api.EnvironmentDeletedSubjectV0_2_0
+
+func NewEnvironmentDeletedEvent() (*EnvironmentDeletedEvent, error) {
+ return api.NewEnvironmentDeletedEventV0_2_0(SpecVersion)
+}
+
+var EnvironmentDeletedEventType = api.EnvironmentDeletedEventTypeV0_2_0
+
+type EnvironmentModifiedEvent = api.EnvironmentModifiedEventV0_2_0
+type EnvironmentModifiedSubject = api.EnvironmentModifiedSubjectV0_2_0
+
+func NewEnvironmentModifiedEvent() (*EnvironmentModifiedEvent, error) {
+ return api.NewEnvironmentModifiedEventV0_2_0(SpecVersion)
+}
+
+var EnvironmentModifiedEventType = api.EnvironmentModifiedEventTypeV0_2_0
+
+type IncidentDetectedEvent = api.IncidentDetectedEventV0_2_0
+type IncidentDetectedSubject = api.IncidentDetectedSubjectV0_2_0
+
+func NewIncidentDetectedEvent() (*IncidentDetectedEvent, error) {
+ return api.NewIncidentDetectedEventV0_2_0(SpecVersion)
+}
+
+var IncidentDetectedEventType = api.IncidentDetectedEventTypeV0_2_0
+
+type IncidentReportedEvent = api.IncidentReportedEventV0_2_0
+type IncidentReportedSubject = api.IncidentReportedSubjectV0_2_0
+
+func NewIncidentReportedEvent() (*IncidentReportedEvent, error) {
+ return api.NewIncidentReportedEventV0_2_0(SpecVersion)
+}
+
+var IncidentReportedEventType = api.IncidentReportedEventTypeV0_2_0
+
+type IncidentResolvedEvent = api.IncidentResolvedEventV0_2_0
+type IncidentResolvedSubject = api.IncidentResolvedSubjectV0_2_0
+
+func NewIncidentResolvedEvent() (*IncidentResolvedEvent, error) {
+ return api.NewIncidentResolvedEventV0_2_0(SpecVersion)
+}
+
+var IncidentResolvedEventType = api.IncidentResolvedEventTypeV0_2_0
+
+type PipelineRunFinishedEvent = api.PipelineRunFinishedEventV0_2_0
+type PipelineRunFinishedSubject = api.PipelineRunFinishedSubjectV0_2_0
+
+func NewPipelineRunFinishedEvent() (*PipelineRunFinishedEvent, error) {
+ return api.NewPipelineRunFinishedEventV0_2_0(SpecVersion)
+}
+
+var PipelineRunFinishedEventType = api.PipelineRunFinishedEventTypeV0_2_0
+
+type PipelineRunQueuedEvent = api.PipelineRunQueuedEventV0_2_0
+type PipelineRunQueuedSubject = api.PipelineRunQueuedSubjectV0_2_0
+
+func NewPipelineRunQueuedEvent() (*PipelineRunQueuedEvent, error) {
+ return api.NewPipelineRunQueuedEventV0_2_0(SpecVersion)
+}
+
+var PipelineRunQueuedEventType = api.PipelineRunQueuedEventTypeV0_2_0
+
+type PipelineRunStartedEvent = api.PipelineRunStartedEventV0_2_0
+type PipelineRunStartedSubject = api.PipelineRunStartedSubjectV0_2_0
+
+func NewPipelineRunStartedEvent() (*PipelineRunStartedEvent, error) {
+ return api.NewPipelineRunStartedEventV0_2_0(SpecVersion)
+}
+
+var PipelineRunStartedEventType = api.PipelineRunStartedEventTypeV0_2_0
+
+type RepositoryCreatedEvent = api.RepositoryCreatedEventV0_2_0
+type RepositoryCreatedSubject = api.RepositoryCreatedSubjectV0_2_0
+
+func NewRepositoryCreatedEvent() (*RepositoryCreatedEvent, error) {
+ return api.NewRepositoryCreatedEventV0_2_0(SpecVersion)
+}
+
+var RepositoryCreatedEventType = api.RepositoryCreatedEventTypeV0_2_0
+
+type RepositoryDeletedEvent = api.RepositoryDeletedEventV0_2_0
+type RepositoryDeletedSubject = api.RepositoryDeletedSubjectV0_2_0
+
+func NewRepositoryDeletedEvent() (*RepositoryDeletedEvent, error) {
+ return api.NewRepositoryDeletedEventV0_2_0(SpecVersion)
+}
+
+var RepositoryDeletedEventType = api.RepositoryDeletedEventTypeV0_2_0
+
+type RepositoryModifiedEvent = api.RepositoryModifiedEventV0_2_0
+type RepositoryModifiedSubject = api.RepositoryModifiedSubjectV0_2_0
+
+func NewRepositoryModifiedEvent() (*RepositoryModifiedEvent, error) {
+ return api.NewRepositoryModifiedEventV0_2_0(SpecVersion)
+}
+
+var RepositoryModifiedEventType = api.RepositoryModifiedEventTypeV0_2_0
+
+type ServiceDeployedEvent = api.ServiceDeployedEventV0_2_0
+type ServiceDeployedSubject = api.ServiceDeployedSubjectV0_2_0
+
+func NewServiceDeployedEvent() (*ServiceDeployedEvent, error) {
+ return api.NewServiceDeployedEventV0_2_0(SpecVersion)
+}
+
+var ServiceDeployedEventType = api.ServiceDeployedEventTypeV0_2_0
+
+type ServicePublishedEvent = api.ServicePublishedEventV0_2_0
+type ServicePublishedSubject = api.ServicePublishedSubjectV0_2_0
+
+func NewServicePublishedEvent() (*ServicePublishedEvent, error) {
+ return api.NewServicePublishedEventV0_2_0(SpecVersion)
+}
+
+var ServicePublishedEventType = api.ServicePublishedEventTypeV0_2_0
+
+type ServiceRemovedEvent = api.ServiceRemovedEventV0_2_0
+type ServiceRemovedSubject = api.ServiceRemovedSubjectV0_2_0
+
+func NewServiceRemovedEvent() (*ServiceRemovedEvent, error) {
+ return api.NewServiceRemovedEventV0_2_0(SpecVersion)
+}
+
+var ServiceRemovedEventType = api.ServiceRemovedEventTypeV0_2_0
+
+type ServiceRolledbackEvent = api.ServiceRolledbackEventV0_2_0
+type ServiceRolledbackSubject = api.ServiceRolledbackSubjectV0_2_0
+
+func NewServiceRolledbackEvent() (*ServiceRolledbackEvent, error) {
+ return api.NewServiceRolledbackEventV0_2_0(SpecVersion)
+}
+
+var ServiceRolledbackEventType = api.ServiceRolledbackEventTypeV0_2_0
+
+type ServiceUpgradedEvent = api.ServiceUpgradedEventV0_2_0
+type ServiceUpgradedSubject = api.ServiceUpgradedSubjectV0_2_0
+
+func NewServiceUpgradedEvent() (*ServiceUpgradedEvent, error) {
+ return api.NewServiceUpgradedEventV0_2_0(SpecVersion)
+}
+
+var ServiceUpgradedEventType = api.ServiceUpgradedEventTypeV0_2_0
+
+type TaskRunFinishedEvent = api.TaskRunFinishedEventV0_2_0
+type TaskRunFinishedSubject = api.TaskRunFinishedSubjectV0_2_0
+
+func NewTaskRunFinishedEvent() (*TaskRunFinishedEvent, error) {
+ return api.NewTaskRunFinishedEventV0_2_0(SpecVersion)
+}
+
+var TaskRunFinishedEventType = api.TaskRunFinishedEventTypeV0_2_0
+
+type TaskRunStartedEvent = api.TaskRunStartedEventV0_2_0
+type TaskRunStartedSubject = api.TaskRunStartedSubjectV0_2_0
+
+func NewTaskRunStartedEvent() (*TaskRunStartedEvent, error) {
+ return api.NewTaskRunStartedEventV0_2_0(SpecVersion)
+}
+
+var TaskRunStartedEventType = api.TaskRunStartedEventTypeV0_2_0
+
+type TestCaseRunFinishedEvent = api.TestCaseRunFinishedEventV0_2_0
+type TestCaseRunFinishedSubject = api.TestCaseRunFinishedSubjectV0_2_0
+
+// TestCaseRunTestCaseRunSubjectContentTestCaseV0_2_0 holds the content of a TestCase field in the content
+type TestCaseRunFinishedSubjectContentTestCase = api.TestCaseRunFinishedSubjectContentTestCaseV0_2_0
+
+func NewTestCaseRunFinishedEvent() (*TestCaseRunFinishedEvent, error) {
+ return api.NewTestCaseRunFinishedEventV0_2_0(SpecVersion)
+}
+
+var TestCaseRunFinishedEventType = api.TestCaseRunFinishedEventTypeV0_2_0
+
+type TestCaseRunQueuedEvent = api.TestCaseRunQueuedEventV0_2_0
+type TestCaseRunQueuedSubject = api.TestCaseRunQueuedSubjectV0_2_0
+
+// TestCaseRunTestCaseRunSubjectContentTestCaseV0_2_0 holds the content of a TestCase field in the content
+type TestCaseRunQueuedSubjectContentTestCase = api.TestCaseRunQueuedSubjectContentTestCaseV0_2_0
+
+// TestCaseRunTestCaseRunSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestCaseRunQueuedSubjectContentTrigger = api.TestCaseRunQueuedSubjectContentTriggerV0_2_0
+
+func NewTestCaseRunQueuedEvent() (*TestCaseRunQueuedEvent, error) {
+ return api.NewTestCaseRunQueuedEventV0_2_0(SpecVersion)
+}
+
+var TestCaseRunQueuedEventType = api.TestCaseRunQueuedEventTypeV0_2_0
+
+type TestCaseRunSkippedEvent = api.TestCaseRunSkippedEventV0_1_0
+type TestCaseRunSkippedSubject = api.TestCaseRunSkippedSubjectV0_1_0
+
+// TestCaseRunTestCaseRunSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunSkippedSubjectContentTestCase = api.TestCaseRunSkippedSubjectContentTestCaseV0_1_0
+
+func NewTestCaseRunSkippedEvent() (*TestCaseRunSkippedEvent, error) {
+ return api.NewTestCaseRunSkippedEventV0_1_0(SpecVersion)
+}
+
+var TestCaseRunSkippedEventType = api.TestCaseRunSkippedEventTypeV0_1_0
+
+type TestCaseRunStartedEvent = api.TestCaseRunStartedEventV0_2_0
+type TestCaseRunStartedSubject = api.TestCaseRunStartedSubjectV0_2_0
+
+// TestCaseRunTestCaseRunSubjectContentTestCaseV0_2_0 holds the content of a TestCase field in the content
+type TestCaseRunStartedSubjectContentTestCase = api.TestCaseRunStartedSubjectContentTestCaseV0_2_0
+
+// TestCaseRunTestCaseRunSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestCaseRunStartedSubjectContentTrigger = api.TestCaseRunStartedSubjectContentTriggerV0_2_0
+
+func NewTestCaseRunStartedEvent() (*TestCaseRunStartedEvent, error) {
+ return api.NewTestCaseRunStartedEventV0_2_0(SpecVersion)
+}
+
+var TestCaseRunStartedEventType = api.TestCaseRunStartedEventTypeV0_2_0
+
+type TestOutputPublishedEvent = api.TestOutputPublishedEventV0_2_0
+type TestOutputPublishedSubject = api.TestOutputPublishedSubjectV0_2_0
+
+func NewTestOutputPublishedEvent() (*TestOutputPublishedEvent, error) {
+ return api.NewTestOutputPublishedEventV0_2_0(SpecVersion)
+}
+
+var TestOutputPublishedEventType = api.TestOutputPublishedEventTypeV0_2_0
+
+type TestSuiteRunFinishedEvent = api.TestSuiteRunFinishedEventV0_2_0
+type TestSuiteRunFinishedSubject = api.TestSuiteRunFinishedSubjectV0_2_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTestSuiteV0_2_0 holds the content of a TestSuite field in the content
+type TestSuiteRunFinishedSubjectContentTestSuite = api.TestSuiteRunFinishedSubjectContentTestSuiteV0_2_0
+
+func NewTestSuiteRunFinishedEvent() (*TestSuiteRunFinishedEvent, error) {
+ return api.NewTestSuiteRunFinishedEventV0_2_0(SpecVersion)
+}
+
+var TestSuiteRunFinishedEventType = api.TestSuiteRunFinishedEventTypeV0_2_0
+
+type TestSuiteRunQueuedEvent = api.TestSuiteRunQueuedEventV0_2_0
+type TestSuiteRunQueuedSubject = api.TestSuiteRunQueuedSubjectV0_2_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTestSuiteV0_2_0 holds the content of a TestSuite field in the content
+type TestSuiteRunQueuedSubjectContentTestSuite = api.TestSuiteRunQueuedSubjectContentTestSuiteV0_2_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestSuiteRunQueuedSubjectContentTrigger = api.TestSuiteRunQueuedSubjectContentTriggerV0_2_0
+
+func NewTestSuiteRunQueuedEvent() (*TestSuiteRunQueuedEvent, error) {
+ return api.NewTestSuiteRunQueuedEventV0_2_0(SpecVersion)
+}
+
+var TestSuiteRunQueuedEventType = api.TestSuiteRunQueuedEventTypeV0_2_0
+
+type TestSuiteRunStartedEvent = api.TestSuiteRunStartedEventV0_2_0
+type TestSuiteRunStartedSubject = api.TestSuiteRunStartedSubjectV0_2_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTestSuiteV0_2_0 holds the content of a TestSuite field in the content
+type TestSuiteRunStartedSubjectContentTestSuite = api.TestSuiteRunStartedSubjectContentTestSuiteV0_2_0
+
+// TestSuiteRunTestSuiteRunSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestSuiteRunStartedSubjectContentTrigger = api.TestSuiteRunStartedSubjectContentTriggerV0_2_0
+
+func NewTestSuiteRunStartedEvent() (*TestSuiteRunStartedEvent, error) {
+ return api.NewTestSuiteRunStartedEventV0_2_0(SpecVersion)
+}
+
+var TestSuiteRunStartedEventType = api.TestSuiteRunStartedEventTypeV0_2_0
+
+type TicketClosedEvent = api.TicketClosedEventV0_1_0
+type TicketClosedSubject = api.TicketClosedSubjectV0_1_0
+
+func NewTicketClosedEvent() (*TicketClosedEvent, error) {
+ return api.NewTicketClosedEventV0_1_0(SpecVersion)
+}
+
+var TicketClosedEventType = api.TicketClosedEventTypeV0_1_0
+
+type TicketCreatedEvent = api.TicketCreatedEventV0_1_0
+type TicketCreatedSubject = api.TicketCreatedSubjectV0_1_0
+
+func NewTicketCreatedEvent() (*TicketCreatedEvent, error) {
+ return api.NewTicketCreatedEventV0_1_0(SpecVersion)
+}
+
+var TicketCreatedEventType = api.TicketCreatedEventTypeV0_1_0
+
+type TicketUpdatedEvent = api.TicketUpdatedEventV0_1_0
+type TicketUpdatedSubject = api.TicketUpdatedSubjectV0_1_0
+
+func NewTicketUpdatedEvent() (*TicketUpdatedEvent, error) {
+ return api.NewTicketUpdatedEventV0_1_0(SpecVersion)
+}
+
+var TicketUpdatedEventType = api.TicketUpdatedEventTypeV0_1_0
+
+// NewFromJsonBytes builds a new CDEventReader from a JSON string as []bytes
+// This works by unmarshalling the context first, extracting the event type and using
+// that to unmarshal the rest of the event into the correct object.
+// It assumes the context can be unmarshalled in a `Context` object.
+func NewFromJsonBytes(event []byte) (api.CDEventV04, error) {
+ return api.NewFromJsonBytesContext[api.CDEventV04](event, CDEventsByUnversionedTypes)
+}
+
+// Build a new CDEventReader from a JSON string
+func NewFromJsonString(event string) (api.CDEventV04, error) {
+ return NewFromJsonBytes([]byte(event))
+}
diff --git a/pkg/api/v04/factory_test.go b/pkg/api/v04/factory_test.go
new file mode 100644
index 0000000..c8c0f10
--- /dev/null
+++ b/pkg/api/v04/factory_test.go
@@ -0,0 +1,137 @@
+/*
+Copyright 2022 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v04_test
+
+import (
+ "encoding/json"
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/cdevents/sdk-go/pkg/api"
+ cdevents "github.com/cdevents/sdk-go/pkg/api/v04"
+
+ "github.com/google/go-cmp/cmp"
+ "github.com/google/go-cmp/cmp/cmpopts"
+ "github.com/google/uuid"
+)
+
+func init() {
+ // Get the time once
+ t := time.Now()
+ timeNow = func() time.Time {
+ return t
+ }
+
+ // Get the UUID once
+ u, _ := uuid.NewRandom()
+ uuidNewRandom = func() (uuid.UUID, error) {
+ return u, nil
+ }
+}
+
+func testUUID() string {
+ u, _ := uuidNewRandom()
+ return fmt.Sprintf("%v", u)
+}
+
+type testNewCDEventType struct {
+ name string
+ eventType string
+ expectedEvent api.CDEvent
+}
+
+// tests is used in TestNewCDEvents. It's content is
+// generated in zz_factory_tests.go
+var (
+ tests []testNewCDEventType
+ testContentType = "application/json"
+ timeNow = time.Now
+ uuidNewRandom = uuid.NewRandom
+ testSpecVersion = "0.4.1"
+)
+
+func TestNewCDEvent(t *testing.T) {
+ testDataJsonBytes, err := json.Marshal(testDataJson)
+ if err != nil {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ }
+
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ event, err := cdevents.NewCDEvent(tc.eventType, testSpecVersion)
+ if err != nil {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ }
+ if d := cmp.Diff(tc.expectedEvent, event,
+ cmpopts.IgnoreFields(api.Context{}, "Timestamp"),
+ cmpopts.IgnoreFields(api.Context{}, "Id")); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ // Check GetType
+ if d := cmp.Diff(tc.eventType, event.GetType().String()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ // CustomData set and get
+ err = event.SetCustomData(testContentType, testDataJsonBytes)
+ if err != nil {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ }
+ customDataRawGot, err := event.GetCustomDataRaw()
+ if err != nil {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ }
+ if d := cmp.Diff(testDataJsonBytes, customDataRawGot); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ customDataGot, err := event.GetCustomData()
+ if err != nil {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ }
+ if d := cmp.Diff(testDataJsonUnmarshalled, customDataGot); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ var customDataAsGot testData
+ err = event.GetCustomDataAs(&customDataAsGot)
+ if err != nil {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ }
+ if d := cmp.Diff(testDataJson, customDataAsGot); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ if d := cmp.Diff(event.GetCustomDataContentType(), testContentType); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ // Subject source set and get
+ event.SetSubjectSource("randomSubjectSource")
+ gotSubjectSource := event.GetSubjectSource()
+ if d := cmp.Diff("randomSubjectSource", gotSubjectSource); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ })
+ }
+}
+
+func TestNewCDEventFailed(t *testing.T) {
+
+ _, err := cdevents.NewCDEvent(api.CDEventType{Subject: "not supported"}.String(), testSpecVersion)
+ if err == nil {
+ t.Fatalf("expected it to fail, but it didn't")
+ }
+}
diff --git a/pkg/api/v04/types.go b/pkg/api/v04/types.go
new file mode 100644
index 0000000..df1f3fe
--- /dev/null
+++ b/pkg/api/v04/types.go
@@ -0,0 +1,184 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v04
+
+import (
+ "fmt"
+
+ "github.com/cdevents/sdk-go/pkg/api"
+)
+
+var CDEventsTypes = []api.CDEventV04{
+ &ArtifactDeletedEvent{},
+ &ArtifactDownloadedEvent{},
+ &ArtifactPackagedEvent{},
+ &ArtifactPublishedEvent{},
+ &ArtifactSignedEvent{},
+ &BranchCreatedEvent{},
+ &BranchDeletedEvent{},
+ &BuildFinishedEvent{},
+ &BuildQueuedEvent{},
+ &BuildStartedEvent{},
+ &ChangeAbandonedEvent{},
+ &ChangeCreatedEvent{},
+ &ChangeMergedEvent{},
+ &ChangeReviewedEvent{},
+ &ChangeUpdatedEvent{},
+ &EnvironmentCreatedEvent{},
+ &EnvironmentDeletedEvent{},
+ &EnvironmentModifiedEvent{},
+ &IncidentDetectedEvent{},
+ &IncidentReportedEvent{},
+ &IncidentResolvedEvent{},
+ &PipelineRunFinishedEvent{},
+ &PipelineRunQueuedEvent{},
+ &PipelineRunStartedEvent{},
+ &RepositoryCreatedEvent{},
+ &RepositoryDeletedEvent{},
+ &RepositoryModifiedEvent{},
+ &ServiceDeployedEvent{},
+ &ServicePublishedEvent{},
+ &ServiceRemovedEvent{},
+ &ServiceRolledbackEvent{},
+ &ServiceUpgradedEvent{},
+ &TaskRunFinishedEvent{},
+ &TaskRunStartedEvent{},
+ &TestCaseRunFinishedEvent{},
+ &TestCaseRunQueuedEvent{},
+ &TestCaseRunSkippedEvent{},
+ &TestCaseRunStartedEvent{},
+ &TestOutputPublishedEvent{},
+ &TestSuiteRunFinishedEvent{},
+ &TestSuiteRunQueuedEvent{},
+ &TestSuiteRunStartedEvent{},
+ &TicketClosedEvent{},
+ &TicketCreatedEvent{},
+ &TicketUpdatedEvent{},
+}
+
+var CDEventsByUnversionedTypes map[string]api.CDEventV04
+
+func init() {
+ // Set up CDEventsByUnversionedTypes for convenience
+ CDEventsByUnversionedTypes = make(map[string]api.CDEventV04)
+ for _, event := range CDEventsTypes {
+ CDEventsByUnversionedTypes[event.GetType().UnversionedString()] = event
+ }
+}
+
+// NewCDEvent produces a CDEvent by type
+// This function can be used by users but it's meant mainly for testing purposes
+func NewCDEvent(eventType, specVersion string) (api.CDEvent, error) {
+ switch eventType {
+ case api.ArtifactDeletedEventTypeV0_1_0.String():
+ return NewArtifactDeletedEvent()
+ case api.ArtifactDownloadedEventTypeV0_1_0.String():
+ return NewArtifactDownloadedEvent()
+ case api.ArtifactPackagedEventTypeV0_2_0.String():
+ return NewArtifactPackagedEvent()
+ case api.ArtifactPublishedEventTypeV0_2_0.String():
+ return NewArtifactPublishedEvent()
+ case api.ArtifactSignedEventTypeV0_2_0.String():
+ return NewArtifactSignedEvent()
+ case api.BranchCreatedEventTypeV0_2_0.String():
+ return NewBranchCreatedEvent()
+ case api.BranchDeletedEventTypeV0_2_0.String():
+ return NewBranchDeletedEvent()
+ case api.BuildFinishedEventTypeV0_2_0.String():
+ return NewBuildFinishedEvent()
+ case api.BuildQueuedEventTypeV0_2_0.String():
+ return NewBuildQueuedEvent()
+ case api.BuildStartedEventTypeV0_2_0.String():
+ return NewBuildStartedEvent()
+ case api.ChangeAbandonedEventTypeV0_2_0.String():
+ return NewChangeAbandonedEvent()
+ case api.ChangeCreatedEventTypeV0_3_0.String():
+ return NewChangeCreatedEvent()
+ case api.ChangeMergedEventTypeV0_2_0.String():
+ return NewChangeMergedEvent()
+ case api.ChangeReviewedEventTypeV0_2_0.String():
+ return NewChangeReviewedEvent()
+ case api.ChangeUpdatedEventTypeV0_2_0.String():
+ return NewChangeUpdatedEvent()
+ case api.EnvironmentCreatedEventTypeV0_2_0.String():
+ return NewEnvironmentCreatedEvent()
+ case api.EnvironmentDeletedEventTypeV0_2_0.String():
+ return NewEnvironmentDeletedEvent()
+ case api.EnvironmentModifiedEventTypeV0_2_0.String():
+ return NewEnvironmentModifiedEvent()
+ case api.IncidentDetectedEventTypeV0_2_0.String():
+ return NewIncidentDetectedEvent()
+ case api.IncidentReportedEventTypeV0_2_0.String():
+ return NewIncidentReportedEvent()
+ case api.IncidentResolvedEventTypeV0_2_0.String():
+ return NewIncidentResolvedEvent()
+ case api.PipelineRunFinishedEventTypeV0_2_0.String():
+ return NewPipelineRunFinishedEvent()
+ case api.PipelineRunQueuedEventTypeV0_2_0.String():
+ return NewPipelineRunQueuedEvent()
+ case api.PipelineRunStartedEventTypeV0_2_0.String():
+ return NewPipelineRunStartedEvent()
+ case api.RepositoryCreatedEventTypeV0_2_0.String():
+ return NewRepositoryCreatedEvent()
+ case api.RepositoryDeletedEventTypeV0_2_0.String():
+ return NewRepositoryDeletedEvent()
+ case api.RepositoryModifiedEventTypeV0_2_0.String():
+ return NewRepositoryModifiedEvent()
+ case api.ServiceDeployedEventTypeV0_2_0.String():
+ return NewServiceDeployedEvent()
+ case api.ServicePublishedEventTypeV0_2_0.String():
+ return NewServicePublishedEvent()
+ case api.ServiceRemovedEventTypeV0_2_0.String():
+ return NewServiceRemovedEvent()
+ case api.ServiceRolledbackEventTypeV0_2_0.String():
+ return NewServiceRolledbackEvent()
+ case api.ServiceUpgradedEventTypeV0_2_0.String():
+ return NewServiceUpgradedEvent()
+ case api.TaskRunFinishedEventTypeV0_2_0.String():
+ return NewTaskRunFinishedEvent()
+ case api.TaskRunStartedEventTypeV0_2_0.String():
+ return NewTaskRunStartedEvent()
+ case api.TestCaseRunFinishedEventTypeV0_2_0.String():
+ return NewTestCaseRunFinishedEvent()
+ case api.TestCaseRunQueuedEventTypeV0_2_0.String():
+ return NewTestCaseRunQueuedEvent()
+ case api.TestCaseRunSkippedEventTypeV0_1_0.String():
+ return NewTestCaseRunSkippedEvent()
+ case api.TestCaseRunStartedEventTypeV0_2_0.String():
+ return NewTestCaseRunStartedEvent()
+ case api.TestOutputPublishedEventTypeV0_2_0.String():
+ return NewTestOutputPublishedEvent()
+ case api.TestSuiteRunFinishedEventTypeV0_2_0.String():
+ return NewTestSuiteRunFinishedEvent()
+ case api.TestSuiteRunQueuedEventTypeV0_2_0.String():
+ return NewTestSuiteRunQueuedEvent()
+ case api.TestSuiteRunStartedEventTypeV0_2_0.String():
+ return NewTestSuiteRunStartedEvent()
+ case api.TicketClosedEventTypeV0_1_0.String():
+ return NewTicketClosedEvent()
+ case api.TicketCreatedEventTypeV0_1_0.String():
+ return NewTicketCreatedEvent()
+ case api.TicketUpdatedEventTypeV0_1_0.String():
+ return NewTicketUpdatedEvent()
+ default:
+ return nil, fmt.Errorf("event %v not supported", eventType)
+ }
+}
diff --git a/pkg/api/v04/zz_examples_test.go b/pkg/api/v04/zz_examples_test.go
new file mode 100644
index 0000000..7a191d5
--- /dev/null
+++ b/pkg/api/v04/zz_examples_test.go
@@ -0,0 +1,370 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v04_test
+
+import (
+ "github.com/cdevents/sdk-go/pkg/api"
+ specv04 "github.com/cdevents/sdk-go/pkg/api/v04"
+)
+
+func init() {
+ // Create events equal to examples in the spec
+ examplesProduced = make(map[string]api.CDEventV04)
+
+ // Set up test links
+ tags := api.Tags{
+ "foo1": "bar",
+ "foo2": "bar",
+ }
+ reference := api.EventReference{
+ ContextId: testContextId,
+ }
+ elr := api.NewEmbeddedLinkRelation()
+ elr.SetTags(tags)
+ elr.SetLinkKind("TRIGGER")
+ elr.SetTarget(reference)
+ elp := api.NewEmbeddedLinkPath()
+ elp.SetTags(tags)
+ elp.SetFrom(reference)
+ ele := api.NewEmbeddedLinkEnd()
+ ele.SetTags(tags)
+ ele.SetFrom(reference)
+ testLinks = api.EmbeddedLinksArray{
+ elr, elp, ele,
+ }
+
+ // Create events for test
+ // ArtifactDeleted Event producer
+ newArtifactDeleted, _ := specv04.NewArtifactDeletedEvent()
+ setContext(newArtifactDeleted, testSubjectId)
+ setContextV04(newArtifactDeleted, true, true)
+ exampleArtifactDeletedEvent(newArtifactDeleted)
+ examplesProduced[newArtifactDeleted.GetType().Short()] = newArtifactDeleted
+
+ // ArtifactDownloaded Event producer
+ newArtifactDownloaded, _ := specv04.NewArtifactDownloadedEvent()
+ setContext(newArtifactDownloaded, testSubjectId)
+ setContextV04(newArtifactDownloaded, true, true)
+ exampleArtifactDownloadedEvent(newArtifactDownloaded)
+ examplesProduced[newArtifactDownloaded.GetType().Short()] = newArtifactDownloaded
+
+ // ArtifactPackaged Event producer
+ newArtifactPackaged, _ := specv04.NewArtifactPackagedEvent()
+ setContext(newArtifactPackaged, testSubjectId)
+ setContextV04(newArtifactPackaged, true, true)
+ exampleArtifactPackagedEvent(newArtifactPackaged)
+ examplesProduced[newArtifactPackaged.GetType().Short()] = newArtifactPackaged
+
+ // ArtifactPublished Event producer
+ newArtifactPublished, _ := specv04.NewArtifactPublishedEvent()
+ setContext(newArtifactPublished, testSubjectId)
+ setContextV04(newArtifactPublished, true, true)
+ exampleArtifactPublishedEvent(newArtifactPublished)
+ examplesProduced[newArtifactPublished.GetType().Short()] = newArtifactPublished
+
+ // ArtifactSigned Event producer
+ newArtifactSigned, _ := specv04.NewArtifactSignedEvent()
+ setContext(newArtifactSigned, testSubjectId)
+ setContextV04(newArtifactSigned, true, true)
+ exampleArtifactSignedEvent(newArtifactSigned)
+ examplesProduced[newArtifactSigned.GetType().Short()] = newArtifactSigned
+
+ // BranchCreated Event producer
+ newBranchCreated, _ := specv04.NewBranchCreatedEvent()
+ setContext(newBranchCreated, testSubjectId)
+ setContextV04(newBranchCreated, true, true)
+ exampleBranchCreatedEvent(newBranchCreated)
+ examplesProduced[newBranchCreated.GetType().Short()] = newBranchCreated
+
+ // BranchDeleted Event producer
+ newBranchDeleted, _ := specv04.NewBranchDeletedEvent()
+ setContext(newBranchDeleted, testSubjectId)
+ setContextV04(newBranchDeleted, true, true)
+ exampleBranchDeletedEvent(newBranchDeleted)
+ examplesProduced[newBranchDeleted.GetType().Short()] = newBranchDeleted
+
+ // BuildFinished Event producer
+ newBuildFinished, _ := specv04.NewBuildFinishedEvent()
+ setContext(newBuildFinished, testSubjectId)
+ setContextV04(newBuildFinished, true, true)
+ exampleBuildFinishedEvent(newBuildFinished)
+ examplesProduced[newBuildFinished.GetType().Short()] = newBuildFinished
+
+ // BuildQueued Event producer
+ newBuildQueued, _ := specv04.NewBuildQueuedEvent()
+ setContext(newBuildQueued, testSubjectId)
+ setContextV04(newBuildQueued, true, true)
+ exampleBuildQueuedEvent(newBuildQueued)
+ examplesProduced[newBuildQueued.GetType().Short()] = newBuildQueued
+
+ // BuildStarted Event producer
+ newBuildStarted, _ := specv04.NewBuildStartedEvent()
+ setContext(newBuildStarted, testSubjectId)
+ setContextV04(newBuildStarted, true, true)
+ exampleBuildStartedEvent(newBuildStarted)
+ examplesProduced[newBuildStarted.GetType().Short()] = newBuildStarted
+
+ // ChangeAbandoned Event producer
+ newChangeAbandoned, _ := specv04.NewChangeAbandonedEvent()
+ setContext(newChangeAbandoned, testSubjectId)
+ setContextV04(newChangeAbandoned, true, true)
+ exampleChangeAbandonedEvent(newChangeAbandoned)
+ examplesProduced[newChangeAbandoned.GetType().Short()] = newChangeAbandoned
+
+ // ChangeCreated Event producer
+ newChangeCreated, _ := specv04.NewChangeCreatedEvent()
+ setContext(newChangeCreated, testSubjectId)
+ setContextV04(newChangeCreated, true, true)
+ exampleChangeCreatedEvent(newChangeCreated)
+ examplesProduced[newChangeCreated.GetType().Short()] = newChangeCreated
+
+ // ChangeMerged Event producer
+ newChangeMerged, _ := specv04.NewChangeMergedEvent()
+ setContext(newChangeMerged, testSubjectId)
+ setContextV04(newChangeMerged, true, true)
+ exampleChangeMergedEvent(newChangeMerged)
+ examplesProduced[newChangeMerged.GetType().Short()] = newChangeMerged
+
+ // ChangeReviewed Event producer
+ newChangeReviewed, _ := specv04.NewChangeReviewedEvent()
+ setContext(newChangeReviewed, testSubjectId)
+ setContextV04(newChangeReviewed, true, true)
+ exampleChangeReviewedEvent(newChangeReviewed)
+ examplesProduced[newChangeReviewed.GetType().Short()] = newChangeReviewed
+
+ // ChangeUpdated Event producer
+ newChangeUpdated, _ := specv04.NewChangeUpdatedEvent()
+ setContext(newChangeUpdated, testSubjectId)
+ setContextV04(newChangeUpdated, true, true)
+ exampleChangeUpdatedEvent(newChangeUpdated)
+ examplesProduced[newChangeUpdated.GetType().Short()] = newChangeUpdated
+
+ // EnvironmentCreated Event producer
+ newEnvironmentCreated, _ := specv04.NewEnvironmentCreatedEvent()
+ setContext(newEnvironmentCreated, testSubjectId)
+ setContextV04(newEnvironmentCreated, true, true)
+ exampleEnvironmentCreatedEvent(newEnvironmentCreated)
+ examplesProduced[newEnvironmentCreated.GetType().Short()] = newEnvironmentCreated
+
+ // EnvironmentDeleted Event producer
+ newEnvironmentDeleted, _ := specv04.NewEnvironmentDeletedEvent()
+ setContext(newEnvironmentDeleted, testSubjectId)
+ setContextV04(newEnvironmentDeleted, true, true)
+ exampleEnvironmentDeletedEvent(newEnvironmentDeleted)
+ examplesProduced[newEnvironmentDeleted.GetType().Short()] = newEnvironmentDeleted
+
+ // EnvironmentModified Event producer
+ newEnvironmentModified, _ := specv04.NewEnvironmentModifiedEvent()
+ setContext(newEnvironmentModified, testSubjectId)
+ setContextV04(newEnvironmentModified, true, true)
+ exampleEnvironmentModifiedEvent(newEnvironmentModified)
+ examplesProduced[newEnvironmentModified.GetType().Short()] = newEnvironmentModified
+
+ // IncidentDetected Event producer
+ newIncidentDetected, _ := specv04.NewIncidentDetectedEvent()
+ setContext(newIncidentDetected, testSubjectId)
+ setContextV04(newIncidentDetected, true, true)
+ exampleIncidentDetectedEvent(newIncidentDetected)
+ examplesProduced[newIncidentDetected.GetType().Short()] = newIncidentDetected
+
+ // IncidentReported Event producer
+ newIncidentReported, _ := specv04.NewIncidentReportedEvent()
+ setContext(newIncidentReported, testSubjectId)
+ setContextV04(newIncidentReported, true, true)
+ exampleIncidentReportedEvent(newIncidentReported)
+ examplesProduced[newIncidentReported.GetType().Short()] = newIncidentReported
+
+ // IncidentResolved Event producer
+ newIncidentResolved, _ := specv04.NewIncidentResolvedEvent()
+ setContext(newIncidentResolved, testSubjectId)
+ setContextV04(newIncidentResolved, true, true)
+ exampleIncidentResolvedEvent(newIncidentResolved)
+ examplesProduced[newIncidentResolved.GetType().Short()] = newIncidentResolved
+
+ // PipelineRunFinished Event producer
+ newPipelineRunFinished, _ := specv04.NewPipelineRunFinishedEvent()
+ setContext(newPipelineRunFinished, testSubjectId)
+ setContextV04(newPipelineRunFinished, true, true)
+ examplePipelineRunFinishedEvent(newPipelineRunFinished)
+ examplesProduced[newPipelineRunFinished.GetType().Short()] = newPipelineRunFinished
+
+ // PipelineRunQueued Event producer
+ newPipelineRunQueued, _ := specv04.NewPipelineRunQueuedEvent()
+ setContext(newPipelineRunQueued, testSubjectId)
+ setContextV04(newPipelineRunQueued, true, true)
+ examplePipelineRunQueuedEvent(newPipelineRunQueued)
+ examplesProduced[newPipelineRunQueued.GetType().Short()] = newPipelineRunQueued
+
+ // PipelineRunStarted Event producer
+ newPipelineRunStarted, _ := specv04.NewPipelineRunStartedEvent()
+ setContext(newPipelineRunStarted, testSubjectId)
+ setContextV04(newPipelineRunStarted, true, true)
+ examplePipelineRunStartedEvent(newPipelineRunStarted)
+ examplesProduced[newPipelineRunStarted.GetType().Short()] = newPipelineRunStarted
+
+ // RepositoryCreated Event producer
+ newRepositoryCreated, _ := specv04.NewRepositoryCreatedEvent()
+ setContext(newRepositoryCreated, testSubjectId)
+ setContextV04(newRepositoryCreated, true, true)
+ exampleRepositoryCreatedEvent(newRepositoryCreated)
+ examplesProduced[newRepositoryCreated.GetType().Short()] = newRepositoryCreated
+
+ // RepositoryDeleted Event producer
+ newRepositoryDeleted, _ := specv04.NewRepositoryDeletedEvent()
+ setContext(newRepositoryDeleted, testSubjectId)
+ setContextV04(newRepositoryDeleted, true, true)
+ exampleRepositoryDeletedEvent(newRepositoryDeleted)
+ examplesProduced[newRepositoryDeleted.GetType().Short()] = newRepositoryDeleted
+
+ // RepositoryModified Event producer
+ newRepositoryModified, _ := specv04.NewRepositoryModifiedEvent()
+ setContext(newRepositoryModified, testSubjectId)
+ setContextV04(newRepositoryModified, true, true)
+ exampleRepositoryModifiedEvent(newRepositoryModified)
+ examplesProduced[newRepositoryModified.GetType().Short()] = newRepositoryModified
+
+ // ServiceDeployed Event producer
+ newServiceDeployed, _ := specv04.NewServiceDeployedEvent()
+ setContext(newServiceDeployed, testSubjectId)
+ setContextV04(newServiceDeployed, true, true)
+ exampleServiceDeployedEvent(newServiceDeployed)
+ examplesProduced[newServiceDeployed.GetType().Short()] = newServiceDeployed
+
+ // ServicePublished Event producer
+ newServicePublished, _ := specv04.NewServicePublishedEvent()
+ setContext(newServicePublished, testSubjectId)
+ setContextV04(newServicePublished, true, true)
+ exampleServicePublishedEvent(newServicePublished)
+ examplesProduced[newServicePublished.GetType().Short()] = newServicePublished
+
+ // ServiceRemoved Event producer
+ newServiceRemoved, _ := specv04.NewServiceRemovedEvent()
+ setContext(newServiceRemoved, testSubjectId)
+ setContextV04(newServiceRemoved, true, true)
+ exampleServiceRemovedEvent(newServiceRemoved)
+ examplesProduced[newServiceRemoved.GetType().Short()] = newServiceRemoved
+
+ // ServiceRolledback Event producer
+ newServiceRolledback, _ := specv04.NewServiceRolledbackEvent()
+ setContext(newServiceRolledback, testSubjectId)
+ setContextV04(newServiceRolledback, true, true)
+ exampleServiceRolledbackEvent(newServiceRolledback)
+ examplesProduced[newServiceRolledback.GetType().Short()] = newServiceRolledback
+
+ // ServiceUpgraded Event producer
+ newServiceUpgraded, _ := specv04.NewServiceUpgradedEvent()
+ setContext(newServiceUpgraded, testSubjectId)
+ setContextV04(newServiceUpgraded, true, true)
+ exampleServiceUpgradedEvent(newServiceUpgraded)
+ examplesProduced[newServiceUpgraded.GetType().Short()] = newServiceUpgraded
+
+ // TaskRunFinished Event producer
+ newTaskRunFinished, _ := specv04.NewTaskRunFinishedEvent()
+ setContext(newTaskRunFinished, testSubjectId)
+ setContextV04(newTaskRunFinished, true, true)
+ exampleTaskRunFinishedEvent(newTaskRunFinished)
+ examplesProduced[newTaskRunFinished.GetType().Short()] = newTaskRunFinished
+
+ // TaskRunStarted Event producer
+ newTaskRunStarted, _ := specv04.NewTaskRunStartedEvent()
+ setContext(newTaskRunStarted, testSubjectId)
+ setContextV04(newTaskRunStarted, true, true)
+ exampleTaskRunStartedEvent(newTaskRunStarted)
+ examplesProduced[newTaskRunStarted.GetType().Short()] = newTaskRunStarted
+
+ // TestCaseRunFinished Event producer
+ newTestCaseRunFinished, _ := specv04.NewTestCaseRunFinishedEvent()
+ setContext(newTestCaseRunFinished, testSubjectId)
+ setContextV04(newTestCaseRunFinished, true, true)
+ exampleTestCaseRunFinishedEvent(newTestCaseRunFinished)
+ examplesProduced[newTestCaseRunFinished.GetType().Short()] = newTestCaseRunFinished
+
+ // TestCaseRunQueued Event producer
+ newTestCaseRunQueued, _ := specv04.NewTestCaseRunQueuedEvent()
+ setContext(newTestCaseRunQueued, testSubjectId)
+ setContextV04(newTestCaseRunQueued, true, true)
+ exampleTestCaseRunQueuedEvent(newTestCaseRunQueued)
+ examplesProduced[newTestCaseRunQueued.GetType().Short()] = newTestCaseRunQueued
+
+ // TestCaseRunSkipped Event producer
+ newTestCaseRunSkipped, _ := specv04.NewTestCaseRunSkippedEvent()
+ setContext(newTestCaseRunSkipped, testSubjectId)
+ setContextV04(newTestCaseRunSkipped, true, true)
+ exampleTestCaseRunSkippedEvent(newTestCaseRunSkipped)
+ examplesProduced[newTestCaseRunSkipped.GetType().Short()] = newTestCaseRunSkipped
+
+ // TestCaseRunStarted Event producer
+ newTestCaseRunStarted, _ := specv04.NewTestCaseRunStartedEvent()
+ setContext(newTestCaseRunStarted, testSubjectId)
+ setContextV04(newTestCaseRunStarted, true, true)
+ exampleTestCaseRunStartedEvent(newTestCaseRunStarted)
+ examplesProduced[newTestCaseRunStarted.GetType().Short()] = newTestCaseRunStarted
+
+ // TestOutputPublished Event producer
+ newTestOutputPublished, _ := specv04.NewTestOutputPublishedEvent()
+ setContext(newTestOutputPublished, testSubjectId)
+ setContextV04(newTestOutputPublished, true, true)
+ exampleTestOutputPublishedEvent(newTestOutputPublished)
+ examplesProduced[newTestOutputPublished.GetType().Short()] = newTestOutputPublished
+
+ // TestSuiteRunFinished Event producer
+ newTestSuiteRunFinished, _ := specv04.NewTestSuiteRunFinishedEvent()
+ setContext(newTestSuiteRunFinished, testSubjectId)
+ setContextV04(newTestSuiteRunFinished, true, true)
+ exampleTestSuiteRunFinishedEvent(newTestSuiteRunFinished)
+ examplesProduced[newTestSuiteRunFinished.GetType().Short()] = newTestSuiteRunFinished
+
+ // TestSuiteRunQueued Event producer
+ newTestSuiteRunQueued, _ := specv04.NewTestSuiteRunQueuedEvent()
+ setContext(newTestSuiteRunQueued, testSubjectId)
+ setContextV04(newTestSuiteRunQueued, true, true)
+ exampleTestSuiteRunQueuedEvent(newTestSuiteRunQueued)
+ examplesProduced[newTestSuiteRunQueued.GetType().Short()] = newTestSuiteRunQueued
+
+ // TestSuiteRunStarted Event producer
+ newTestSuiteRunStarted, _ := specv04.NewTestSuiteRunStartedEvent()
+ setContext(newTestSuiteRunStarted, testSubjectId)
+ setContextV04(newTestSuiteRunStarted, true, true)
+ exampleTestSuiteRunStartedEvent(newTestSuiteRunStarted)
+ examplesProduced[newTestSuiteRunStarted.GetType().Short()] = newTestSuiteRunStarted
+
+ // TicketClosed Event producer
+ newTicketClosed, _ := specv04.NewTicketClosedEvent()
+ setContext(newTicketClosed, testSubjectId)
+ setContextV04(newTicketClosed, true, true)
+ exampleTicketClosedEvent(newTicketClosed)
+ examplesProduced[newTicketClosed.GetType().Short()] = newTicketClosed
+
+ // TicketCreated Event producer
+ newTicketCreated, _ := specv04.NewTicketCreatedEvent()
+ setContext(newTicketCreated, testSubjectId)
+ setContextV04(newTicketCreated, true, true)
+ exampleTicketCreatedEvent(newTicketCreated)
+ examplesProduced[newTicketCreated.GetType().Short()] = newTicketCreated
+
+ // TicketUpdated Event producer
+ newTicketUpdated, _ := specv04.NewTicketUpdatedEvent()
+ setContext(newTicketUpdated, testSubjectId)
+ setContextV04(newTicketUpdated, true, true)
+ exampleTicketUpdatedEvent(newTicketUpdated)
+ examplesProduced[newTicketUpdated.GetType().Short()] = newTicketUpdated
+
+}
diff --git a/pkg/api/v04/zz_factory_test.go b/pkg/api/v04/zz_factory_test.go
new file mode 100644
index 0000000..c0c515d
--- /dev/null
+++ b/pkg/api/v04/zz_factory_test.go
@@ -0,0 +1,885 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v04_test
+
+import (
+ "github.com/cdevents/sdk-go/pkg/api"
+ apiv04 "github.com/cdevents/sdk-go/pkg/api/v04"
+)
+
+func init() {
+ tests = []testNewCDEventType{}
+ tests = append(tests, testNewCDEventType{
+ name: "artifact deleted",
+ eventType: apiv04.ArtifactDeletedEventType.String(),
+ expectedEvent: &apiv04.ArtifactDeletedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ArtifactDeletedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ArtifactDeletedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "artifact",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "artifact downloaded",
+ eventType: apiv04.ArtifactDownloadedEventType.String(),
+ expectedEvent: &apiv04.ArtifactDownloadedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ArtifactDownloadedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ArtifactDownloadedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "artifact",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "artifact packaged",
+ eventType: apiv04.ArtifactPackagedEventType.String(),
+ expectedEvent: &apiv04.ArtifactPackagedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ArtifactPackagedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ArtifactPackagedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "artifact",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "artifact published",
+ eventType: apiv04.ArtifactPublishedEventType.String(),
+ expectedEvent: &apiv04.ArtifactPublishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ArtifactPublishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ArtifactPublishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "artifact",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "artifact signed",
+ eventType: apiv04.ArtifactSignedEventType.String(),
+ expectedEvent: &apiv04.ArtifactSignedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ArtifactSignedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ArtifactSignedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "artifact",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "branch created",
+ eventType: apiv04.BranchCreatedEventType.String(),
+ expectedEvent: &apiv04.BranchCreatedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.BranchCreatedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.BranchCreatedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "branch",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "branch deleted",
+ eventType: apiv04.BranchDeletedEventType.String(),
+ expectedEvent: &apiv04.BranchDeletedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.BranchDeletedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.BranchDeletedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "branch",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "build finished",
+ eventType: apiv04.BuildFinishedEventType.String(),
+ expectedEvent: &apiv04.BuildFinishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.BuildFinishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.BuildFinishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "build",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "build queued",
+ eventType: apiv04.BuildQueuedEventType.String(),
+ expectedEvent: &apiv04.BuildQueuedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.BuildQueuedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.BuildQueuedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "build",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "build started",
+ eventType: apiv04.BuildStartedEventType.String(),
+ expectedEvent: &apiv04.BuildStartedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.BuildStartedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.BuildStartedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "build",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "change abandoned",
+ eventType: apiv04.ChangeAbandonedEventType.String(),
+ expectedEvent: &apiv04.ChangeAbandonedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ChangeAbandonedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ChangeAbandonedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "change",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "change created",
+ eventType: apiv04.ChangeCreatedEventType.String(),
+ expectedEvent: &apiv04.ChangeCreatedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ChangeCreatedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ChangeCreatedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "change",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "change merged",
+ eventType: apiv04.ChangeMergedEventType.String(),
+ expectedEvent: &apiv04.ChangeMergedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ChangeMergedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ChangeMergedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "change",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "change reviewed",
+ eventType: apiv04.ChangeReviewedEventType.String(),
+ expectedEvent: &apiv04.ChangeReviewedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ChangeReviewedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ChangeReviewedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "change",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "change updated",
+ eventType: apiv04.ChangeUpdatedEventType.String(),
+ expectedEvent: &apiv04.ChangeUpdatedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ChangeUpdatedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ChangeUpdatedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "change",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "environment created",
+ eventType: apiv04.EnvironmentCreatedEventType.String(),
+ expectedEvent: &apiv04.EnvironmentCreatedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.EnvironmentCreatedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.EnvironmentCreatedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "environment",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "environment deleted",
+ eventType: apiv04.EnvironmentDeletedEventType.String(),
+ expectedEvent: &apiv04.EnvironmentDeletedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.EnvironmentDeletedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.EnvironmentDeletedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "environment",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "environment modified",
+ eventType: apiv04.EnvironmentModifiedEventType.String(),
+ expectedEvent: &apiv04.EnvironmentModifiedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.EnvironmentModifiedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.EnvironmentModifiedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "environment",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "incident detected",
+ eventType: apiv04.IncidentDetectedEventType.String(),
+ expectedEvent: &apiv04.IncidentDetectedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.IncidentDetectedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.IncidentDetectedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "incident",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "incident reported",
+ eventType: apiv04.IncidentReportedEventType.String(),
+ expectedEvent: &apiv04.IncidentReportedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.IncidentReportedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.IncidentReportedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "incident",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "incident resolved",
+ eventType: apiv04.IncidentResolvedEventType.String(),
+ expectedEvent: &apiv04.IncidentResolvedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.IncidentResolvedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.IncidentResolvedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "incident",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "pipelinerun finished",
+ eventType: apiv04.PipelineRunFinishedEventType.String(),
+ expectedEvent: &apiv04.PipelineRunFinishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.PipelineRunFinishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.PipelineRunFinishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "pipelineRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "pipelinerun queued",
+ eventType: apiv04.PipelineRunQueuedEventType.String(),
+ expectedEvent: &apiv04.PipelineRunQueuedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.PipelineRunQueuedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.PipelineRunQueuedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "pipelineRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "pipelinerun started",
+ eventType: apiv04.PipelineRunStartedEventType.String(),
+ expectedEvent: &apiv04.PipelineRunStartedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.PipelineRunStartedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.PipelineRunStartedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "pipelineRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "repository created",
+ eventType: apiv04.RepositoryCreatedEventType.String(),
+ expectedEvent: &apiv04.RepositoryCreatedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.RepositoryCreatedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.RepositoryCreatedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "repository",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "repository deleted",
+ eventType: apiv04.RepositoryDeletedEventType.String(),
+ expectedEvent: &apiv04.RepositoryDeletedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.RepositoryDeletedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.RepositoryDeletedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "repository",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "repository modified",
+ eventType: apiv04.RepositoryModifiedEventType.String(),
+ expectedEvent: &apiv04.RepositoryModifiedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.RepositoryModifiedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.RepositoryModifiedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "repository",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "service deployed",
+ eventType: apiv04.ServiceDeployedEventType.String(),
+ expectedEvent: &apiv04.ServiceDeployedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ServiceDeployedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ServiceDeployedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "service",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "service published",
+ eventType: apiv04.ServicePublishedEventType.String(),
+ expectedEvent: &apiv04.ServicePublishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ServicePublishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ServicePublishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "service",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "service removed",
+ eventType: apiv04.ServiceRemovedEventType.String(),
+ expectedEvent: &apiv04.ServiceRemovedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ServiceRemovedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ServiceRemovedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "service",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "service rolledback",
+ eventType: apiv04.ServiceRolledbackEventType.String(),
+ expectedEvent: &apiv04.ServiceRolledbackEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ServiceRolledbackEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ServiceRolledbackSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "service",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "service upgraded",
+ eventType: apiv04.ServiceUpgradedEventType.String(),
+ expectedEvent: &apiv04.ServiceUpgradedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.ServiceUpgradedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.ServiceUpgradedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "service",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "taskrun finished",
+ eventType: apiv04.TaskRunFinishedEventType.String(),
+ expectedEvent: &apiv04.TaskRunFinishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TaskRunFinishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TaskRunFinishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "taskRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "taskrun started",
+ eventType: apiv04.TaskRunStartedEventType.String(),
+ expectedEvent: &apiv04.TaskRunStartedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TaskRunStartedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TaskRunStartedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "taskRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testcaserun finished",
+ eventType: apiv04.TestCaseRunFinishedEventType.String(),
+ expectedEvent: &apiv04.TestCaseRunFinishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestCaseRunFinishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestCaseRunFinishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testcaserun queued",
+ eventType: apiv04.TestCaseRunQueuedEventType.String(),
+ expectedEvent: &apiv04.TestCaseRunQueuedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestCaseRunQueuedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestCaseRunQueuedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testcaserun skipped",
+ eventType: apiv04.TestCaseRunSkippedEventType.String(),
+ expectedEvent: &apiv04.TestCaseRunSkippedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestCaseRunSkippedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestCaseRunSkippedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testcaserun started",
+ eventType: apiv04.TestCaseRunStartedEventType.String(),
+ expectedEvent: &apiv04.TestCaseRunStartedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestCaseRunStartedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestCaseRunStartedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testoutput published",
+ eventType: apiv04.TestOutputPublishedEventType.String(),
+ expectedEvent: &apiv04.TestOutputPublishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestOutputPublishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestOutputPublishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testOutput",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testsuiterun finished",
+ eventType: apiv04.TestSuiteRunFinishedEventType.String(),
+ expectedEvent: &apiv04.TestSuiteRunFinishedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestSuiteRunFinishedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestSuiteRunFinishedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testSuiteRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testsuiterun queued",
+ eventType: apiv04.TestSuiteRunQueuedEventType.String(),
+ expectedEvent: &apiv04.TestSuiteRunQueuedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestSuiteRunQueuedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestSuiteRunQueuedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testSuiteRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "testsuiterun started",
+ eventType: apiv04.TestSuiteRunStartedEventType.String(),
+ expectedEvent: &apiv04.TestSuiteRunStartedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TestSuiteRunStartedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TestSuiteRunStartedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "testSuiteRun",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "ticket closed",
+ eventType: apiv04.TicketClosedEventType.String(),
+ expectedEvent: &apiv04.TicketClosedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TicketClosedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TicketClosedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "ticket",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "ticket created",
+ eventType: apiv04.TicketCreatedEventType.String(),
+ expectedEvent: &apiv04.TicketCreatedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TicketCreatedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TicketCreatedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "ticket",
+ },
+ },
+ },
+ })
+ tests = append(tests, testNewCDEventType{
+ name: "ticket updated",
+ eventType: apiv04.TicketUpdatedEventType.String(),
+ expectedEvent: &apiv04.TicketUpdatedEvent{
+ Context: api.ContextV04{
+ Context: api.Context{
+ Type: apiv04.TicketUpdatedEventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "0.4.1",
+ },
+ },
+ Subject: apiv04.TicketUpdatedSubject{
+ SubjectBase: api.SubjectBase{
+ Type: "ticket",
+ },
+ },
+ },
+ })
+}
diff --git a/pkg/api/v04/zz_shared_test.go b/pkg/api/v04/zz_shared_test.go
new file mode 100644
index 0000000..5833ea6
--- /dev/null
+++ b/pkg/api/v04/zz_shared_test.go
@@ -0,0 +1,92 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v04_test
+
+import "github.com/cdevents/sdk-go/pkg/api"
+
+func panicOnError(err error) {
+ if err != nil {
+ panic(err.Error())
+ }
+}
+
+type testData struct {
+ TestValues []map[string]string `json:"testValues"`
+}
+
+var (
+ // Examples Data
+ testSource = "/event/source/123"
+ testSubjectId = "mySubject123"
+ testValue = "testValue"
+ testArtifactId = "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427"
+ testDataJson = testData{TestValues: []map[string]string{{"k1": "v1"}, {"k2": "v2"}}}
+ testDataJsonUnmarshalled = map[string]any{
+ "testValues": []any{map[string]any{"k1": string("v1")}, map[string]any{"k2": string("v2")}},
+ }
+ testDataXml = []byte("testData")
+ testChangeId = "myChange123"
+
+ // V04+ Examples Data
+ testChainId = "4c8cb7dd-3448-41de-8768-eec704e2829b"
+ testLinks api.EmbeddedLinksArray
+ testContextId = "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ testSchemaUri = "https://myorg.com/schema/custom"
+)
+
+func init() {
+ // Set up test links
+ tags := api.Tags{
+ "foo1": "bar",
+ "foo2": "bar",
+ }
+ reference := api.EventReference{
+ ContextId: testContextId,
+ }
+ elr := api.NewEmbeddedLinkRelation()
+ elr.SetTags(tags)
+ elr.SetLinkKind("TRIGGER")
+ elr.SetTarget(reference)
+ elp := api.NewEmbeddedLinkPath()
+ elp.SetTags(tags)
+ elp.SetFrom(reference)
+ ele := api.NewEmbeddedLinkEnd()
+ ele.SetTags(tags)
+ ele.SetFrom(reference)
+ testLinks = api.EmbeddedLinksArray{
+ elr, elp, ele,
+ }
+}
+
+func setContext(event api.CDEventWriter, subjectId string) {
+ event.SetSource(testSource)
+ event.SetSubjectId(subjectId)
+}
+
+func setContextV04(event api.CDEventWriterV04, chainId, schemaUri bool) {
+ if chainId {
+ event.SetChainId(testChainId)
+ }
+ if schemaUri {
+ event.SetSchemaUri(testSchemaUri)
+ }
+ event.SetLinks(testLinks)
+}
diff --git a/pkg/api/v990/docs.go b/pkg/api/v990/docs.go
index 11d8e4b..e25c151 100644
--- a/pkg/api/v990/docs.go
+++ b/pkg/api/v990/docs.go
@@ -30,20 +30,26 @@ import "github.com/cdevents/sdk-go/pkg/api"
var SpecVersion = "99.0.0"
type FooSubjectBarPredicateEvent = api.FooSubjectBarPredicateEventV1_2_3
+type FooSubjectBarPredicateSubject = api.FooSubjectBarPredicateSubjectV1_2_3
+
+// FooSubjectFooSubjectSubjectContentObjectFieldV1_2_3 holds the content of a ObjectField field in the content
+type FooSubjectBarPredicateSubjectContentObjectField = api.FooSubjectBarPredicateSubjectContentObjectFieldV1_2_3
func NewFooSubjectBarPredicateEvent() (*FooSubjectBarPredicateEvent, error) {
return api.NewFooSubjectBarPredicateEventV1_2_3(SpecVersion)
}
+var FooSubjectBarPredicateEventType = api.FooSubjectBarPredicateEventTypeV1_2_3
+
// NewFromJsonBytes builds a new CDEventReader from a JSON string as []bytes
// This works by unmarshalling the context first, extracting the event type and using
// that to unmarshal the rest of the event into the correct object.
// It assumes the context can be unmarshalled in a `Context` object.
-func NewFromJsonBytes(event []byte) (api.CDEvent, error) {
- return api.NewFromJsonBytesContext[api.Context](event, CDEventsByUnversionedTypes)
+func NewFromJsonBytes(event []byte) (api.CDEventV04, error) {
+ return api.NewFromJsonBytesContext[api.CDEventV04](event, CDEventsByUnversionedTypes)
}
// Build a new CDEventReader from a JSON string
-func NewFromJsonString(event string) (api.CDEvent, error) {
+func NewFromJsonString(event string) (api.CDEventV04, error) {
return NewFromJsonBytes([]byte(event))
}
diff --git a/pkg/api/v990/types.go b/pkg/api/v990/types.go
index 778f91f..6dfa657 100644
--- a/pkg/api/v990/types.go
+++ b/pkg/api/v990/types.go
@@ -28,15 +28,15 @@ import (
"github.com/cdevents/sdk-go/pkg/api"
)
-var CDEventsTypes = []api.CDEvent{
+var CDEventsTypes = []api.CDEventV04{
&FooSubjectBarPredicateEvent{},
}
-var CDEventsByUnversionedTypes map[string]api.CDEvent
+var CDEventsByUnversionedTypes map[string]api.CDEventV04
func init() {
// Set up CDEventsByUnversionedTypes for convenience
- CDEventsByUnversionedTypes = make(map[string]api.CDEvent)
+ CDEventsByUnversionedTypes = make(map[string]api.CDEventV04)
for _, event := range CDEventsTypes {
CDEventsByUnversionedTypes[event.GetType().UnversionedString()] = event
}
diff --git a/pkg/api/v991/docs.go b/pkg/api/v991/docs.go
new file mode 100644
index 0000000..bdf934c
--- /dev/null
+++ b/pkg/api/v991/docs.go
@@ -0,0 +1,55 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+//go:build testonly
+
+/*
+Copyright 2024 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+// Package v03 contains method to create events that belong to the
+// CDEvents specification v99.1.x
+
+package v991
+
+import "github.com/cdevents/sdk-go/pkg/api"
+
+var SpecVersion = "99.1.0"
+
+type FooSubjectBarPredicateEvent = api.FooSubjectBarPredicateEventV2_2_3
+type FooSubjectBarPredicateSubject = api.FooSubjectBarPredicateSubjectV2_2_3
+
+// FooSubjectFooSubjectSubjectContentObjectFieldV2_2_3 holds the content of a ObjectField field in the content
+type FooSubjectBarPredicateSubjectContentObjectField = api.FooSubjectBarPredicateSubjectContentObjectFieldV2_2_3
+
+func NewFooSubjectBarPredicateEvent() (*FooSubjectBarPredicateEvent, error) {
+ return api.NewFooSubjectBarPredicateEventV2_2_3(SpecVersion)
+}
+
+var FooSubjectBarPredicateEventType = api.FooSubjectBarPredicateEventTypeV2_2_3
+
+// NewFromJsonBytes builds a new CDEventReader from a JSON string as []bytes
+// This works by unmarshalling the context first, extracting the event type and using
+// that to unmarshal the rest of the event into the correct object.
+// It assumes the context can be unmarshalled in a `Context` object.
+func NewFromJsonBytes(event []byte) (api.CDEventV04, error) {
+ return api.NewFromJsonBytesContext[api.CDEventV04](event, CDEventsByUnversionedTypes)
+}
+
+// Build a new CDEventReader from a JSON string
+func NewFromJsonString(event string) (api.CDEventV04, error) {
+ return NewFromJsonBytes([]byte(event))
+}
diff --git a/pkg/api/v991/types.go b/pkg/api/v991/types.go
new file mode 100644
index 0000000..715b996
--- /dev/null
+++ b/pkg/api/v991/types.go
@@ -0,0 +1,54 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+//go:build testonly
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package v991
+
+import (
+ "fmt"
+
+ "github.com/cdevents/sdk-go/pkg/api"
+)
+
+var CDEventsTypes = []api.CDEventV04{
+ &FooSubjectBarPredicateEvent{},
+}
+
+var CDEventsByUnversionedTypes map[string]api.CDEventV04
+
+func init() {
+ // Set up CDEventsByUnversionedTypes for convenience
+ CDEventsByUnversionedTypes = make(map[string]api.CDEventV04)
+ for _, event := range CDEventsTypes {
+ CDEventsByUnversionedTypes[event.GetType().UnversionedString()] = event
+ }
+}
+
+// NewCDEvent produces a CDEvent by type
+// This function can be used by users but it's meant mainly for testing purposes
+func NewCDEvent(eventType, specVersion string) (api.CDEvent, error) {
+ switch eventType {
+ case api.FooSubjectBarPredicateEventTypeV2_2_3.String():
+ return NewFooSubjectBarPredicateEvent()
+ default:
+ return nil, fmt.Errorf("event %v not supported", eventType)
+ }
+}
diff --git a/pkg/api/ztest_schemas.go b/pkg/api/ztest_schemas.go
new file mode 100644
index 0000000..4a6fcfa
--- /dev/null
+++ b/pkg/api/ztest_schemas.go
@@ -0,0 +1,371 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+//go:build testonly
+
+/*
+Copyright 2024 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "encoding/json"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // All compiled schemas by Id
+ TestCompiledSchemas SchemaDB
+
+ // All schemas as string by Id
+ TestSchemasById = map[string]string{
+ "https://cdevents.dev/99.0.0/schema/foosubject-barpredicate-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/99.0.0/schema/foosubject-barpredicate-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.foosubject.barpredicate.1.2.3"
+ ],
+ "default": "dev.cdevents.foosubject.barpredicate.1.2.3"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "fooSubject"
+ ],
+ "default": "fooSubject"
+ },
+ "content": {
+ "properties": {
+ "plainField": {
+ "type": "string",
+ "minLength": 1
+ },
+ "referenceField": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "objectField": {
+ "properties": {
+ "required": {
+ "type": "string",
+ "minLength": 1
+ },
+ "optional": {
+ "type": "string",
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "required"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "plainField",
+ "referenceField"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ "https://cdevents.dev/99.1.0/schema/foosubject-barpredicate-event": `{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://cdevents.dev/99.1.0/schema/foosubject-barpredicate-event",
+ "properties": {
+ "context": {
+ "properties": {
+ "version": {
+ "type": "string",
+ "minLength": 1
+ },
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "dev.cdevents.foosubject.barpredicate.2.2.3"
+ ],
+ "default": "dev.cdevents.foosubject.barpredicate.2.2.3"
+ },
+ "timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "schemaUri": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri"
+ },
+ "chainId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "links": {
+ "$ref": "https://cdevents.dev/0.4.1/schema/links/embeddedlinksarray"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "version",
+ "id",
+ "source",
+ "type",
+ "timestamp"
+ ]
+ },
+ "subject": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ },
+ "type": {
+ "type": "string",
+ "minLength": 1,
+ "enum": [
+ "fooSubject"
+ ],
+ "default": "fooSubject"
+ },
+ "content": {
+ "properties": {
+ "plainField": {
+ "type": "string",
+ "minLength": 1
+ },
+ "referenceField": {
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 1
+ },
+ "source": {
+ "type": "string",
+ "minLength": 1,
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id"
+ ]
+ },
+ "artifactId": {
+ "type": "string"
+ },
+ "objectField": {
+ "properties": {
+ "required": {
+ "type": "string",
+ "minLength": 1
+ },
+ "optional": {
+ "type": "string",
+ "format": "uri-reference"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "required"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "plainField",
+ "referenceField"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "type",
+ "content"
+ ]
+ },
+ "customData": {
+ "oneOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "string",
+ "contentEncoding": "base64"
+ }
+ ]
+ },
+ "customDataContentType": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "context",
+ "subject"
+ ]
+}`,
+ }
+)
+
+func init() {
+ compiler, err := newTestJsonSchemaCompiler()
+ panicOnError(err)
+ TestCompiledSchemas = make(map[string]*jsonschema.Schema)
+ // For tests load non-test schemas first to cover links and custom
+ for url, _ := range SchemasById {
+ sch, err := compiler.Compile(url)
+ panicOnError(err)
+ TestCompiledSchemas[url] = sch
+ }
+ for url, _ := range TestSchemasById {
+ sch, err := compiler.Compile(url)
+ panicOnError(err)
+ TestCompiledSchemas[url] = sch
+ }
+}
+
+func newTestJsonSchemaCompiler() (*jsonschema.Compiler, error) {
+ c, err := newJsonSchemaCompiler()
+ if err != nil {
+ return nil, err
+ }
+ for url, content := range TestSchemasById {
+ var loaded map[string]interface{}
+ err := json.Unmarshal([]byte(content), &loaded)
+ if err != nil {
+ return nil, err
+ }
+ if err := c.AddResource(url, loaded); err != nil {
+ return nil, err
+ }
+ }
+ return c, nil
+}
diff --git a/pkg/api/zz_artifactdeleted_0_1_0.go b/pkg/api/zz_artifactdeleted_0_1_0.go
new file mode 100644
index 0000000..2340164
--- /dev/null
+++ b/pkg/api/zz_artifactdeleted_0_1_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ArtifactDeleted event type v0.1.0
+ ArtifactDeletedEventTypeV0_1_0 CDEventType = CDEventType{
+ Subject: "artifact",
+ Predicate: "deleted",
+ Version: "0.1.0",
+ }
+)
+
+type ArtifactDeletedSubjectContentV0_1_0 struct {
+ User string `json:"user,omitempty"`
+}
+
+type ArtifactDeletedSubjectV0_1_0 struct {
+ SubjectBase
+ Content ArtifactDeletedSubjectContentV0_1_0 `json:"content"`
+}
+
+func (sc ArtifactDeletedSubjectV0_1_0) GetSubjectType() SubjectType {
+ return "artifact"
+}
+
+type ArtifactDeletedEventV0_1_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ArtifactDeletedSubjectV0_1_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ArtifactDeletedEventV0_1_0) GetType() CDEventType {
+ return ArtifactDeletedEventTypeV0_1_0
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ArtifactDeletedEventV0_1_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ArtifactDeletedEventV0_1_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ArtifactDeletedEventV0_1_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ArtifactDeletedEventV0_1_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ArtifactDeletedEventV0_1_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ArtifactDeletedEventV0_1_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ArtifactDeletedEventV0_1_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ArtifactDeletedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ArtifactDeletedEventV0_1_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ArtifactDeletedEventV0_1_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ArtifactDeletedEventV0_1_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ArtifactDeletedEventV0_1_0) SetSubjectUser(user string) {
+ e.Subject.Content.User = user
+}
+
+// New creates a new ArtifactDeletedEventV0_1_0
+func NewArtifactDeletedEventV0_1_0(specVersion string) (*ArtifactDeletedEventV0_1_0, error) {
+ e := &ArtifactDeletedEventV0_1_0{
+ Context: ContextV04{
+ Context{
+ Type: ArtifactDeletedEventTypeV0_1_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ArtifactDeletedSubjectV0_1_0{
+ SubjectBase: SubjectBase{
+ Type: "artifact",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_artifactdownloaded_0_1_0.go b/pkg/api/zz_artifactdownloaded_0_1_0.go
new file mode 100644
index 0000000..87746f7
--- /dev/null
+++ b/pkg/api/zz_artifactdownloaded_0_1_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ArtifactDownloaded event type v0.1.0
+ ArtifactDownloadedEventTypeV0_1_0 CDEventType = CDEventType{
+ Subject: "artifact",
+ Predicate: "downloaded",
+ Version: "0.1.0",
+ }
+)
+
+type ArtifactDownloadedSubjectContentV0_1_0 struct {
+ User string `json:"user,omitempty"`
+}
+
+type ArtifactDownloadedSubjectV0_1_0 struct {
+ SubjectBase
+ Content ArtifactDownloadedSubjectContentV0_1_0 `json:"content"`
+}
+
+func (sc ArtifactDownloadedSubjectV0_1_0) GetSubjectType() SubjectType {
+ return "artifact"
+}
+
+type ArtifactDownloadedEventV0_1_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ArtifactDownloadedSubjectV0_1_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ArtifactDownloadedEventV0_1_0) GetType() CDEventType {
+ return ArtifactDownloadedEventTypeV0_1_0
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ArtifactDownloadedEventV0_1_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ArtifactDownloadedEventV0_1_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ArtifactDownloadedEventV0_1_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ArtifactDownloadedEventV0_1_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ArtifactDownloadedEventV0_1_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ArtifactDownloadedEventV0_1_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ArtifactDownloadedEventV0_1_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ArtifactDownloadedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ArtifactDownloadedEventV0_1_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ArtifactDownloadedEventV0_1_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ArtifactDownloadedEventV0_1_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ArtifactDownloadedEventV0_1_0) SetSubjectUser(user string) {
+ e.Subject.Content.User = user
+}
+
+// New creates a new ArtifactDownloadedEventV0_1_0
+func NewArtifactDownloadedEventV0_1_0(specVersion string) (*ArtifactDownloadedEventV0_1_0, error) {
+ e := &ArtifactDownloadedEventV0_1_0{
+ Context: ContextV04{
+ Context{
+ Type: ArtifactDownloadedEventTypeV0_1_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ArtifactDownloadedSubjectV0_1_0{
+ SubjectBase: SubjectBase{
+ Type: "artifact",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_artifactpackaged_0_1_1.go b/pkg/api/zz_artifactpackaged_0_1_1.go
index e05ee02..2762da8 100644
--- a/pkg/api/zz_artifactpackaged_0_1_1.go
+++ b/pkg/api/zz_artifactpackaged_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var artifactpackagedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/artifact-packaged-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.artifact.packaged.0.1.1"],"default":"dev.cdevents.artifact.packaged.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["artifact"],"default":"artifact"},"content":{"properties":{"change":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object","required":["change"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ArtifactPackaged event type v0.1.1
@@ -36,22 +35,22 @@ var (
}
)
-type ArtifactPackagedSubjectContent struct {
+type ArtifactPackagedSubjectContentV0_1_1 struct {
Change *Reference `json:"change"`
}
-type ArtifactPackagedSubject struct {
+type ArtifactPackagedSubjectV0_1_1 struct {
SubjectBase
- Content ArtifactPackagedSubjectContent `json:"content"`
+ Content ArtifactPackagedSubjectContentV0_1_1 `json:"content"`
}
-func (sc ArtifactPackagedSubject) GetSubjectType() SubjectType {
+func (sc ArtifactPackagedSubjectV0_1_1) GetSubjectType() SubjectType {
return "artifact"
}
type ArtifactPackagedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject ArtifactPackagedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ArtifactPackagedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ArtifactPackagedEventV0_1_1) SetCustomData(contentType string, data int
return nil
}
-func (e ArtifactPackagedEventV0_1_1) GetSchema() (string, string) {
+func (e ArtifactPackagedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), artifactpackagedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewArtifactPackagedEventV0_1_1(specVersion string) (*ArtifactPackagedEventV
Type: ArtifactPackagedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: ArtifactPackagedSubject{
+ Subject: ArtifactPackagedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "artifact",
},
diff --git a/pkg/api/zz_artifactpackaged_0_2_0.go b/pkg/api/zz_artifactpackaged_0_2_0.go
new file mode 100644
index 0000000..5a21e3d
--- /dev/null
+++ b/pkg/api/zz_artifactpackaged_0_2_0.go
@@ -0,0 +1,215 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ArtifactPackaged event type v0.2.0
+ ArtifactPackagedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "artifact",
+ Predicate: "packaged",
+ Version: "0.2.0",
+ }
+)
+
+type ArtifactPackagedSubjectContentV0_2_0 struct {
+ Change *Reference `json:"change"`
+
+ Sbom *ArtifactPackagedSubjectContentSbomV0_2_0 `json:"sbom,omitempty"`
+}
+
+type ArtifactPackagedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ArtifactPackagedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ArtifactPackagedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "artifact"
+}
+
+type ArtifactPackagedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ArtifactPackagedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ArtifactPackagedEventV0_2_0) GetType() CDEventType {
+ return ArtifactPackagedEventTypeV0_2_0
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ArtifactPackagedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ArtifactPackagedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ArtifactPackagedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ArtifactPackagedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ArtifactPackagedEventV0_2_0) SetSubjectChange(change *Reference) {
+ e.Subject.Content.Change = change
+}
+
+func (e *ArtifactPackagedEventV0_2_0) SetSubjectSbom(sbom *ArtifactPackagedSubjectContentSbomV0_2_0) {
+ e.Subject.Content.Sbom = sbom
+}
+
+// New creates a new ArtifactPackagedEventV0_2_0
+func NewArtifactPackagedEventV0_2_0(specVersion string) (*ArtifactPackagedEventV0_2_0, error) {
+ e := &ArtifactPackagedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ArtifactPackagedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ArtifactPackagedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "artifact",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// ArtifactPackagedSubjectContentSbomV0_2_0 holds the content of a Sbom field in the content
+type ArtifactPackagedSubjectContentSbomV0_2_0 struct {
+ Uri string `json:"uri"`
+}
diff --git a/pkg/api/zz_artifactpublished_0_1_1.go b/pkg/api/zz_artifactpublished_0_1_1.go
index dfd03d3..7e1e12e 100644
--- a/pkg/api/zz_artifactpublished_0_1_1.go
+++ b/pkg/api/zz_artifactpublished_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var artifactpublishedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/artifact-published-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.artifact.published.0.1.1"],"default":"dev.cdevents.artifact.published.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["artifact"],"default":"artifact"},"content":{"properties":{},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ArtifactPublished event type v0.1.1
@@ -36,21 +35,21 @@ var (
}
)
-type ArtifactPublishedSubjectContent struct {
+type ArtifactPublishedSubjectContentV0_1_1 struct {
}
-type ArtifactPublishedSubject struct {
+type ArtifactPublishedSubjectV0_1_1 struct {
SubjectBase
- Content ArtifactPublishedSubjectContent `json:"content"`
+ Content ArtifactPublishedSubjectContentV0_1_1 `json:"content"`
}
-func (sc ArtifactPublishedSubject) GetSubjectType() SubjectType {
+func (sc ArtifactPublishedSubjectV0_1_1) GetSubjectType() SubjectType {
return "artifact"
}
type ArtifactPublishedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject ArtifactPublishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ArtifactPublishedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -140,9 +139,9 @@ func (e *ArtifactPublishedEventV0_1_1) SetCustomData(contentType string, data in
return nil
}
-func (e ArtifactPublishedEventV0_1_1) GetSchema() (string, string) {
+func (e ArtifactPublishedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), artifactpublishedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -154,7 +153,7 @@ func NewArtifactPublishedEventV0_1_1(specVersion string) (*ArtifactPublishedEven
Type: ArtifactPublishedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: ArtifactPublishedSubject{
+ Subject: ArtifactPublishedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "artifact",
},
diff --git a/pkg/api/zz_artifactpublished_0_2_0.go b/pkg/api/zz_artifactpublished_0_2_0.go
new file mode 100644
index 0000000..bb13ebb
--- /dev/null
+++ b/pkg/api/zz_artifactpublished_0_2_0.go
@@ -0,0 +1,215 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ArtifactPublished event type v0.2.0
+ ArtifactPublishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "artifact",
+ Predicate: "published",
+ Version: "0.2.0",
+ }
+)
+
+type ArtifactPublishedSubjectContentV0_2_0 struct {
+ Sbom *ArtifactPublishedSubjectContentSbomV0_2_0 `json:"sbom,omitempty"`
+
+ User string `json:"user,omitempty"`
+}
+
+type ArtifactPublishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ArtifactPublishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ArtifactPublishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "artifact"
+}
+
+type ArtifactPublishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ArtifactPublishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ArtifactPublishedEventV0_2_0) GetType() CDEventType {
+ return ArtifactPublishedEventTypeV0_2_0
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ArtifactPublishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ArtifactPublishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ArtifactPublishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ArtifactPublishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ArtifactPublishedEventV0_2_0) SetSubjectSbom(sbom *ArtifactPublishedSubjectContentSbomV0_2_0) {
+ e.Subject.Content.Sbom = sbom
+}
+
+func (e *ArtifactPublishedEventV0_2_0) SetSubjectUser(user string) {
+ e.Subject.Content.User = user
+}
+
+// New creates a new ArtifactPublishedEventV0_2_0
+func NewArtifactPublishedEventV0_2_0(specVersion string) (*ArtifactPublishedEventV0_2_0, error) {
+ e := &ArtifactPublishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ArtifactPublishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ArtifactPublishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "artifact",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// ArtifactPublishedSubjectContentSbomV0_2_0 holds the content of a Sbom field in the content
+type ArtifactPublishedSubjectContentSbomV0_2_0 struct {
+ Uri string `json:"uri"`
+}
diff --git a/pkg/api/zz_artifactsigned_0_1_0.go b/pkg/api/zz_artifactsigned_0_1_0.go
index 4c4c9cf..9590543 100644
--- a/pkg/api/zz_artifactsigned_0_1_0.go
+++ b/pkg/api/zz_artifactsigned_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var artifactsignedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/artifact-signed-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.artifact.signed.0.1.0"],"default":"dev.cdevents.artifact.signed.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["artifact"],"default":"artifact"},"content":{"properties":{"signature":{"type":"string","minLength":1}},"additionalProperties":false,"type":"object","required":["signature"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ArtifactSigned event type v0.1.0
@@ -36,22 +35,22 @@ var (
}
)
-type ArtifactSignedSubjectContent struct {
+type ArtifactSignedSubjectContentV0_1_0 struct {
Signature string `json:"signature"`
}
-type ArtifactSignedSubject struct {
+type ArtifactSignedSubjectV0_1_0 struct {
SubjectBase
- Content ArtifactSignedSubjectContent `json:"content"`
+ Content ArtifactSignedSubjectContentV0_1_0 `json:"content"`
}
-func (sc ArtifactSignedSubject) GetSubjectType() SubjectType {
+func (sc ArtifactSignedSubjectV0_1_0) GetSubjectType() SubjectType {
return "artifact"
}
type ArtifactSignedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject ArtifactSignedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ArtifactSignedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ArtifactSignedEventV0_1_0) SetCustomData(contentType string, data inter
return nil
}
-func (e ArtifactSignedEventV0_1_0) GetSchema() (string, string) {
+func (e ArtifactSignedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), artifactsignedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewArtifactSignedEventV0_1_0(specVersion string) (*ArtifactSignedEventV0_1_
Type: ArtifactSignedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: ArtifactSignedSubject{
+ Subject: ArtifactSignedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "artifact",
},
diff --git a/pkg/api/zz_artifactsigned_0_2_0.go b/pkg/api/zz_artifactsigned_0_2_0.go
new file mode 100644
index 0000000..d8ed4d2
--- /dev/null
+++ b/pkg/api/zz_artifactsigned_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ArtifactSigned event type v0.2.0
+ ArtifactSignedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "artifact",
+ Predicate: "signed",
+ Version: "0.2.0",
+ }
+)
+
+type ArtifactSignedSubjectContentV0_2_0 struct {
+ Signature string `json:"signature"`
+}
+
+type ArtifactSignedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ArtifactSignedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ArtifactSignedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "artifact"
+}
+
+type ArtifactSignedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ArtifactSignedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ArtifactSignedEventV0_2_0) GetType() CDEventType {
+ return ArtifactSignedEventTypeV0_2_0
+}
+
+func (e ArtifactSignedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ArtifactSignedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ArtifactSignedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ArtifactSignedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ArtifactSignedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ArtifactSignedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ArtifactSignedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ArtifactSignedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactSignedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ArtifactSignedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ArtifactSignedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ArtifactSignedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ArtifactSignedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ArtifactSignedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ArtifactSignedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ArtifactSignedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ArtifactSignedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ArtifactSignedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ArtifactSignedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ArtifactSignedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ArtifactSignedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ArtifactSignedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ArtifactSignedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ArtifactSignedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ArtifactSignedEventV0_2_0) SetSubjectSignature(signature string) {
+ e.Subject.Content.Signature = signature
+}
+
+// New creates a new ArtifactSignedEventV0_2_0
+func NewArtifactSignedEventV0_2_0(specVersion string) (*ArtifactSignedEventV0_2_0, error) {
+ e := &ArtifactSignedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ArtifactSignedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ArtifactSignedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "artifact",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_branchcreated_0_1_2.go b/pkg/api/zz_branchcreated_0_1_2.go
index afd3ff8..15a6886 100644
--- a/pkg/api/zz_branchcreated_0_1_2.go
+++ b/pkg/api/zz_branchcreated_0_1_2.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var branchcreatedschema0_1_2 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/branch-created-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.branch.created.0.1.2"],"default":"dev.cdevents.branch.created.0.1.2"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["branch"],"default":"branch"},"content":{"properties":{"repository":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// BranchCreated event type v0.1.2
@@ -36,22 +35,22 @@ var (
}
)
-type BranchCreatedSubjectContent struct {
+type BranchCreatedSubjectContentV0_1_2 struct {
Repository *Reference `json:"repository,omitempty"`
}
-type BranchCreatedSubject struct {
+type BranchCreatedSubjectV0_1_2 struct {
SubjectBase
- Content BranchCreatedSubjectContent `json:"content"`
+ Content BranchCreatedSubjectContentV0_1_2 `json:"content"`
}
-func (sc BranchCreatedSubject) GetSubjectType() SubjectType {
+func (sc BranchCreatedSubjectV0_1_2) GetSubjectType() SubjectType {
return "branch"
}
type BranchCreatedEventV0_1_2 struct {
- Context Context `json:"context"`
- Subject BranchCreatedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject BranchCreatedSubjectV0_1_2 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *BranchCreatedEventV0_1_2) SetCustomData(contentType string, data interf
return nil
}
-func (e BranchCreatedEventV0_1_2) GetSchema() (string, string) {
+func (e BranchCreatedEventV0_1_2) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), branchcreatedschema0_1_2
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewBranchCreatedEventV0_1_2(specVersion string) (*BranchCreatedEventV0_1_2,
Type: BranchCreatedEventTypeV0_1_2,
Version: specVersion,
},
- Subject: BranchCreatedSubject{
+ Subject: BranchCreatedSubjectV0_1_2{
SubjectBase: SubjectBase{
Type: "branch",
},
diff --git a/pkg/api/zz_branchcreated_0_2_0.go b/pkg/api/zz_branchcreated_0_2_0.go
new file mode 100644
index 0000000..2643b97
--- /dev/null
+++ b/pkg/api/zz_branchcreated_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // BranchCreated event type v0.2.0
+ BranchCreatedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "branch",
+ Predicate: "created",
+ Version: "0.2.0",
+ }
+)
+
+type BranchCreatedSubjectContentV0_2_0 struct {
+ Repository *Reference `json:"repository,omitempty"`
+}
+
+type BranchCreatedSubjectV0_2_0 struct {
+ SubjectBase
+ Content BranchCreatedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc BranchCreatedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "branch"
+}
+
+type BranchCreatedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject BranchCreatedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e BranchCreatedEventV0_2_0) GetType() CDEventType {
+ return BranchCreatedEventTypeV0_2_0
+}
+
+func (e BranchCreatedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e BranchCreatedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e BranchCreatedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e BranchCreatedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e BranchCreatedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e BranchCreatedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e BranchCreatedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e BranchCreatedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BranchCreatedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e BranchCreatedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BranchCreatedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e BranchCreatedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e BranchCreatedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e BranchCreatedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *BranchCreatedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *BranchCreatedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *BranchCreatedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *BranchCreatedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *BranchCreatedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *BranchCreatedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e BranchCreatedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *BranchCreatedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *BranchCreatedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *BranchCreatedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *BranchCreatedEventV0_2_0) SetSubjectRepository(repository *Reference) {
+ e.Subject.Content.Repository = repository
+}
+
+// New creates a new BranchCreatedEventV0_2_0
+func NewBranchCreatedEventV0_2_0(specVersion string) (*BranchCreatedEventV0_2_0, error) {
+ e := &BranchCreatedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: BranchCreatedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: BranchCreatedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "branch",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_branchdeleted_0_1_2.go b/pkg/api/zz_branchdeleted_0_1_2.go
index f982ae7..5edab79 100644
--- a/pkg/api/zz_branchdeleted_0_1_2.go
+++ b/pkg/api/zz_branchdeleted_0_1_2.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var branchdeletedschema0_1_2 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/branch-deleted-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.branch.deleted.0.1.2"],"default":"dev.cdevents.branch.deleted.0.1.2"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["branch"],"default":"branch"},"content":{"properties":{"repository":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// BranchDeleted event type v0.1.2
@@ -36,22 +35,22 @@ var (
}
)
-type BranchDeletedSubjectContent struct {
+type BranchDeletedSubjectContentV0_1_2 struct {
Repository *Reference `json:"repository,omitempty"`
}
-type BranchDeletedSubject struct {
+type BranchDeletedSubjectV0_1_2 struct {
SubjectBase
- Content BranchDeletedSubjectContent `json:"content"`
+ Content BranchDeletedSubjectContentV0_1_2 `json:"content"`
}
-func (sc BranchDeletedSubject) GetSubjectType() SubjectType {
+func (sc BranchDeletedSubjectV0_1_2) GetSubjectType() SubjectType {
return "branch"
}
type BranchDeletedEventV0_1_2 struct {
- Context Context `json:"context"`
- Subject BranchDeletedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject BranchDeletedSubjectV0_1_2 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *BranchDeletedEventV0_1_2) SetCustomData(contentType string, data interf
return nil
}
-func (e BranchDeletedEventV0_1_2) GetSchema() (string, string) {
+func (e BranchDeletedEventV0_1_2) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), branchdeletedschema0_1_2
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewBranchDeletedEventV0_1_2(specVersion string) (*BranchDeletedEventV0_1_2,
Type: BranchDeletedEventTypeV0_1_2,
Version: specVersion,
},
- Subject: BranchDeletedSubject{
+ Subject: BranchDeletedSubjectV0_1_2{
SubjectBase: SubjectBase{
Type: "branch",
},
diff --git a/pkg/api/zz_branchdeleted_0_2_0.go b/pkg/api/zz_branchdeleted_0_2_0.go
new file mode 100644
index 0000000..d504cf4
--- /dev/null
+++ b/pkg/api/zz_branchdeleted_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // BranchDeleted event type v0.2.0
+ BranchDeletedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "branch",
+ Predicate: "deleted",
+ Version: "0.2.0",
+ }
+)
+
+type BranchDeletedSubjectContentV0_2_0 struct {
+ Repository *Reference `json:"repository,omitempty"`
+}
+
+type BranchDeletedSubjectV0_2_0 struct {
+ SubjectBase
+ Content BranchDeletedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc BranchDeletedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "branch"
+}
+
+type BranchDeletedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject BranchDeletedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e BranchDeletedEventV0_2_0) GetType() CDEventType {
+ return BranchDeletedEventTypeV0_2_0
+}
+
+func (e BranchDeletedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e BranchDeletedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e BranchDeletedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e BranchDeletedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e BranchDeletedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e BranchDeletedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e BranchDeletedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e BranchDeletedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BranchDeletedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e BranchDeletedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BranchDeletedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e BranchDeletedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e BranchDeletedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e BranchDeletedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *BranchDeletedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *BranchDeletedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *BranchDeletedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *BranchDeletedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *BranchDeletedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *BranchDeletedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e BranchDeletedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *BranchDeletedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *BranchDeletedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *BranchDeletedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *BranchDeletedEventV0_2_0) SetSubjectRepository(repository *Reference) {
+ e.Subject.Content.Repository = repository
+}
+
+// New creates a new BranchDeletedEventV0_2_0
+func NewBranchDeletedEventV0_2_0(specVersion string) (*BranchDeletedEventV0_2_0, error) {
+ e := &BranchDeletedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: BranchDeletedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: BranchDeletedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "branch",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_buildfinished_0_1_1.go b/pkg/api/zz_buildfinished_0_1_1.go
index d02e517..fba172a 100644
--- a/pkg/api/zz_buildfinished_0_1_1.go
+++ b/pkg/api/zz_buildfinished_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var buildfinishedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/build-finished-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.build.finished.0.1.1"],"default":"dev.cdevents.build.finished.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["build"],"default":"build"},"content":{"properties":{"artifactId":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// BuildFinished event type v0.1.1
@@ -36,22 +35,22 @@ var (
}
)
-type BuildFinishedSubjectContent struct {
+type BuildFinishedSubjectContentV0_1_1 struct {
ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
}
-type BuildFinishedSubject struct {
+type BuildFinishedSubjectV0_1_1 struct {
SubjectBase
- Content BuildFinishedSubjectContent `json:"content"`
+ Content BuildFinishedSubjectContentV0_1_1 `json:"content"`
}
-func (sc BuildFinishedSubject) GetSubjectType() SubjectType {
+func (sc BuildFinishedSubjectV0_1_1) GetSubjectType() SubjectType {
return "build"
}
type BuildFinishedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject BuildFinishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject BuildFinishedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *BuildFinishedEventV0_1_1) SetCustomData(contentType string, data interf
return nil
}
-func (e BuildFinishedEventV0_1_1) GetSchema() (string, string) {
+func (e BuildFinishedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), buildfinishedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewBuildFinishedEventV0_1_1(specVersion string) (*BuildFinishedEventV0_1_1,
Type: BuildFinishedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: BuildFinishedSubject{
+ Subject: BuildFinishedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "build",
},
diff --git a/pkg/api/zz_buildfinished_0_2_0.go b/pkg/api/zz_buildfinished_0_2_0.go
new file mode 100644
index 0000000..8825810
--- /dev/null
+++ b/pkg/api/zz_buildfinished_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // BuildFinished event type v0.2.0
+ BuildFinishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "build",
+ Predicate: "finished",
+ Version: "0.2.0",
+ }
+)
+
+type BuildFinishedSubjectContentV0_2_0 struct {
+ ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
+}
+
+type BuildFinishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content BuildFinishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc BuildFinishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "build"
+}
+
+type BuildFinishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject BuildFinishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e BuildFinishedEventV0_2_0) GetType() CDEventType {
+ return BuildFinishedEventTypeV0_2_0
+}
+
+func (e BuildFinishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e BuildFinishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e BuildFinishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e BuildFinishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e BuildFinishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e BuildFinishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e BuildFinishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e BuildFinishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BuildFinishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e BuildFinishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BuildFinishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e BuildFinishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e BuildFinishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e BuildFinishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *BuildFinishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *BuildFinishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *BuildFinishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *BuildFinishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *BuildFinishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *BuildFinishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e BuildFinishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *BuildFinishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *BuildFinishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *BuildFinishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *BuildFinishedEventV0_2_0) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+// New creates a new BuildFinishedEventV0_2_0
+func NewBuildFinishedEventV0_2_0(specVersion string) (*BuildFinishedEventV0_2_0, error) {
+ e := &BuildFinishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: BuildFinishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: BuildFinishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "build",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_buildqueued_0_1_1.go b/pkg/api/zz_buildqueued_0_1_1.go
index 297e6bb..0ccaf1e 100644
--- a/pkg/api/zz_buildqueued_0_1_1.go
+++ b/pkg/api/zz_buildqueued_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var buildqueuedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/build-queued-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.build.queued.0.1.1"],"default":"dev.cdevents.build.queued.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["build"],"default":"build"},"content":{"properties":{},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// BuildQueued event type v0.1.1
@@ -36,21 +35,21 @@ var (
}
)
-type BuildQueuedSubjectContent struct {
+type BuildQueuedSubjectContentV0_1_1 struct {
}
-type BuildQueuedSubject struct {
+type BuildQueuedSubjectV0_1_1 struct {
SubjectBase
- Content BuildQueuedSubjectContent `json:"content"`
+ Content BuildQueuedSubjectContentV0_1_1 `json:"content"`
}
-func (sc BuildQueuedSubject) GetSubjectType() SubjectType {
+func (sc BuildQueuedSubjectV0_1_1) GetSubjectType() SubjectType {
return "build"
}
type BuildQueuedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject BuildQueuedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject BuildQueuedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -140,9 +139,9 @@ func (e *BuildQueuedEventV0_1_1) SetCustomData(contentType string, data interfac
return nil
}
-func (e BuildQueuedEventV0_1_1) GetSchema() (string, string) {
+func (e BuildQueuedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), buildqueuedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -154,7 +153,7 @@ func NewBuildQueuedEventV0_1_1(specVersion string) (*BuildQueuedEventV0_1_1, err
Type: BuildQueuedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: BuildQueuedSubject{
+ Subject: BuildQueuedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "build",
},
diff --git a/pkg/api/zz_buildqueued_0_2_0.go b/pkg/api/zz_buildqueued_0_2_0.go
new file mode 100644
index 0000000..aa11196
--- /dev/null
+++ b/pkg/api/zz_buildqueued_0_2_0.go
@@ -0,0 +1,199 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // BuildQueued event type v0.2.0
+ BuildQueuedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "build",
+ Predicate: "queued",
+ Version: "0.2.0",
+ }
+)
+
+type BuildQueuedSubjectContentV0_2_0 struct {
+}
+
+type BuildQueuedSubjectV0_2_0 struct {
+ SubjectBase
+ Content BuildQueuedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc BuildQueuedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "build"
+}
+
+type BuildQueuedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject BuildQueuedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e BuildQueuedEventV0_2_0) GetType() CDEventType {
+ return BuildQueuedEventTypeV0_2_0
+}
+
+func (e BuildQueuedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e BuildQueuedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e BuildQueuedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e BuildQueuedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e BuildQueuedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e BuildQueuedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e BuildQueuedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e BuildQueuedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BuildQueuedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e BuildQueuedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BuildQueuedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e BuildQueuedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e BuildQueuedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e BuildQueuedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *BuildQueuedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *BuildQueuedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *BuildQueuedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *BuildQueuedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *BuildQueuedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *BuildQueuedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e BuildQueuedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *BuildQueuedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *BuildQueuedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *BuildQueuedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+// New creates a new BuildQueuedEventV0_2_0
+func NewBuildQueuedEventV0_2_0(specVersion string) (*BuildQueuedEventV0_2_0, error) {
+ e := &BuildQueuedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: BuildQueuedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: BuildQueuedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "build",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_buildstarted_0_1_1.go b/pkg/api/zz_buildstarted_0_1_1.go
index 963676a..43636ea 100644
--- a/pkg/api/zz_buildstarted_0_1_1.go
+++ b/pkg/api/zz_buildstarted_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var buildstartedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/build-started-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.build.started.0.1.1"],"default":"dev.cdevents.build.started.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["build"],"default":"build"},"content":{"properties":{},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// BuildStarted event type v0.1.1
@@ -36,21 +35,21 @@ var (
}
)
-type BuildStartedSubjectContent struct {
+type BuildStartedSubjectContentV0_1_1 struct {
}
-type BuildStartedSubject struct {
+type BuildStartedSubjectV0_1_1 struct {
SubjectBase
- Content BuildStartedSubjectContent `json:"content"`
+ Content BuildStartedSubjectContentV0_1_1 `json:"content"`
}
-func (sc BuildStartedSubject) GetSubjectType() SubjectType {
+func (sc BuildStartedSubjectV0_1_1) GetSubjectType() SubjectType {
return "build"
}
type BuildStartedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject BuildStartedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject BuildStartedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -140,9 +139,9 @@ func (e *BuildStartedEventV0_1_1) SetCustomData(contentType string, data interfa
return nil
}
-func (e BuildStartedEventV0_1_1) GetSchema() (string, string) {
+func (e BuildStartedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), buildstartedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -154,7 +153,7 @@ func NewBuildStartedEventV0_1_1(specVersion string) (*BuildStartedEventV0_1_1, e
Type: BuildStartedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: BuildStartedSubject{
+ Subject: BuildStartedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "build",
},
diff --git a/pkg/api/zz_buildstarted_0_2_0.go b/pkg/api/zz_buildstarted_0_2_0.go
new file mode 100644
index 0000000..1c4bcc7
--- /dev/null
+++ b/pkg/api/zz_buildstarted_0_2_0.go
@@ -0,0 +1,199 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // BuildStarted event type v0.2.0
+ BuildStartedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "build",
+ Predicate: "started",
+ Version: "0.2.0",
+ }
+)
+
+type BuildStartedSubjectContentV0_2_0 struct {
+}
+
+type BuildStartedSubjectV0_2_0 struct {
+ SubjectBase
+ Content BuildStartedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc BuildStartedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "build"
+}
+
+type BuildStartedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject BuildStartedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e BuildStartedEventV0_2_0) GetType() CDEventType {
+ return BuildStartedEventTypeV0_2_0
+}
+
+func (e BuildStartedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e BuildStartedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e BuildStartedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e BuildStartedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e BuildStartedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e BuildStartedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e BuildStartedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e BuildStartedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BuildStartedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e BuildStartedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e BuildStartedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e BuildStartedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e BuildStartedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e BuildStartedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *BuildStartedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *BuildStartedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *BuildStartedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *BuildStartedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *BuildStartedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *BuildStartedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e BuildStartedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *BuildStartedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *BuildStartedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *BuildStartedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+// New creates a new BuildStartedEventV0_2_0
+func NewBuildStartedEventV0_2_0(specVersion string) (*BuildStartedEventV0_2_0, error) {
+ e := &BuildStartedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: BuildStartedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: BuildStartedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "build",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_changeabandoned_0_1_2.go b/pkg/api/zz_changeabandoned_0_1_2.go
index 52cd0ce..9f0b0e8 100644
--- a/pkg/api/zz_changeabandoned_0_1_2.go
+++ b/pkg/api/zz_changeabandoned_0_1_2.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var changeabandonedschema0_1_2 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/change-abandoned-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.change.abandoned.0.1.2"],"default":"dev.cdevents.change.abandoned.0.1.2"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["change"],"default":"change"},"content":{"properties":{"repository":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ChangeAbandoned event type v0.1.2
@@ -36,22 +35,22 @@ var (
}
)
-type ChangeAbandonedSubjectContent struct {
+type ChangeAbandonedSubjectContentV0_1_2 struct {
Repository *Reference `json:"repository,omitempty"`
}
-type ChangeAbandonedSubject struct {
+type ChangeAbandonedSubjectV0_1_2 struct {
SubjectBase
- Content ChangeAbandonedSubjectContent `json:"content"`
+ Content ChangeAbandonedSubjectContentV0_1_2 `json:"content"`
}
-func (sc ChangeAbandonedSubject) GetSubjectType() SubjectType {
+func (sc ChangeAbandonedSubjectV0_1_2) GetSubjectType() SubjectType {
return "change"
}
type ChangeAbandonedEventV0_1_2 struct {
- Context Context `json:"context"`
- Subject ChangeAbandonedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ChangeAbandonedSubjectV0_1_2 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ChangeAbandonedEventV0_1_2) SetCustomData(contentType string, data inte
return nil
}
-func (e ChangeAbandonedEventV0_1_2) GetSchema() (string, string) {
+func (e ChangeAbandonedEventV0_1_2) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), changeabandonedschema0_1_2
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewChangeAbandonedEventV0_1_2(specVersion string) (*ChangeAbandonedEventV0_
Type: ChangeAbandonedEventTypeV0_1_2,
Version: specVersion,
},
- Subject: ChangeAbandonedSubject{
+ Subject: ChangeAbandonedSubjectV0_1_2{
SubjectBase: SubjectBase{
Type: "change",
},
diff --git a/pkg/api/zz_changeabandoned_0_2_0.go b/pkg/api/zz_changeabandoned_0_2_0.go
new file mode 100644
index 0000000..15d4303
--- /dev/null
+++ b/pkg/api/zz_changeabandoned_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ChangeAbandoned event type v0.2.0
+ ChangeAbandonedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "change",
+ Predicate: "abandoned",
+ Version: "0.2.0",
+ }
+)
+
+type ChangeAbandonedSubjectContentV0_2_0 struct {
+ Repository *Reference `json:"repository,omitempty"`
+}
+
+type ChangeAbandonedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ChangeAbandonedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ChangeAbandonedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "change"
+}
+
+type ChangeAbandonedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ChangeAbandonedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ChangeAbandonedEventV0_2_0) GetType() CDEventType {
+ return ChangeAbandonedEventTypeV0_2_0
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ChangeAbandonedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ChangeAbandonedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ChangeAbandonedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ChangeAbandonedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ChangeAbandonedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ChangeAbandonedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ChangeAbandonedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ChangeAbandonedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ChangeAbandonedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ChangeAbandonedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ChangeAbandonedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ChangeAbandonedEventV0_2_0) SetSubjectRepository(repository *Reference) {
+ e.Subject.Content.Repository = repository
+}
+
+// New creates a new ChangeAbandonedEventV0_2_0
+func NewChangeAbandonedEventV0_2_0(specVersion string) (*ChangeAbandonedEventV0_2_0, error) {
+ e := &ChangeAbandonedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ChangeAbandonedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ChangeAbandonedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "change",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_changecreated_0_1_2.go b/pkg/api/zz_changecreated_0_1_2.go
index 26613f0..486b379 100644
--- a/pkg/api/zz_changecreated_0_1_2.go
+++ b/pkg/api/zz_changecreated_0_1_2.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var changecreatedschema0_1_2 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/change-created-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.change.created.0.1.2"],"default":"dev.cdevents.change.created.0.1.2"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["change"],"default":"change"},"content":{"properties":{"repository":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ChangeCreated event type v0.1.2
@@ -36,22 +35,22 @@ var (
}
)
-type ChangeCreatedSubjectContent struct {
+type ChangeCreatedSubjectContentV0_1_2 struct {
Repository *Reference `json:"repository,omitempty"`
}
-type ChangeCreatedSubject struct {
+type ChangeCreatedSubjectV0_1_2 struct {
SubjectBase
- Content ChangeCreatedSubjectContent `json:"content"`
+ Content ChangeCreatedSubjectContentV0_1_2 `json:"content"`
}
-func (sc ChangeCreatedSubject) GetSubjectType() SubjectType {
+func (sc ChangeCreatedSubjectV0_1_2) GetSubjectType() SubjectType {
return "change"
}
type ChangeCreatedEventV0_1_2 struct {
- Context Context `json:"context"`
- Subject ChangeCreatedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ChangeCreatedSubjectV0_1_2 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ChangeCreatedEventV0_1_2) SetCustomData(contentType string, data interf
return nil
}
-func (e ChangeCreatedEventV0_1_2) GetSchema() (string, string) {
+func (e ChangeCreatedEventV0_1_2) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), changecreatedschema0_1_2
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewChangeCreatedEventV0_1_2(specVersion string) (*ChangeCreatedEventV0_1_2,
Type: ChangeCreatedEventTypeV0_1_2,
Version: specVersion,
},
- Subject: ChangeCreatedSubject{
+ Subject: ChangeCreatedSubjectV0_1_2{
SubjectBase: SubjectBase{
Type: "change",
},
diff --git a/pkg/api/zz_changecreated_0_3_0.go b/pkg/api/zz_changecreated_0_3_0.go
new file mode 100644
index 0000000..649d58a
--- /dev/null
+++ b/pkg/api/zz_changecreated_0_3_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ChangeCreated event type v0.3.0
+ ChangeCreatedEventTypeV0_3_0 CDEventType = CDEventType{
+ Subject: "change",
+ Predicate: "created",
+ Version: "0.3.0",
+ }
+)
+
+type ChangeCreatedSubjectContentV0_3_0 struct {
+ Description string `json:"description,omitempty"`
+
+ Repository *Reference `json:"repository,omitempty"`
+}
+
+type ChangeCreatedSubjectV0_3_0 struct {
+ SubjectBase
+ Content ChangeCreatedSubjectContentV0_3_0 `json:"content"`
+}
+
+func (sc ChangeCreatedSubjectV0_3_0) GetSubjectType() SubjectType {
+ return "change"
+}
+
+type ChangeCreatedEventV0_3_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ChangeCreatedSubjectV0_3_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ChangeCreatedEventV0_3_0) GetType() CDEventType {
+ return ChangeCreatedEventTypeV0_3_0
+}
+
+func (e ChangeCreatedEventV0_3_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ChangeCreatedEventV0_3_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ChangeCreatedEventV0_3_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ChangeCreatedEventV0_3_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ChangeCreatedEventV0_3_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ChangeCreatedEventV0_3_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ChangeCreatedEventV0_3_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ChangeCreatedEventV0_3_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeCreatedEventV0_3_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ChangeCreatedEventV0_3_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeCreatedEventV0_3_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ChangeCreatedEventV0_3_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ChangeCreatedEventV0_3_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ChangeCreatedEventV0_3_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ChangeCreatedEventV0_3_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ChangeCreatedEventV0_3_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ChangeCreatedEventV0_3_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ChangeCreatedEventV0_3_0) SetSubjectDescription(description string) {
+ e.Subject.Content.Description = description
+}
+
+func (e *ChangeCreatedEventV0_3_0) SetSubjectRepository(repository *Reference) {
+ e.Subject.Content.Repository = repository
+}
+
+// New creates a new ChangeCreatedEventV0_3_0
+func NewChangeCreatedEventV0_3_0(specVersion string) (*ChangeCreatedEventV0_3_0, error) {
+ e := &ChangeCreatedEventV0_3_0{
+ Context: ContextV04{
+ Context{
+ Type: ChangeCreatedEventTypeV0_3_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ChangeCreatedSubjectV0_3_0{
+ SubjectBase: SubjectBase{
+ Type: "change",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_changemerged_0_1_2.go b/pkg/api/zz_changemerged_0_1_2.go
index 47845be..67464e5 100644
--- a/pkg/api/zz_changemerged_0_1_2.go
+++ b/pkg/api/zz_changemerged_0_1_2.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var changemergedschema0_1_2 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/change-merged-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.change.merged.0.1.2"],"default":"dev.cdevents.change.merged.0.1.2"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["change"],"default":"change"},"content":{"properties":{"repository":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ChangeMerged event type v0.1.2
@@ -36,22 +35,22 @@ var (
}
)
-type ChangeMergedSubjectContent struct {
+type ChangeMergedSubjectContentV0_1_2 struct {
Repository *Reference `json:"repository,omitempty"`
}
-type ChangeMergedSubject struct {
+type ChangeMergedSubjectV0_1_2 struct {
SubjectBase
- Content ChangeMergedSubjectContent `json:"content"`
+ Content ChangeMergedSubjectContentV0_1_2 `json:"content"`
}
-func (sc ChangeMergedSubject) GetSubjectType() SubjectType {
+func (sc ChangeMergedSubjectV0_1_2) GetSubjectType() SubjectType {
return "change"
}
type ChangeMergedEventV0_1_2 struct {
- Context Context `json:"context"`
- Subject ChangeMergedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ChangeMergedSubjectV0_1_2 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ChangeMergedEventV0_1_2) SetCustomData(contentType string, data interfa
return nil
}
-func (e ChangeMergedEventV0_1_2) GetSchema() (string, string) {
+func (e ChangeMergedEventV0_1_2) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), changemergedschema0_1_2
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewChangeMergedEventV0_1_2(specVersion string) (*ChangeMergedEventV0_1_2, e
Type: ChangeMergedEventTypeV0_1_2,
Version: specVersion,
},
- Subject: ChangeMergedSubject{
+ Subject: ChangeMergedSubjectV0_1_2{
SubjectBase: SubjectBase{
Type: "change",
},
diff --git a/pkg/api/zz_changemerged_0_2_0.go b/pkg/api/zz_changemerged_0_2_0.go
new file mode 100644
index 0000000..385f586
--- /dev/null
+++ b/pkg/api/zz_changemerged_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ChangeMerged event type v0.2.0
+ ChangeMergedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "change",
+ Predicate: "merged",
+ Version: "0.2.0",
+ }
+)
+
+type ChangeMergedSubjectContentV0_2_0 struct {
+ Repository *Reference `json:"repository,omitempty"`
+}
+
+type ChangeMergedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ChangeMergedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ChangeMergedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "change"
+}
+
+type ChangeMergedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ChangeMergedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ChangeMergedEventV0_2_0) GetType() CDEventType {
+ return ChangeMergedEventTypeV0_2_0
+}
+
+func (e ChangeMergedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ChangeMergedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ChangeMergedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ChangeMergedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ChangeMergedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ChangeMergedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ChangeMergedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ChangeMergedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeMergedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ChangeMergedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeMergedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ChangeMergedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ChangeMergedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ChangeMergedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ChangeMergedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ChangeMergedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ChangeMergedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ChangeMergedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ChangeMergedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ChangeMergedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ChangeMergedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ChangeMergedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ChangeMergedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ChangeMergedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ChangeMergedEventV0_2_0) SetSubjectRepository(repository *Reference) {
+ e.Subject.Content.Repository = repository
+}
+
+// New creates a new ChangeMergedEventV0_2_0
+func NewChangeMergedEventV0_2_0(specVersion string) (*ChangeMergedEventV0_2_0, error) {
+ e := &ChangeMergedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ChangeMergedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ChangeMergedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "change",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_changereviewed_0_1_2.go b/pkg/api/zz_changereviewed_0_1_2.go
index 3f69080..2d951c3 100644
--- a/pkg/api/zz_changereviewed_0_1_2.go
+++ b/pkg/api/zz_changereviewed_0_1_2.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var changereviewedschema0_1_2 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/change-reviewed-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.change.reviewed.0.1.2"],"default":"dev.cdevents.change.reviewed.0.1.2"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["change"],"default":"change"},"content":{"properties":{"repository":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ChangeReviewed event type v0.1.2
@@ -36,22 +35,22 @@ var (
}
)
-type ChangeReviewedSubjectContent struct {
+type ChangeReviewedSubjectContentV0_1_2 struct {
Repository *Reference `json:"repository,omitempty"`
}
-type ChangeReviewedSubject struct {
+type ChangeReviewedSubjectV0_1_2 struct {
SubjectBase
- Content ChangeReviewedSubjectContent `json:"content"`
+ Content ChangeReviewedSubjectContentV0_1_2 `json:"content"`
}
-func (sc ChangeReviewedSubject) GetSubjectType() SubjectType {
+func (sc ChangeReviewedSubjectV0_1_2) GetSubjectType() SubjectType {
return "change"
}
type ChangeReviewedEventV0_1_2 struct {
- Context Context `json:"context"`
- Subject ChangeReviewedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ChangeReviewedSubjectV0_1_2 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ChangeReviewedEventV0_1_2) SetCustomData(contentType string, data inter
return nil
}
-func (e ChangeReviewedEventV0_1_2) GetSchema() (string, string) {
+func (e ChangeReviewedEventV0_1_2) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), changereviewedschema0_1_2
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewChangeReviewedEventV0_1_2(specVersion string) (*ChangeReviewedEventV0_1_
Type: ChangeReviewedEventTypeV0_1_2,
Version: specVersion,
},
- Subject: ChangeReviewedSubject{
+ Subject: ChangeReviewedSubjectV0_1_2{
SubjectBase: SubjectBase{
Type: "change",
},
diff --git a/pkg/api/zz_changereviewed_0_2_0.go b/pkg/api/zz_changereviewed_0_2_0.go
new file mode 100644
index 0000000..90a87e3
--- /dev/null
+++ b/pkg/api/zz_changereviewed_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ChangeReviewed event type v0.2.0
+ ChangeReviewedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "change",
+ Predicate: "reviewed",
+ Version: "0.2.0",
+ }
+)
+
+type ChangeReviewedSubjectContentV0_2_0 struct {
+ Repository *Reference `json:"repository,omitempty"`
+}
+
+type ChangeReviewedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ChangeReviewedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ChangeReviewedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "change"
+}
+
+type ChangeReviewedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ChangeReviewedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ChangeReviewedEventV0_2_0) GetType() CDEventType {
+ return ChangeReviewedEventTypeV0_2_0
+}
+
+func (e ChangeReviewedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ChangeReviewedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ChangeReviewedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ChangeReviewedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ChangeReviewedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ChangeReviewedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ChangeReviewedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ChangeReviewedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeReviewedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ChangeReviewedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeReviewedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ChangeReviewedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ChangeReviewedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ChangeReviewedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ChangeReviewedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ChangeReviewedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ChangeReviewedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ChangeReviewedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ChangeReviewedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ChangeReviewedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ChangeReviewedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ChangeReviewedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ChangeReviewedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ChangeReviewedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ChangeReviewedEventV0_2_0) SetSubjectRepository(repository *Reference) {
+ e.Subject.Content.Repository = repository
+}
+
+// New creates a new ChangeReviewedEventV0_2_0
+func NewChangeReviewedEventV0_2_0(specVersion string) (*ChangeReviewedEventV0_2_0, error) {
+ e := &ChangeReviewedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ChangeReviewedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ChangeReviewedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "change",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_changeupdated_0_1_2.go b/pkg/api/zz_changeupdated_0_1_2.go
index 50eafb6..f49b2c8 100644
--- a/pkg/api/zz_changeupdated_0_1_2.go
+++ b/pkg/api/zz_changeupdated_0_1_2.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var changeupdatedschema0_1_2 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/change-updated-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.change.updated.0.1.2"],"default":"dev.cdevents.change.updated.0.1.2"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["change"],"default":"change"},"content":{"properties":{"repository":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ChangeUpdated event type v0.1.2
@@ -36,22 +35,22 @@ var (
}
)
-type ChangeUpdatedSubjectContent struct {
+type ChangeUpdatedSubjectContentV0_1_2 struct {
Repository *Reference `json:"repository,omitempty"`
}
-type ChangeUpdatedSubject struct {
+type ChangeUpdatedSubjectV0_1_2 struct {
SubjectBase
- Content ChangeUpdatedSubjectContent `json:"content"`
+ Content ChangeUpdatedSubjectContentV0_1_2 `json:"content"`
}
-func (sc ChangeUpdatedSubject) GetSubjectType() SubjectType {
+func (sc ChangeUpdatedSubjectV0_1_2) GetSubjectType() SubjectType {
return "change"
}
type ChangeUpdatedEventV0_1_2 struct {
- Context Context `json:"context"`
- Subject ChangeUpdatedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ChangeUpdatedSubjectV0_1_2 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ChangeUpdatedEventV0_1_2) SetCustomData(contentType string, data interf
return nil
}
-func (e ChangeUpdatedEventV0_1_2) GetSchema() (string, string) {
+func (e ChangeUpdatedEventV0_1_2) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), changeupdatedschema0_1_2
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewChangeUpdatedEventV0_1_2(specVersion string) (*ChangeUpdatedEventV0_1_2,
Type: ChangeUpdatedEventTypeV0_1_2,
Version: specVersion,
},
- Subject: ChangeUpdatedSubject{
+ Subject: ChangeUpdatedSubjectV0_1_2{
SubjectBase: SubjectBase{
Type: "change",
},
diff --git a/pkg/api/zz_changeupdated_0_2_0.go b/pkg/api/zz_changeupdated_0_2_0.go
new file mode 100644
index 0000000..081fac1
--- /dev/null
+++ b/pkg/api/zz_changeupdated_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ChangeUpdated event type v0.2.0
+ ChangeUpdatedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "change",
+ Predicate: "updated",
+ Version: "0.2.0",
+ }
+)
+
+type ChangeUpdatedSubjectContentV0_2_0 struct {
+ Repository *Reference `json:"repository,omitempty"`
+}
+
+type ChangeUpdatedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ChangeUpdatedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ChangeUpdatedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "change"
+}
+
+type ChangeUpdatedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ChangeUpdatedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ChangeUpdatedEventV0_2_0) GetType() CDEventType {
+ return ChangeUpdatedEventTypeV0_2_0
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ChangeUpdatedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ChangeUpdatedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ChangeUpdatedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ChangeUpdatedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ChangeUpdatedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ChangeUpdatedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ChangeUpdatedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ChangeUpdatedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ChangeUpdatedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ChangeUpdatedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ChangeUpdatedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ChangeUpdatedEventV0_2_0) SetSubjectRepository(repository *Reference) {
+ e.Subject.Content.Repository = repository
+}
+
+// New creates a new ChangeUpdatedEventV0_2_0
+func NewChangeUpdatedEventV0_2_0(specVersion string) (*ChangeUpdatedEventV0_2_0, error) {
+ e := &ChangeUpdatedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ChangeUpdatedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ChangeUpdatedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "change",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_environmentcreated_0_1_1.go b/pkg/api/zz_environmentcreated_0_1_1.go
index 28bec1f..9f110ef 100644
--- a/pkg/api/zz_environmentcreated_0_1_1.go
+++ b/pkg/api/zz_environmentcreated_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var environmentcreatedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/environment-created-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.environment.created.0.1.1"],"default":"dev.cdevents.environment.created.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["environment"],"default":"environment"},"content":{"properties":{"name":{"type":"string"},"url":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// EnvironmentCreated event type v0.1.1
@@ -36,24 +35,24 @@ var (
}
)
-type EnvironmentCreatedSubjectContent struct {
+type EnvironmentCreatedSubjectContentV0_1_1 struct {
Name string `json:"name,omitempty"`
Url string `json:"url,omitempty"`
}
-type EnvironmentCreatedSubject struct {
+type EnvironmentCreatedSubjectV0_1_1 struct {
SubjectBase
- Content EnvironmentCreatedSubjectContent `json:"content"`
+ Content EnvironmentCreatedSubjectContentV0_1_1 `json:"content"`
}
-func (sc EnvironmentCreatedSubject) GetSubjectType() SubjectType {
+func (sc EnvironmentCreatedSubjectV0_1_1) GetSubjectType() SubjectType {
return "environment"
}
type EnvironmentCreatedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject EnvironmentCreatedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject EnvironmentCreatedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -143,9 +142,9 @@ func (e *EnvironmentCreatedEventV0_1_1) SetCustomData(contentType string, data i
return nil
}
-func (e EnvironmentCreatedEventV0_1_1) GetSchema() (string, string) {
+func (e EnvironmentCreatedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), environmentcreatedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -165,7 +164,7 @@ func NewEnvironmentCreatedEventV0_1_1(specVersion string) (*EnvironmentCreatedEv
Type: EnvironmentCreatedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: EnvironmentCreatedSubject{
+ Subject: EnvironmentCreatedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "environment",
},
diff --git a/pkg/api/zz_environmentcreated_0_2_0.go b/pkg/api/zz_environmentcreated_0_2_0.go
new file mode 100644
index 0000000..22cd18f
--- /dev/null
+++ b/pkg/api/zz_environmentcreated_0_2_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // EnvironmentCreated event type v0.2.0
+ EnvironmentCreatedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "environment",
+ Predicate: "created",
+ Version: "0.2.0",
+ }
+)
+
+type EnvironmentCreatedSubjectContentV0_2_0 struct {
+ Name string `json:"name,omitempty"`
+
+ Url string `json:"url,omitempty"`
+}
+
+type EnvironmentCreatedSubjectV0_2_0 struct {
+ SubjectBase
+ Content EnvironmentCreatedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc EnvironmentCreatedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "environment"
+}
+
+type EnvironmentCreatedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject EnvironmentCreatedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e EnvironmentCreatedEventV0_2_0) GetType() CDEventType {
+ return EnvironmentCreatedEventTypeV0_2_0
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e EnvironmentCreatedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *EnvironmentCreatedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e EnvironmentCreatedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *EnvironmentCreatedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *EnvironmentCreatedEventV0_2_0) SetSubjectName(name string) {
+ e.Subject.Content.Name = name
+}
+
+func (e *EnvironmentCreatedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+// New creates a new EnvironmentCreatedEventV0_2_0
+func NewEnvironmentCreatedEventV0_2_0(specVersion string) (*EnvironmentCreatedEventV0_2_0, error) {
+ e := &EnvironmentCreatedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: EnvironmentCreatedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: EnvironmentCreatedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "environment",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_environmentdeleted_0_1_1.go b/pkg/api/zz_environmentdeleted_0_1_1.go
index c2f9306..c1299ea 100644
--- a/pkg/api/zz_environmentdeleted_0_1_1.go
+++ b/pkg/api/zz_environmentdeleted_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var environmentdeletedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/environment-deleted-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.environment.deleted.0.1.1"],"default":"dev.cdevents.environment.deleted.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["environment"],"default":"environment"},"content":{"properties":{"name":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// EnvironmentDeleted event type v0.1.1
@@ -36,22 +35,22 @@ var (
}
)
-type EnvironmentDeletedSubjectContent struct {
+type EnvironmentDeletedSubjectContentV0_1_1 struct {
Name string `json:"name,omitempty"`
}
-type EnvironmentDeletedSubject struct {
+type EnvironmentDeletedSubjectV0_1_1 struct {
SubjectBase
- Content EnvironmentDeletedSubjectContent `json:"content"`
+ Content EnvironmentDeletedSubjectContentV0_1_1 `json:"content"`
}
-func (sc EnvironmentDeletedSubject) GetSubjectType() SubjectType {
+func (sc EnvironmentDeletedSubjectV0_1_1) GetSubjectType() SubjectType {
return "environment"
}
type EnvironmentDeletedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject EnvironmentDeletedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject EnvironmentDeletedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *EnvironmentDeletedEventV0_1_1) SetCustomData(contentType string, data i
return nil
}
-func (e EnvironmentDeletedEventV0_1_1) GetSchema() (string, string) {
+func (e EnvironmentDeletedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), environmentdeletedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewEnvironmentDeletedEventV0_1_1(specVersion string) (*EnvironmentDeletedEv
Type: EnvironmentDeletedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: EnvironmentDeletedSubject{
+ Subject: EnvironmentDeletedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "environment",
},
diff --git a/pkg/api/zz_environmentdeleted_0_2_0.go b/pkg/api/zz_environmentdeleted_0_2_0.go
new file mode 100644
index 0000000..12c2c44
--- /dev/null
+++ b/pkg/api/zz_environmentdeleted_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // EnvironmentDeleted event type v0.2.0
+ EnvironmentDeletedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "environment",
+ Predicate: "deleted",
+ Version: "0.2.0",
+ }
+)
+
+type EnvironmentDeletedSubjectContentV0_2_0 struct {
+ Name string `json:"name,omitempty"`
+}
+
+type EnvironmentDeletedSubjectV0_2_0 struct {
+ SubjectBase
+ Content EnvironmentDeletedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc EnvironmentDeletedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "environment"
+}
+
+type EnvironmentDeletedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject EnvironmentDeletedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e EnvironmentDeletedEventV0_2_0) GetType() CDEventType {
+ return EnvironmentDeletedEventTypeV0_2_0
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e EnvironmentDeletedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *EnvironmentDeletedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *EnvironmentDeletedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *EnvironmentDeletedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *EnvironmentDeletedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *EnvironmentDeletedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *EnvironmentDeletedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e EnvironmentDeletedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *EnvironmentDeletedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *EnvironmentDeletedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *EnvironmentDeletedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *EnvironmentDeletedEventV0_2_0) SetSubjectName(name string) {
+ e.Subject.Content.Name = name
+}
+
+// New creates a new EnvironmentDeletedEventV0_2_0
+func NewEnvironmentDeletedEventV0_2_0(specVersion string) (*EnvironmentDeletedEventV0_2_0, error) {
+ e := &EnvironmentDeletedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: EnvironmentDeletedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: EnvironmentDeletedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "environment",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_environmentmodified_0_1_1.go b/pkg/api/zz_environmentmodified_0_1_1.go
index 1f24103..b94e791 100644
--- a/pkg/api/zz_environmentmodified_0_1_1.go
+++ b/pkg/api/zz_environmentmodified_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var environmentmodifiedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/environment-modified-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.environment.modified.0.1.1"],"default":"dev.cdevents.environment.modified.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["environment"],"default":"environment"},"content":{"properties":{"name":{"type":"string"},"url":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// EnvironmentModified event type v0.1.1
@@ -36,24 +35,24 @@ var (
}
)
-type EnvironmentModifiedSubjectContent struct {
+type EnvironmentModifiedSubjectContentV0_1_1 struct {
Name string `json:"name,omitempty"`
Url string `json:"url,omitempty"`
}
-type EnvironmentModifiedSubject struct {
+type EnvironmentModifiedSubjectV0_1_1 struct {
SubjectBase
- Content EnvironmentModifiedSubjectContent `json:"content"`
+ Content EnvironmentModifiedSubjectContentV0_1_1 `json:"content"`
}
-func (sc EnvironmentModifiedSubject) GetSubjectType() SubjectType {
+func (sc EnvironmentModifiedSubjectV0_1_1) GetSubjectType() SubjectType {
return "environment"
}
type EnvironmentModifiedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject EnvironmentModifiedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject EnvironmentModifiedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -143,9 +142,9 @@ func (e *EnvironmentModifiedEventV0_1_1) SetCustomData(contentType string, data
return nil
}
-func (e EnvironmentModifiedEventV0_1_1) GetSchema() (string, string) {
+func (e EnvironmentModifiedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), environmentmodifiedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -165,7 +164,7 @@ func NewEnvironmentModifiedEventV0_1_1(specVersion string) (*EnvironmentModified
Type: EnvironmentModifiedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: EnvironmentModifiedSubject{
+ Subject: EnvironmentModifiedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "environment",
},
diff --git a/pkg/api/zz_environmentmodified_0_2_0.go b/pkg/api/zz_environmentmodified_0_2_0.go
new file mode 100644
index 0000000..90b0934
--- /dev/null
+++ b/pkg/api/zz_environmentmodified_0_2_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // EnvironmentModified event type v0.2.0
+ EnvironmentModifiedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "environment",
+ Predicate: "modified",
+ Version: "0.2.0",
+ }
+)
+
+type EnvironmentModifiedSubjectContentV0_2_0 struct {
+ Name string `json:"name,omitempty"`
+
+ Url string `json:"url,omitempty"`
+}
+
+type EnvironmentModifiedSubjectV0_2_0 struct {
+ SubjectBase
+ Content EnvironmentModifiedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc EnvironmentModifiedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "environment"
+}
+
+type EnvironmentModifiedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject EnvironmentModifiedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e EnvironmentModifiedEventV0_2_0) GetType() CDEventType {
+ return EnvironmentModifiedEventTypeV0_2_0
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e EnvironmentModifiedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *EnvironmentModifiedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e EnvironmentModifiedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *EnvironmentModifiedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *EnvironmentModifiedEventV0_2_0) SetSubjectName(name string) {
+ e.Subject.Content.Name = name
+}
+
+func (e *EnvironmentModifiedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+// New creates a new EnvironmentModifiedEventV0_2_0
+func NewEnvironmentModifiedEventV0_2_0(specVersion string) (*EnvironmentModifiedEventV0_2_0, error) {
+ e := &EnvironmentModifiedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: EnvironmentModifiedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: EnvironmentModifiedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "environment",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_incidentdetected_0_1_0.go b/pkg/api/zz_incidentdetected_0_1_0.go
index 0250806..e13d70d 100644
--- a/pkg/api/zz_incidentdetected_0_1_0.go
+++ b/pkg/api/zz_incidentdetected_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var incidentdetectedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/incident-detected-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.incident.detected.0.1.0"],"default":"dev.cdevents.incident.detected.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["incident"],"default":"incident"},"content":{"properties":{"description":{"type":"string"},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"service":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"artifactId":{"type":"string","minLength":1}},"additionalProperties":false,"type":"object","required":["environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// IncidentDetected event type v0.1.0
@@ -36,7 +35,7 @@ var (
}
)
-type IncidentDetectedSubjectContent struct {
+type IncidentDetectedSubjectContentV0_1_0 struct {
ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
Description string `json:"description,omitempty"`
@@ -46,18 +45,18 @@ type IncidentDetectedSubjectContent struct {
Service *Reference `json:"service,omitempty"`
}
-type IncidentDetectedSubject struct {
+type IncidentDetectedSubjectV0_1_0 struct {
SubjectBase
- Content IncidentDetectedSubjectContent `json:"content"`
+ Content IncidentDetectedSubjectContentV0_1_0 `json:"content"`
}
-func (sc IncidentDetectedSubject) GetSubjectType() SubjectType {
+func (sc IncidentDetectedSubjectV0_1_0) GetSubjectType() SubjectType {
return "incident"
}
type IncidentDetectedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject IncidentDetectedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject IncidentDetectedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *IncidentDetectedEventV0_1_0) SetCustomData(contentType string, data int
return nil
}
-func (e IncidentDetectedEventV0_1_0) GetSchema() (string, string) {
+func (e IncidentDetectedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), incidentdetectedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -177,7 +176,7 @@ func NewIncidentDetectedEventV0_1_0(specVersion string) (*IncidentDetectedEventV
Type: IncidentDetectedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: IncidentDetectedSubject{
+ Subject: IncidentDetectedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "incident",
},
diff --git a/pkg/api/zz_incidentdetected_0_2_0.go b/pkg/api/zz_incidentdetected_0_2_0.go
new file mode 100644
index 0000000..ef41adf
--- /dev/null
+++ b/pkg/api/zz_incidentdetected_0_2_0.go
@@ -0,0 +1,222 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // IncidentDetected event type v0.2.0
+ IncidentDetectedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "incident",
+ Predicate: "detected",
+ Version: "0.2.0",
+ }
+)
+
+type IncidentDetectedSubjectContentV0_2_0 struct {
+ ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
+
+ Description string `json:"description,omitempty"`
+
+ Environment *Reference `json:"environment"`
+
+ Service *Reference `json:"service,omitempty"`
+}
+
+type IncidentDetectedSubjectV0_2_0 struct {
+ SubjectBase
+ Content IncidentDetectedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc IncidentDetectedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "incident"
+}
+
+type IncidentDetectedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject IncidentDetectedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e IncidentDetectedEventV0_2_0) GetType() CDEventType {
+ return IncidentDetectedEventTypeV0_2_0
+}
+
+func (e IncidentDetectedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e IncidentDetectedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e IncidentDetectedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e IncidentDetectedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e IncidentDetectedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e IncidentDetectedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e IncidentDetectedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e IncidentDetectedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e IncidentDetectedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e IncidentDetectedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e IncidentDetectedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e IncidentDetectedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e IncidentDetectedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e IncidentDetectedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *IncidentDetectedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e IncidentDetectedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *IncidentDetectedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *IncidentDetectedEventV0_2_0) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetSubjectDescription(description string) {
+ e.Subject.Content.Description = description
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *IncidentDetectedEventV0_2_0) SetSubjectService(service *Reference) {
+ e.Subject.Content.Service = service
+}
+
+// New creates a new IncidentDetectedEventV0_2_0
+func NewIncidentDetectedEventV0_2_0(specVersion string) (*IncidentDetectedEventV0_2_0, error) {
+ e := &IncidentDetectedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: IncidentDetectedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: IncidentDetectedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "incident",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_incidentreported_0_1_0.go b/pkg/api/zz_incidentreported_0_1_0.go
index 0bde775..a3a4f23 100644
--- a/pkg/api/zz_incidentreported_0_1_0.go
+++ b/pkg/api/zz_incidentreported_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var incidentreportedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/incident-reported-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.incident.reported.0.1.0"],"default":"dev.cdevents.incident.reported.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["incident"],"default":"incident"},"content":{"properties":{"description":{"type":"string"},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"ticketURI":{"type":"string","format":"uri","minLength":1},"service":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"artifactId":{"type":"string","minLength":1}},"additionalProperties":false,"type":"object","required":["environment","ticketURI"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// IncidentReported event type v0.1.0
@@ -36,7 +35,7 @@ var (
}
)
-type IncidentReportedSubjectContent struct {
+type IncidentReportedSubjectContentV0_1_0 struct {
ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
Description string `json:"description,omitempty"`
@@ -48,18 +47,18 @@ type IncidentReportedSubjectContent struct {
TicketURI string `json:"ticketURI"`
}
-type IncidentReportedSubject struct {
+type IncidentReportedSubjectV0_1_0 struct {
SubjectBase
- Content IncidentReportedSubjectContent `json:"content"`
+ Content IncidentReportedSubjectContentV0_1_0 `json:"content"`
}
-func (sc IncidentReportedSubject) GetSubjectType() SubjectType {
+func (sc IncidentReportedSubjectV0_1_0) GetSubjectType() SubjectType {
return "incident"
}
type IncidentReportedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject IncidentReportedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject IncidentReportedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -149,9 +148,9 @@ func (e *IncidentReportedEventV0_1_0) SetCustomData(contentType string, data int
return nil
}
-func (e IncidentReportedEventV0_1_0) GetSchema() (string, string) {
+func (e IncidentReportedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), incidentreportedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -183,7 +182,7 @@ func NewIncidentReportedEventV0_1_0(specVersion string) (*IncidentReportedEventV
Type: IncidentReportedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: IncidentReportedSubject{
+ Subject: IncidentReportedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "incident",
},
diff --git a/pkg/api/zz_incidentreported_0_2_0.go b/pkg/api/zz_incidentreported_0_2_0.go
new file mode 100644
index 0000000..ca0f1d6
--- /dev/null
+++ b/pkg/api/zz_incidentreported_0_2_0.go
@@ -0,0 +1,228 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // IncidentReported event type v0.2.0
+ IncidentReportedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "incident",
+ Predicate: "reported",
+ Version: "0.2.0",
+ }
+)
+
+type IncidentReportedSubjectContentV0_2_0 struct {
+ ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
+
+ Description string `json:"description,omitempty"`
+
+ Environment *Reference `json:"environment"`
+
+ Service *Reference `json:"service,omitempty"`
+
+ TicketURI string `json:"ticketURI"`
+}
+
+type IncidentReportedSubjectV0_2_0 struct {
+ SubjectBase
+ Content IncidentReportedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc IncidentReportedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "incident"
+}
+
+type IncidentReportedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject IncidentReportedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e IncidentReportedEventV0_2_0) GetType() CDEventType {
+ return IncidentReportedEventTypeV0_2_0
+}
+
+func (e IncidentReportedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e IncidentReportedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e IncidentReportedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e IncidentReportedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e IncidentReportedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e IncidentReportedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e IncidentReportedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e IncidentReportedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e IncidentReportedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e IncidentReportedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e IncidentReportedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e IncidentReportedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e IncidentReportedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e IncidentReportedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *IncidentReportedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *IncidentReportedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *IncidentReportedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e IncidentReportedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *IncidentReportedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *IncidentReportedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *IncidentReportedEventV0_2_0) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSubjectDescription(description string) {
+ e.Subject.Content.Description = description
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSubjectService(service *Reference) {
+ e.Subject.Content.Service = service
+}
+
+func (e *IncidentReportedEventV0_2_0) SetSubjectTicketURI(ticketURI string) {
+ e.Subject.Content.TicketURI = ticketURI
+}
+
+// New creates a new IncidentReportedEventV0_2_0
+func NewIncidentReportedEventV0_2_0(specVersion string) (*IncidentReportedEventV0_2_0, error) {
+ e := &IncidentReportedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: IncidentReportedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: IncidentReportedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "incident",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_incidentresolved_0_1_0.go b/pkg/api/zz_incidentresolved_0_1_0.go
index 0ef1371..96a7d0b 100644
--- a/pkg/api/zz_incidentresolved_0_1_0.go
+++ b/pkg/api/zz_incidentresolved_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var incidentresolvedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/incident-resolved-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.incident.resolved.0.1.0"],"default":"dev.cdevents.incident.resolved.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["incident"],"default":"incident"},"content":{"properties":{"description":{"type":"string"},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"service":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"artifactId":{"type":"string","minLength":1}},"additionalProperties":false,"type":"object","required":["environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// IncidentResolved event type v0.1.0
@@ -36,7 +35,7 @@ var (
}
)
-type IncidentResolvedSubjectContent struct {
+type IncidentResolvedSubjectContentV0_1_0 struct {
ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
Description string `json:"description,omitempty"`
@@ -46,18 +45,18 @@ type IncidentResolvedSubjectContent struct {
Service *Reference `json:"service,omitempty"`
}
-type IncidentResolvedSubject struct {
+type IncidentResolvedSubjectV0_1_0 struct {
SubjectBase
- Content IncidentResolvedSubjectContent `json:"content"`
+ Content IncidentResolvedSubjectContentV0_1_0 `json:"content"`
}
-func (sc IncidentResolvedSubject) GetSubjectType() SubjectType {
+func (sc IncidentResolvedSubjectV0_1_0) GetSubjectType() SubjectType {
return "incident"
}
type IncidentResolvedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject IncidentResolvedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject IncidentResolvedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *IncidentResolvedEventV0_1_0) SetCustomData(contentType string, data int
return nil
}
-func (e IncidentResolvedEventV0_1_0) GetSchema() (string, string) {
+func (e IncidentResolvedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), incidentresolvedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -177,7 +176,7 @@ func NewIncidentResolvedEventV0_1_0(specVersion string) (*IncidentResolvedEventV
Type: IncidentResolvedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: IncidentResolvedSubject{
+ Subject: IncidentResolvedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "incident",
},
diff --git a/pkg/api/zz_incidentresolved_0_2_0.go b/pkg/api/zz_incidentresolved_0_2_0.go
new file mode 100644
index 0000000..72189e4
--- /dev/null
+++ b/pkg/api/zz_incidentresolved_0_2_0.go
@@ -0,0 +1,222 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // IncidentResolved event type v0.2.0
+ IncidentResolvedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "incident",
+ Predicate: "resolved",
+ Version: "0.2.0",
+ }
+)
+
+type IncidentResolvedSubjectContentV0_2_0 struct {
+ ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
+
+ Description string `json:"description,omitempty"`
+
+ Environment *Reference `json:"environment"`
+
+ Service *Reference `json:"service,omitempty"`
+}
+
+type IncidentResolvedSubjectV0_2_0 struct {
+ SubjectBase
+ Content IncidentResolvedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc IncidentResolvedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "incident"
+}
+
+type IncidentResolvedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject IncidentResolvedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e IncidentResolvedEventV0_2_0) GetType() CDEventType {
+ return IncidentResolvedEventTypeV0_2_0
+}
+
+func (e IncidentResolvedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e IncidentResolvedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e IncidentResolvedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e IncidentResolvedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e IncidentResolvedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e IncidentResolvedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e IncidentResolvedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e IncidentResolvedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e IncidentResolvedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e IncidentResolvedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e IncidentResolvedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e IncidentResolvedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e IncidentResolvedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e IncidentResolvedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *IncidentResolvedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e IncidentResolvedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *IncidentResolvedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *IncidentResolvedEventV0_2_0) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetSubjectDescription(description string) {
+ e.Subject.Content.Description = description
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *IncidentResolvedEventV0_2_0) SetSubjectService(service *Reference) {
+ e.Subject.Content.Service = service
+}
+
+// New creates a new IncidentResolvedEventV0_2_0
+func NewIncidentResolvedEventV0_2_0(specVersion string) (*IncidentResolvedEventV0_2_0, error) {
+ e := &IncidentResolvedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: IncidentResolvedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: IncidentResolvedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "incident",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_pipelinerunfinished_0_1_1.go b/pkg/api/zz_pipelinerunfinished_0_1_1.go
index abab925..422eb04 100644
--- a/pkg/api/zz_pipelinerunfinished_0_1_1.go
+++ b/pkg/api/zz_pipelinerunfinished_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var pipelinerunfinishedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/pipeline-run-finished-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.pipelinerun.finished.0.1.1"],"default":"dev.cdevents.pipelinerun.finished.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["pipelineRun"],"default":"pipelineRun"},"content":{"properties":{"pipelineName":{"type":"string"},"url":{"type":"string"},"outcome":{"type":"string"},"errors":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// PipelineRunFinished event type v0.1.1
@@ -36,7 +35,7 @@ var (
}
)
-type PipelineRunFinishedSubjectContent struct {
+type PipelineRunFinishedSubjectContentV0_1_1 struct {
Errors string `json:"errors,omitempty"`
Outcome string `json:"outcome,omitempty"`
@@ -46,18 +45,18 @@ type PipelineRunFinishedSubjectContent struct {
Url string `json:"url,omitempty"`
}
-type PipelineRunFinishedSubject struct {
+type PipelineRunFinishedSubjectV0_1_1 struct {
SubjectBase
- Content PipelineRunFinishedSubjectContent `json:"content"`
+ Content PipelineRunFinishedSubjectContentV0_1_1 `json:"content"`
}
-func (sc PipelineRunFinishedSubject) GetSubjectType() SubjectType {
+func (sc PipelineRunFinishedSubjectV0_1_1) GetSubjectType() SubjectType {
return "pipelineRun"
}
type PipelineRunFinishedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject PipelineRunFinishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject PipelineRunFinishedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *PipelineRunFinishedEventV0_1_1) SetCustomData(contentType string, data
return nil
}
-func (e PipelineRunFinishedEventV0_1_1) GetSchema() (string, string) {
+func (e PipelineRunFinishedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), pipelinerunfinishedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -177,7 +176,7 @@ func NewPipelineRunFinishedEventV0_1_1(specVersion string) (*PipelineRunFinished
Type: PipelineRunFinishedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: PipelineRunFinishedSubject{
+ Subject: PipelineRunFinishedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "pipelineRun",
},
diff --git a/pkg/api/zz_pipelinerunfinished_0_2_0.go b/pkg/api/zz_pipelinerunfinished_0_2_0.go
new file mode 100644
index 0000000..8a3a59f
--- /dev/null
+++ b/pkg/api/zz_pipelinerunfinished_0_2_0.go
@@ -0,0 +1,222 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // PipelineRunFinished event type v0.2.0
+ PipelineRunFinishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "pipelinerun",
+ Predicate: "finished",
+ Version: "0.2.0",
+ }
+)
+
+type PipelineRunFinishedSubjectContentV0_2_0 struct {
+ Errors string `json:"errors,omitempty"`
+
+ Outcome string `json:"outcome,omitempty"`
+
+ PipelineName string `json:"pipelineName,omitempty"`
+
+ Url string `json:"url,omitempty"`
+}
+
+type PipelineRunFinishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content PipelineRunFinishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc PipelineRunFinishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "pipelineRun"
+}
+
+type PipelineRunFinishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject PipelineRunFinishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e PipelineRunFinishedEventV0_2_0) GetType() CDEventType {
+ return PipelineRunFinishedEventTypeV0_2_0
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e PipelineRunFinishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *PipelineRunFinishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e PipelineRunFinishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *PipelineRunFinishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSubjectErrors(errors string) {
+ e.Subject.Content.Errors = errors
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSubjectOutcome(outcome string) {
+ e.Subject.Content.Outcome = outcome
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSubjectPipelineName(pipelineName string) {
+ e.Subject.Content.PipelineName = pipelineName
+}
+
+func (e *PipelineRunFinishedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+// New creates a new PipelineRunFinishedEventV0_2_0
+func NewPipelineRunFinishedEventV0_2_0(specVersion string) (*PipelineRunFinishedEventV0_2_0, error) {
+ e := &PipelineRunFinishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: PipelineRunFinishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: PipelineRunFinishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "pipelineRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_pipelinerunqueued_0_1_1.go b/pkg/api/zz_pipelinerunqueued_0_1_1.go
index 38241f2..434bfad 100644
--- a/pkg/api/zz_pipelinerunqueued_0_1_1.go
+++ b/pkg/api/zz_pipelinerunqueued_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var pipelinerunqueuedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/pipeline-run-queued-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.pipelinerun.queued.0.1.1"],"default":"dev.cdevents.pipelinerun.queued.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["pipelineRun"],"default":"pipelineRun"},"content":{"properties":{"pipelineName":{"type":"string"},"url":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// PipelineRunQueued event type v0.1.1
@@ -36,24 +35,24 @@ var (
}
)
-type PipelineRunQueuedSubjectContent struct {
+type PipelineRunQueuedSubjectContentV0_1_1 struct {
PipelineName string `json:"pipelineName,omitempty"`
Url string `json:"url,omitempty"`
}
-type PipelineRunQueuedSubject struct {
+type PipelineRunQueuedSubjectV0_1_1 struct {
SubjectBase
- Content PipelineRunQueuedSubjectContent `json:"content"`
+ Content PipelineRunQueuedSubjectContentV0_1_1 `json:"content"`
}
-func (sc PipelineRunQueuedSubject) GetSubjectType() SubjectType {
+func (sc PipelineRunQueuedSubjectV0_1_1) GetSubjectType() SubjectType {
return "pipelineRun"
}
type PipelineRunQueuedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject PipelineRunQueuedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject PipelineRunQueuedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -143,9 +142,9 @@ func (e *PipelineRunQueuedEventV0_1_1) SetCustomData(contentType string, data in
return nil
}
-func (e PipelineRunQueuedEventV0_1_1) GetSchema() (string, string) {
+func (e PipelineRunQueuedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), pipelinerunqueuedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -165,7 +164,7 @@ func NewPipelineRunQueuedEventV0_1_1(specVersion string) (*PipelineRunQueuedEven
Type: PipelineRunQueuedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: PipelineRunQueuedSubject{
+ Subject: PipelineRunQueuedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "pipelineRun",
},
diff --git a/pkg/api/zz_pipelinerunqueued_0_2_0.go b/pkg/api/zz_pipelinerunqueued_0_2_0.go
new file mode 100644
index 0000000..b24e144
--- /dev/null
+++ b/pkg/api/zz_pipelinerunqueued_0_2_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // PipelineRunQueued event type v0.2.0
+ PipelineRunQueuedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "pipelinerun",
+ Predicate: "queued",
+ Version: "0.2.0",
+ }
+)
+
+type PipelineRunQueuedSubjectContentV0_2_0 struct {
+ PipelineName string `json:"pipelineName,omitempty"`
+
+ Url string `json:"url,omitempty"`
+}
+
+type PipelineRunQueuedSubjectV0_2_0 struct {
+ SubjectBase
+ Content PipelineRunQueuedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc PipelineRunQueuedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "pipelineRun"
+}
+
+type PipelineRunQueuedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject PipelineRunQueuedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e PipelineRunQueuedEventV0_2_0) GetType() CDEventType {
+ return PipelineRunQueuedEventTypeV0_2_0
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e PipelineRunQueuedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *PipelineRunQueuedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e PipelineRunQueuedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *PipelineRunQueuedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *PipelineRunQueuedEventV0_2_0) SetSubjectPipelineName(pipelineName string) {
+ e.Subject.Content.PipelineName = pipelineName
+}
+
+func (e *PipelineRunQueuedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+// New creates a new PipelineRunQueuedEventV0_2_0
+func NewPipelineRunQueuedEventV0_2_0(specVersion string) (*PipelineRunQueuedEventV0_2_0, error) {
+ e := &PipelineRunQueuedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: PipelineRunQueuedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: PipelineRunQueuedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "pipelineRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_pipelinerunstarted_0_1_1.go b/pkg/api/zz_pipelinerunstarted_0_1_1.go
index f704aae..842d1e8 100644
--- a/pkg/api/zz_pipelinerunstarted_0_1_1.go
+++ b/pkg/api/zz_pipelinerunstarted_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var pipelinerunstartedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/pipeline-run-started-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.pipelinerun.started.0.1.1"],"default":"dev.cdevents.pipelinerun.started.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["pipelineRun"],"default":"pipelineRun"},"content":{"properties":{"pipelineName":{"type":"string"},"url":{"type":"string"}},"additionalProperties":false,"type":"object","required":["pipelineName","url"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// PipelineRunStarted event type v0.1.1
@@ -36,24 +35,24 @@ var (
}
)
-type PipelineRunStartedSubjectContent struct {
+type PipelineRunStartedSubjectContentV0_1_1 struct {
PipelineName string `json:"pipelineName"`
Url string `json:"url"`
}
-type PipelineRunStartedSubject struct {
+type PipelineRunStartedSubjectV0_1_1 struct {
SubjectBase
- Content PipelineRunStartedSubjectContent `json:"content"`
+ Content PipelineRunStartedSubjectContentV0_1_1 `json:"content"`
}
-func (sc PipelineRunStartedSubject) GetSubjectType() SubjectType {
+func (sc PipelineRunStartedSubjectV0_1_1) GetSubjectType() SubjectType {
return "pipelineRun"
}
type PipelineRunStartedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject PipelineRunStartedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject PipelineRunStartedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -143,9 +142,9 @@ func (e *PipelineRunStartedEventV0_1_1) SetCustomData(contentType string, data i
return nil
}
-func (e PipelineRunStartedEventV0_1_1) GetSchema() (string, string) {
+func (e PipelineRunStartedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), pipelinerunstartedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -165,7 +164,7 @@ func NewPipelineRunStartedEventV0_1_1(specVersion string) (*PipelineRunStartedEv
Type: PipelineRunStartedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: PipelineRunStartedSubject{
+ Subject: PipelineRunStartedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "pipelineRun",
},
diff --git a/pkg/api/zz_pipelinerunstarted_0_2_0.go b/pkg/api/zz_pipelinerunstarted_0_2_0.go
new file mode 100644
index 0000000..46703c5
--- /dev/null
+++ b/pkg/api/zz_pipelinerunstarted_0_2_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // PipelineRunStarted event type v0.2.0
+ PipelineRunStartedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "pipelinerun",
+ Predicate: "started",
+ Version: "0.2.0",
+ }
+)
+
+type PipelineRunStartedSubjectContentV0_2_0 struct {
+ PipelineName string `json:"pipelineName"`
+
+ Url string `json:"url"`
+}
+
+type PipelineRunStartedSubjectV0_2_0 struct {
+ SubjectBase
+ Content PipelineRunStartedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc PipelineRunStartedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "pipelineRun"
+}
+
+type PipelineRunStartedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject PipelineRunStartedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e PipelineRunStartedEventV0_2_0) GetType() CDEventType {
+ return PipelineRunStartedEventTypeV0_2_0
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e PipelineRunStartedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *PipelineRunStartedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e PipelineRunStartedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *PipelineRunStartedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *PipelineRunStartedEventV0_2_0) SetSubjectPipelineName(pipelineName string) {
+ e.Subject.Content.PipelineName = pipelineName
+}
+
+func (e *PipelineRunStartedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+// New creates a new PipelineRunStartedEventV0_2_0
+func NewPipelineRunStartedEventV0_2_0(specVersion string) (*PipelineRunStartedEventV0_2_0, error) {
+ e := &PipelineRunStartedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: PipelineRunStartedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: PipelineRunStartedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "pipelineRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_repositorycreated_0_1_1.go b/pkg/api/zz_repositorycreated_0_1_1.go
index 8d426ba..32ef75c 100644
--- a/pkg/api/zz_repositorycreated_0_1_1.go
+++ b/pkg/api/zz_repositorycreated_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var repositorycreatedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/repository-created-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.repository.created.0.1.1"],"default":"dev.cdevents.repository.created.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["repository"],"default":"repository"},"content":{"properties":{"name":{"type":"string","minLength":1},"owner":{"type":"string"},"url":{"type":"string","minLength":1},"viewUrl":{"type":"string"}},"additionalProperties":false,"type":"object","required":["name","url"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// RepositoryCreated event type v0.1.1
@@ -36,7 +35,7 @@ var (
}
)
-type RepositoryCreatedSubjectContent struct {
+type RepositoryCreatedSubjectContentV0_1_1 struct {
Name string `json:"name"`
Owner string `json:"owner,omitempty"`
@@ -46,18 +45,18 @@ type RepositoryCreatedSubjectContent struct {
ViewUrl string `json:"viewUrl,omitempty"`
}
-type RepositoryCreatedSubject struct {
+type RepositoryCreatedSubjectV0_1_1 struct {
SubjectBase
- Content RepositoryCreatedSubjectContent `json:"content"`
+ Content RepositoryCreatedSubjectContentV0_1_1 `json:"content"`
}
-func (sc RepositoryCreatedSubject) GetSubjectType() SubjectType {
+func (sc RepositoryCreatedSubjectV0_1_1) GetSubjectType() SubjectType {
return "repository"
}
type RepositoryCreatedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject RepositoryCreatedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject RepositoryCreatedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *RepositoryCreatedEventV0_1_1) SetCustomData(contentType string, data in
return nil
}
-func (e RepositoryCreatedEventV0_1_1) GetSchema() (string, string) {
+func (e RepositoryCreatedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), repositorycreatedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -177,7 +176,7 @@ func NewRepositoryCreatedEventV0_1_1(specVersion string) (*RepositoryCreatedEven
Type: RepositoryCreatedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: RepositoryCreatedSubject{
+ Subject: RepositoryCreatedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "repository",
},
diff --git a/pkg/api/zz_repositorycreated_0_2_0.go b/pkg/api/zz_repositorycreated_0_2_0.go
new file mode 100644
index 0000000..9c04633
--- /dev/null
+++ b/pkg/api/zz_repositorycreated_0_2_0.go
@@ -0,0 +1,222 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // RepositoryCreated event type v0.2.0
+ RepositoryCreatedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "repository",
+ Predicate: "created",
+ Version: "0.2.0",
+ }
+)
+
+type RepositoryCreatedSubjectContentV0_2_0 struct {
+ Name string `json:"name"`
+
+ Owner string `json:"owner,omitempty"`
+
+ Url string `json:"url"`
+
+ ViewUrl string `json:"viewUrl,omitempty"`
+}
+
+type RepositoryCreatedSubjectV0_2_0 struct {
+ SubjectBase
+ Content RepositoryCreatedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc RepositoryCreatedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "repository"
+}
+
+type RepositoryCreatedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject RepositoryCreatedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e RepositoryCreatedEventV0_2_0) GetType() CDEventType {
+ return RepositoryCreatedEventTypeV0_2_0
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e RepositoryCreatedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *RepositoryCreatedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e RepositoryCreatedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *RepositoryCreatedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *RepositoryCreatedEventV0_2_0) SetSubjectName(name string) {
+ e.Subject.Content.Name = name
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetSubjectOwner(owner string) {
+ e.Subject.Content.Owner = owner
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+func (e *RepositoryCreatedEventV0_2_0) SetSubjectViewUrl(viewUrl string) {
+ e.Subject.Content.ViewUrl = viewUrl
+}
+
+// New creates a new RepositoryCreatedEventV0_2_0
+func NewRepositoryCreatedEventV0_2_0(specVersion string) (*RepositoryCreatedEventV0_2_0, error) {
+ e := &RepositoryCreatedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: RepositoryCreatedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: RepositoryCreatedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "repository",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_repositorydeleted_0_1_1.go b/pkg/api/zz_repositorydeleted_0_1_1.go
index 26c5c00..acf1d41 100644
--- a/pkg/api/zz_repositorydeleted_0_1_1.go
+++ b/pkg/api/zz_repositorydeleted_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var repositorydeletedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/repository-deleted-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.repository.deleted.0.1.1"],"default":"dev.cdevents.repository.deleted.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["repository"],"default":"repository"},"content":{"properties":{"name":{"type":"string"},"owner":{"type":"string"},"url":{"type":"string"},"viewUrl":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// RepositoryDeleted event type v0.1.1
@@ -36,7 +35,7 @@ var (
}
)
-type RepositoryDeletedSubjectContent struct {
+type RepositoryDeletedSubjectContentV0_1_1 struct {
Name string `json:"name,omitempty"`
Owner string `json:"owner,omitempty"`
@@ -46,18 +45,18 @@ type RepositoryDeletedSubjectContent struct {
ViewUrl string `json:"viewUrl,omitempty"`
}
-type RepositoryDeletedSubject struct {
+type RepositoryDeletedSubjectV0_1_1 struct {
SubjectBase
- Content RepositoryDeletedSubjectContent `json:"content"`
+ Content RepositoryDeletedSubjectContentV0_1_1 `json:"content"`
}
-func (sc RepositoryDeletedSubject) GetSubjectType() SubjectType {
+func (sc RepositoryDeletedSubjectV0_1_1) GetSubjectType() SubjectType {
return "repository"
}
type RepositoryDeletedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject RepositoryDeletedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject RepositoryDeletedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *RepositoryDeletedEventV0_1_1) SetCustomData(contentType string, data in
return nil
}
-func (e RepositoryDeletedEventV0_1_1) GetSchema() (string, string) {
+func (e RepositoryDeletedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), repositorydeletedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -177,7 +176,7 @@ func NewRepositoryDeletedEventV0_1_1(specVersion string) (*RepositoryDeletedEven
Type: RepositoryDeletedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: RepositoryDeletedSubject{
+ Subject: RepositoryDeletedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "repository",
},
diff --git a/pkg/api/zz_repositorydeleted_0_2_0.go b/pkg/api/zz_repositorydeleted_0_2_0.go
new file mode 100644
index 0000000..ac700f8
--- /dev/null
+++ b/pkg/api/zz_repositorydeleted_0_2_0.go
@@ -0,0 +1,222 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // RepositoryDeleted event type v0.2.0
+ RepositoryDeletedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "repository",
+ Predicate: "deleted",
+ Version: "0.2.0",
+ }
+)
+
+type RepositoryDeletedSubjectContentV0_2_0 struct {
+ Name string `json:"name,omitempty"`
+
+ Owner string `json:"owner,omitempty"`
+
+ Url string `json:"url,omitempty"`
+
+ ViewUrl string `json:"viewUrl,omitempty"`
+}
+
+type RepositoryDeletedSubjectV0_2_0 struct {
+ SubjectBase
+ Content RepositoryDeletedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc RepositoryDeletedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "repository"
+}
+
+type RepositoryDeletedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject RepositoryDeletedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e RepositoryDeletedEventV0_2_0) GetType() CDEventType {
+ return RepositoryDeletedEventTypeV0_2_0
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e RepositoryDeletedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *RepositoryDeletedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e RepositoryDeletedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *RepositoryDeletedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *RepositoryDeletedEventV0_2_0) SetSubjectName(name string) {
+ e.Subject.Content.Name = name
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetSubjectOwner(owner string) {
+ e.Subject.Content.Owner = owner
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+func (e *RepositoryDeletedEventV0_2_0) SetSubjectViewUrl(viewUrl string) {
+ e.Subject.Content.ViewUrl = viewUrl
+}
+
+// New creates a new RepositoryDeletedEventV0_2_0
+func NewRepositoryDeletedEventV0_2_0(specVersion string) (*RepositoryDeletedEventV0_2_0, error) {
+ e := &RepositoryDeletedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: RepositoryDeletedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: RepositoryDeletedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "repository",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_repositorymodified_0_1_1.go b/pkg/api/zz_repositorymodified_0_1_1.go
index e668e39..6d902de 100644
--- a/pkg/api/zz_repositorymodified_0_1_1.go
+++ b/pkg/api/zz_repositorymodified_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var repositorymodifiedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/repository-modified-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.repository.modified.0.1.1"],"default":"dev.cdevents.repository.modified.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["repository"],"default":"repository"},"content":{"properties":{"name":{"type":"string"},"owner":{"type":"string"},"url":{"type":"string"},"viewUrl":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// RepositoryModified event type v0.1.1
@@ -36,7 +35,7 @@ var (
}
)
-type RepositoryModifiedSubjectContent struct {
+type RepositoryModifiedSubjectContentV0_1_1 struct {
Name string `json:"name,omitempty"`
Owner string `json:"owner,omitempty"`
@@ -46,18 +45,18 @@ type RepositoryModifiedSubjectContent struct {
ViewUrl string `json:"viewUrl,omitempty"`
}
-type RepositoryModifiedSubject struct {
+type RepositoryModifiedSubjectV0_1_1 struct {
SubjectBase
- Content RepositoryModifiedSubjectContent `json:"content"`
+ Content RepositoryModifiedSubjectContentV0_1_1 `json:"content"`
}
-func (sc RepositoryModifiedSubject) GetSubjectType() SubjectType {
+func (sc RepositoryModifiedSubjectV0_1_1) GetSubjectType() SubjectType {
return "repository"
}
type RepositoryModifiedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject RepositoryModifiedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject RepositoryModifiedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *RepositoryModifiedEventV0_1_1) SetCustomData(contentType string, data i
return nil
}
-func (e RepositoryModifiedEventV0_1_1) GetSchema() (string, string) {
+func (e RepositoryModifiedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), repositorymodifiedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -177,7 +176,7 @@ func NewRepositoryModifiedEventV0_1_1(specVersion string) (*RepositoryModifiedEv
Type: RepositoryModifiedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: RepositoryModifiedSubject{
+ Subject: RepositoryModifiedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "repository",
},
diff --git a/pkg/api/zz_repositorymodified_0_2_0.go b/pkg/api/zz_repositorymodified_0_2_0.go
new file mode 100644
index 0000000..411211c
--- /dev/null
+++ b/pkg/api/zz_repositorymodified_0_2_0.go
@@ -0,0 +1,222 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // RepositoryModified event type v0.2.0
+ RepositoryModifiedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "repository",
+ Predicate: "modified",
+ Version: "0.2.0",
+ }
+)
+
+type RepositoryModifiedSubjectContentV0_2_0 struct {
+ Name string `json:"name,omitempty"`
+
+ Owner string `json:"owner,omitempty"`
+
+ Url string `json:"url,omitempty"`
+
+ ViewUrl string `json:"viewUrl,omitempty"`
+}
+
+type RepositoryModifiedSubjectV0_2_0 struct {
+ SubjectBase
+ Content RepositoryModifiedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc RepositoryModifiedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "repository"
+}
+
+type RepositoryModifiedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject RepositoryModifiedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e RepositoryModifiedEventV0_2_0) GetType() CDEventType {
+ return RepositoryModifiedEventTypeV0_2_0
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e RepositoryModifiedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *RepositoryModifiedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e RepositoryModifiedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *RepositoryModifiedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *RepositoryModifiedEventV0_2_0) SetSubjectName(name string) {
+ e.Subject.Content.Name = name
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetSubjectOwner(owner string) {
+ e.Subject.Content.Owner = owner
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+func (e *RepositoryModifiedEventV0_2_0) SetSubjectViewUrl(viewUrl string) {
+ e.Subject.Content.ViewUrl = viewUrl
+}
+
+// New creates a new RepositoryModifiedEventV0_2_0
+func NewRepositoryModifiedEventV0_2_0(specVersion string) (*RepositoryModifiedEventV0_2_0, error) {
+ e := &RepositoryModifiedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: RepositoryModifiedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: RepositoryModifiedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "repository",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_servicedeployed_0_1_1.go b/pkg/api/zz_servicedeployed_0_1_1.go
index 3d0101c..0d14fc3 100644
--- a/pkg/api/zz_servicedeployed_0_1_1.go
+++ b/pkg/api/zz_servicedeployed_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var servicedeployedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/service-deployed-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.service.deployed.0.1.1"],"default":"dev.cdevents.service.deployed.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["service"],"default":"service"},"content":{"properties":{"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"artifactId":{"type":"string","minLength":1}},"additionalProperties":false,"type":"object","required":["environment","artifactId"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ServiceDeployed event type v0.1.1
@@ -36,24 +35,24 @@ var (
}
)
-type ServiceDeployedSubjectContent struct {
+type ServiceDeployedSubjectContentV0_1_1 struct {
ArtifactId string `json:"artifactId" validate:"purl"`
Environment *Reference `json:"environment"`
}
-type ServiceDeployedSubject struct {
+type ServiceDeployedSubjectV0_1_1 struct {
SubjectBase
- Content ServiceDeployedSubjectContent `json:"content"`
+ Content ServiceDeployedSubjectContentV0_1_1 `json:"content"`
}
-func (sc ServiceDeployedSubject) GetSubjectType() SubjectType {
+func (sc ServiceDeployedSubjectV0_1_1) GetSubjectType() SubjectType {
return "service"
}
type ServiceDeployedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject ServiceDeployedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ServiceDeployedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -143,9 +142,9 @@ func (e *ServiceDeployedEventV0_1_1) SetCustomData(contentType string, data inte
return nil
}
-func (e ServiceDeployedEventV0_1_1) GetSchema() (string, string) {
+func (e ServiceDeployedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), servicedeployedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -165,7 +164,7 @@ func NewServiceDeployedEventV0_1_1(specVersion string) (*ServiceDeployedEventV0_
Type: ServiceDeployedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: ServiceDeployedSubject{
+ Subject: ServiceDeployedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "service",
},
diff --git a/pkg/api/zz_servicedeployed_0_2_0.go b/pkg/api/zz_servicedeployed_0_2_0.go
new file mode 100644
index 0000000..e7c1a75
--- /dev/null
+++ b/pkg/api/zz_servicedeployed_0_2_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ServiceDeployed event type v0.2.0
+ ServiceDeployedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "service",
+ Predicate: "deployed",
+ Version: "0.2.0",
+ }
+)
+
+type ServiceDeployedSubjectContentV0_2_0 struct {
+ ArtifactId string `json:"artifactId" validate:"purl"`
+
+ Environment *Reference `json:"environment"`
+}
+
+type ServiceDeployedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ServiceDeployedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ServiceDeployedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "service"
+}
+
+type ServiceDeployedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ServiceDeployedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ServiceDeployedEventV0_2_0) GetType() CDEventType {
+ return ServiceDeployedEventTypeV0_2_0
+}
+
+func (e ServiceDeployedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ServiceDeployedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ServiceDeployedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ServiceDeployedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ServiceDeployedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ServiceDeployedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ServiceDeployedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ServiceDeployedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceDeployedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ServiceDeployedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceDeployedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ServiceDeployedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ServiceDeployedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ServiceDeployedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ServiceDeployedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ServiceDeployedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ServiceDeployedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ServiceDeployedEventV0_2_0) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+func (e *ServiceDeployedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+// New creates a new ServiceDeployedEventV0_2_0
+func NewServiceDeployedEventV0_2_0(specVersion string) (*ServiceDeployedEventV0_2_0, error) {
+ e := &ServiceDeployedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ServiceDeployedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ServiceDeployedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "service",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_servicepublished_0_1_1.go b/pkg/api/zz_servicepublished_0_1_1.go
index a98d611..a1483b2 100644
--- a/pkg/api/zz_servicepublished_0_1_1.go
+++ b/pkg/api/zz_servicepublished_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var servicepublishedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/service-published-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.service.published.0.1.1"],"default":"dev.cdevents.service.published.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["service"],"default":"service"},"content":{"properties":{"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ServicePublished event type v0.1.1
@@ -36,22 +35,22 @@ var (
}
)
-type ServicePublishedSubjectContent struct {
+type ServicePublishedSubjectContentV0_1_1 struct {
Environment *Reference `json:"environment,omitempty"`
}
-type ServicePublishedSubject struct {
+type ServicePublishedSubjectV0_1_1 struct {
SubjectBase
- Content ServicePublishedSubjectContent `json:"content"`
+ Content ServicePublishedSubjectContentV0_1_1 `json:"content"`
}
-func (sc ServicePublishedSubject) GetSubjectType() SubjectType {
+func (sc ServicePublishedSubjectV0_1_1) GetSubjectType() SubjectType {
return "service"
}
type ServicePublishedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject ServicePublishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ServicePublishedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ServicePublishedEventV0_1_1) SetCustomData(contentType string, data int
return nil
}
-func (e ServicePublishedEventV0_1_1) GetSchema() (string, string) {
+func (e ServicePublishedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), servicepublishedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewServicePublishedEventV0_1_1(specVersion string) (*ServicePublishedEventV
Type: ServicePublishedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: ServicePublishedSubject{
+ Subject: ServicePublishedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "service",
},
diff --git a/pkg/api/zz_servicepublished_0_2_0.go b/pkg/api/zz_servicepublished_0_2_0.go
new file mode 100644
index 0000000..81c88b6
--- /dev/null
+++ b/pkg/api/zz_servicepublished_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ServicePublished event type v0.2.0
+ ServicePublishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "service",
+ Predicate: "published",
+ Version: "0.2.0",
+ }
+)
+
+type ServicePublishedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment,omitempty"`
+}
+
+type ServicePublishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ServicePublishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ServicePublishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "service"
+}
+
+type ServicePublishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ServicePublishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ServicePublishedEventV0_2_0) GetType() CDEventType {
+ return ServicePublishedEventTypeV0_2_0
+}
+
+func (e ServicePublishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ServicePublishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ServicePublishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ServicePublishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ServicePublishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ServicePublishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ServicePublishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ServicePublishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServicePublishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ServicePublishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServicePublishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ServicePublishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ServicePublishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ServicePublishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ServicePublishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ServicePublishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ServicePublishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ServicePublishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ServicePublishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ServicePublishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ServicePublishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ServicePublishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ServicePublishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ServicePublishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ServicePublishedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+// New creates a new ServicePublishedEventV0_2_0
+func NewServicePublishedEventV0_2_0(specVersion string) (*ServicePublishedEventV0_2_0, error) {
+ e := &ServicePublishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ServicePublishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ServicePublishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "service",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_serviceremoved_0_1_1.go b/pkg/api/zz_serviceremoved_0_1_1.go
index 063e7e1..7292271 100644
--- a/pkg/api/zz_serviceremoved_0_1_1.go
+++ b/pkg/api/zz_serviceremoved_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var serviceremovedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/service-removed-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.service.removed.0.1.1"],"default":"dev.cdevents.service.removed.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["service"],"default":"service"},"content":{"properties":{"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ServiceRemoved event type v0.1.1
@@ -36,22 +35,22 @@ var (
}
)
-type ServiceRemovedSubjectContent struct {
+type ServiceRemovedSubjectContentV0_1_1 struct {
Environment *Reference `json:"environment,omitempty"`
}
-type ServiceRemovedSubject struct {
+type ServiceRemovedSubjectV0_1_1 struct {
SubjectBase
- Content ServiceRemovedSubjectContent `json:"content"`
+ Content ServiceRemovedSubjectContentV0_1_1 `json:"content"`
}
-func (sc ServiceRemovedSubject) GetSubjectType() SubjectType {
+func (sc ServiceRemovedSubjectV0_1_1) GetSubjectType() SubjectType {
return "service"
}
type ServiceRemovedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject ServiceRemovedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ServiceRemovedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -141,9 +140,9 @@ func (e *ServiceRemovedEventV0_1_1) SetCustomData(contentType string, data inter
return nil
}
-func (e ServiceRemovedEventV0_1_1) GetSchema() (string, string) {
+func (e ServiceRemovedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), serviceremovedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -159,7 +158,7 @@ func NewServiceRemovedEventV0_1_1(specVersion string) (*ServiceRemovedEventV0_1_
Type: ServiceRemovedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: ServiceRemovedSubject{
+ Subject: ServiceRemovedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "service",
},
diff --git a/pkg/api/zz_serviceremoved_0_2_0.go b/pkg/api/zz_serviceremoved_0_2_0.go
new file mode 100644
index 0000000..82d6021
--- /dev/null
+++ b/pkg/api/zz_serviceremoved_0_2_0.go
@@ -0,0 +1,204 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ServiceRemoved event type v0.2.0
+ ServiceRemovedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "service",
+ Predicate: "removed",
+ Version: "0.2.0",
+ }
+)
+
+type ServiceRemovedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment,omitempty"`
+}
+
+type ServiceRemovedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ServiceRemovedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ServiceRemovedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "service"
+}
+
+type ServiceRemovedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ServiceRemovedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ServiceRemovedEventV0_2_0) GetType() CDEventType {
+ return ServiceRemovedEventTypeV0_2_0
+}
+
+func (e ServiceRemovedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ServiceRemovedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ServiceRemovedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ServiceRemovedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ServiceRemovedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ServiceRemovedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ServiceRemovedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ServiceRemovedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceRemovedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ServiceRemovedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceRemovedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ServiceRemovedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ServiceRemovedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ServiceRemovedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ServiceRemovedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ServiceRemovedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ServiceRemovedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ServiceRemovedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ServiceRemovedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ServiceRemovedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ServiceRemovedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ServiceRemovedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ServiceRemovedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ServiceRemovedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ServiceRemovedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+// New creates a new ServiceRemovedEventV0_2_0
+func NewServiceRemovedEventV0_2_0(specVersion string) (*ServiceRemovedEventV0_2_0, error) {
+ e := &ServiceRemovedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ServiceRemovedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ServiceRemovedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "service",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_servicerolledback_0_1_1.go b/pkg/api/zz_servicerolledback_0_1_1.go
index 0d71bdf..0d0106f 100644
--- a/pkg/api/zz_servicerolledback_0_1_1.go
+++ b/pkg/api/zz_servicerolledback_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var servicerolledbackschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/service-rolledback-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.service.rolledback.0.1.1"],"default":"dev.cdevents.service.rolledback.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["service"],"default":"service"},"content":{"properties":{"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"artifactId":{"type":"string","minLength":1}},"additionalProperties":false,"type":"object","required":["environment","artifactId"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ServiceRolledback event type v0.1.1
@@ -36,24 +35,24 @@ var (
}
)
-type ServiceRolledbackSubjectContent struct {
+type ServiceRolledbackSubjectContentV0_1_1 struct {
ArtifactId string `json:"artifactId" validate:"purl"`
Environment *Reference `json:"environment"`
}
-type ServiceRolledbackSubject struct {
+type ServiceRolledbackSubjectV0_1_1 struct {
SubjectBase
- Content ServiceRolledbackSubjectContent `json:"content"`
+ Content ServiceRolledbackSubjectContentV0_1_1 `json:"content"`
}
-func (sc ServiceRolledbackSubject) GetSubjectType() SubjectType {
+func (sc ServiceRolledbackSubjectV0_1_1) GetSubjectType() SubjectType {
return "service"
}
type ServiceRolledbackEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject ServiceRolledbackSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ServiceRolledbackSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -143,9 +142,9 @@ func (e *ServiceRolledbackEventV0_1_1) SetCustomData(contentType string, data in
return nil
}
-func (e ServiceRolledbackEventV0_1_1) GetSchema() (string, string) {
+func (e ServiceRolledbackEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), servicerolledbackschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -165,7 +164,7 @@ func NewServiceRolledbackEventV0_1_1(specVersion string) (*ServiceRolledbackEven
Type: ServiceRolledbackEventTypeV0_1_1,
Version: specVersion,
},
- Subject: ServiceRolledbackSubject{
+ Subject: ServiceRolledbackSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "service",
},
diff --git a/pkg/api/zz_servicerolledback_0_2_0.go b/pkg/api/zz_servicerolledback_0_2_0.go
new file mode 100644
index 0000000..cf3865f
--- /dev/null
+++ b/pkg/api/zz_servicerolledback_0_2_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ServiceRolledback event type v0.2.0
+ ServiceRolledbackEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "service",
+ Predicate: "rolledback",
+ Version: "0.2.0",
+ }
+)
+
+type ServiceRolledbackSubjectContentV0_2_0 struct {
+ ArtifactId string `json:"artifactId" validate:"purl"`
+
+ Environment *Reference `json:"environment"`
+}
+
+type ServiceRolledbackSubjectV0_2_0 struct {
+ SubjectBase
+ Content ServiceRolledbackSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ServiceRolledbackSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "service"
+}
+
+type ServiceRolledbackEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ServiceRolledbackSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ServiceRolledbackEventV0_2_0) GetType() CDEventType {
+ return ServiceRolledbackEventTypeV0_2_0
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ServiceRolledbackEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ServiceRolledbackEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ServiceRolledbackEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ServiceRolledbackEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ServiceRolledbackEventV0_2_0) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+func (e *ServiceRolledbackEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+// New creates a new ServiceRolledbackEventV0_2_0
+func NewServiceRolledbackEventV0_2_0(specVersion string) (*ServiceRolledbackEventV0_2_0, error) {
+ e := &ServiceRolledbackEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ServiceRolledbackEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ServiceRolledbackSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "service",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_serviceupgraded_0_1_1.go b/pkg/api/zz_serviceupgraded_0_1_1.go
index 5fd709e..8ad1013 100644
--- a/pkg/api/zz_serviceupgraded_0_1_1.go
+++ b/pkg/api/zz_serviceupgraded_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var serviceupgradedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/service-upgraded-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.service.upgraded.0.1.1"],"default":"dev.cdevents.service.upgraded.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["service"],"default":"service"},"content":{"properties":{"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"artifactId":{"type":"string","minLength":1}},"additionalProperties":false,"type":"object","required":["environment","artifactId"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// ServiceUpgraded event type v0.1.1
@@ -36,24 +35,24 @@ var (
}
)
-type ServiceUpgradedSubjectContent struct {
+type ServiceUpgradedSubjectContentV0_1_1 struct {
ArtifactId string `json:"artifactId" validate:"purl"`
Environment *Reference `json:"environment"`
}
-type ServiceUpgradedSubject struct {
+type ServiceUpgradedSubjectV0_1_1 struct {
SubjectBase
- Content ServiceUpgradedSubjectContent `json:"content"`
+ Content ServiceUpgradedSubjectContentV0_1_1 `json:"content"`
}
-func (sc ServiceUpgradedSubject) GetSubjectType() SubjectType {
+func (sc ServiceUpgradedSubjectV0_1_1) GetSubjectType() SubjectType {
return "service"
}
type ServiceUpgradedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject ServiceUpgradedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject ServiceUpgradedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -143,9 +142,9 @@ func (e *ServiceUpgradedEventV0_1_1) SetCustomData(contentType string, data inte
return nil
}
-func (e ServiceUpgradedEventV0_1_1) GetSchema() (string, string) {
+func (e ServiceUpgradedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), serviceupgradedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -165,7 +164,7 @@ func NewServiceUpgradedEventV0_1_1(specVersion string) (*ServiceUpgradedEventV0_
Type: ServiceUpgradedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: ServiceUpgradedSubject{
+ Subject: ServiceUpgradedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "service",
},
diff --git a/pkg/api/zz_serviceupgraded_0_2_0.go b/pkg/api/zz_serviceupgraded_0_2_0.go
new file mode 100644
index 0000000..2cabff0
--- /dev/null
+++ b/pkg/api/zz_serviceupgraded_0_2_0.go
@@ -0,0 +1,210 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // ServiceUpgraded event type v0.2.0
+ ServiceUpgradedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "service",
+ Predicate: "upgraded",
+ Version: "0.2.0",
+ }
+)
+
+type ServiceUpgradedSubjectContentV0_2_0 struct {
+ ArtifactId string `json:"artifactId" validate:"purl"`
+
+ Environment *Reference `json:"environment"`
+}
+
+type ServiceUpgradedSubjectV0_2_0 struct {
+ SubjectBase
+ Content ServiceUpgradedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc ServiceUpgradedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "service"
+}
+
+type ServiceUpgradedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject ServiceUpgradedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e ServiceUpgradedEventV0_2_0) GetType() CDEventType {
+ return ServiceUpgradedEventTypeV0_2_0
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e ServiceUpgradedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *ServiceUpgradedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e ServiceUpgradedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *ServiceUpgradedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *ServiceUpgradedEventV0_2_0) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+func (e *ServiceUpgradedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+// New creates a new ServiceUpgradedEventV0_2_0
+func NewServiceUpgradedEventV0_2_0(specVersion string) (*ServiceUpgradedEventV0_2_0, error) {
+ e := &ServiceUpgradedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: ServiceUpgradedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: ServiceUpgradedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "service",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_taskrunfinished_0_1_1.go b/pkg/api/zz_taskrunfinished_0_1_1.go
index ced0e15..fb3eaf8 100644
--- a/pkg/api/zz_taskrunfinished_0_1_1.go
+++ b/pkg/api/zz_taskrunfinished_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var taskrunfinishedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/task-run-finished-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.taskrun.finished.0.1.1"],"default":"dev.cdevents.taskrun.finished.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["taskRun"],"default":"taskRun"},"content":{"properties":{"taskName":{"type":"string"},"url":{"type":"string"},"pipelineRun":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"outcome":{"type":"string"},"errors":{"type":"string"}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TaskRunFinished event type v0.1.1
@@ -36,7 +35,7 @@ var (
}
)
-type TaskRunFinishedSubjectContent struct {
+type TaskRunFinishedSubjectContentV0_1_1 struct {
Errors string `json:"errors,omitempty"`
Outcome string `json:"outcome,omitempty"`
@@ -48,18 +47,18 @@ type TaskRunFinishedSubjectContent struct {
Url string `json:"url,omitempty"`
}
-type TaskRunFinishedSubject struct {
+type TaskRunFinishedSubjectV0_1_1 struct {
SubjectBase
- Content TaskRunFinishedSubjectContent `json:"content"`
+ Content TaskRunFinishedSubjectContentV0_1_1 `json:"content"`
}
-func (sc TaskRunFinishedSubject) GetSubjectType() SubjectType {
+func (sc TaskRunFinishedSubjectV0_1_1) GetSubjectType() SubjectType {
return "taskRun"
}
type TaskRunFinishedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject TaskRunFinishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TaskRunFinishedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -149,9 +148,9 @@ func (e *TaskRunFinishedEventV0_1_1) SetCustomData(contentType string, data inte
return nil
}
-func (e TaskRunFinishedEventV0_1_1) GetSchema() (string, string) {
+func (e TaskRunFinishedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), taskrunfinishedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -183,7 +182,7 @@ func NewTaskRunFinishedEventV0_1_1(specVersion string) (*TaskRunFinishedEventV0_
Type: TaskRunFinishedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: TaskRunFinishedSubject{
+ Subject: TaskRunFinishedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "taskRun",
},
diff --git a/pkg/api/zz_taskrunfinished_0_2_0.go b/pkg/api/zz_taskrunfinished_0_2_0.go
new file mode 100644
index 0000000..2d5e380
--- /dev/null
+++ b/pkg/api/zz_taskrunfinished_0_2_0.go
@@ -0,0 +1,228 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TaskRunFinished event type v0.2.0
+ TaskRunFinishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "taskrun",
+ Predicate: "finished",
+ Version: "0.2.0",
+ }
+)
+
+type TaskRunFinishedSubjectContentV0_2_0 struct {
+ Errors string `json:"errors,omitempty"`
+
+ Outcome string `json:"outcome,omitempty"`
+
+ PipelineRun *Reference `json:"pipelineRun,omitempty"`
+
+ TaskName string `json:"taskName,omitempty"`
+
+ Url string `json:"url,omitempty"`
+}
+
+type TaskRunFinishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TaskRunFinishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TaskRunFinishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "taskRun"
+}
+
+type TaskRunFinishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TaskRunFinishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TaskRunFinishedEventV0_2_0) GetType() CDEventType {
+ return TaskRunFinishedEventTypeV0_2_0
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TaskRunFinishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TaskRunFinishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TaskRunFinishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TaskRunFinishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TaskRunFinishedEventV0_2_0) SetSubjectErrors(errors string) {
+ e.Subject.Content.Errors = errors
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSubjectOutcome(outcome string) {
+ e.Subject.Content.Outcome = outcome
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSubjectPipelineRun(pipelineRun *Reference) {
+ e.Subject.Content.PipelineRun = pipelineRun
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSubjectTaskName(taskName string) {
+ e.Subject.Content.TaskName = taskName
+}
+
+func (e *TaskRunFinishedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+// New creates a new TaskRunFinishedEventV0_2_0
+func NewTaskRunFinishedEventV0_2_0(specVersion string) (*TaskRunFinishedEventV0_2_0, error) {
+ e := &TaskRunFinishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TaskRunFinishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TaskRunFinishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "taskRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_taskrunstarted_0_1_1.go b/pkg/api/zz_taskrunstarted_0_1_1.go
index cab87ac..570a77b 100644
--- a/pkg/api/zz_taskrunstarted_0_1_1.go
+++ b/pkg/api/zz_taskrunstarted_0_1_1.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var taskrunstartedschema0_1_1 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/task-run-started-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.taskrun.started.0.1.1"],"default":"dev.cdevents.taskrun.started.0.1.1"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["taskRun"],"default":"taskRun"},"content":{"properties":{"taskName":{"type":"string"},"url":{"type":"string"},"pipelineRun":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object"}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TaskRunStarted event type v0.1.1
@@ -36,7 +35,7 @@ var (
}
)
-type TaskRunStartedSubjectContent struct {
+type TaskRunStartedSubjectContentV0_1_1 struct {
PipelineRun *Reference `json:"pipelineRun,omitempty"`
TaskName string `json:"taskName,omitempty"`
@@ -44,18 +43,18 @@ type TaskRunStartedSubjectContent struct {
Url string `json:"url,omitempty"`
}
-type TaskRunStartedSubject struct {
+type TaskRunStartedSubjectV0_1_1 struct {
SubjectBase
- Content TaskRunStartedSubjectContent `json:"content"`
+ Content TaskRunStartedSubjectContentV0_1_1 `json:"content"`
}
-func (sc TaskRunStartedSubject) GetSubjectType() SubjectType {
+func (sc TaskRunStartedSubjectV0_1_1) GetSubjectType() SubjectType {
return "taskRun"
}
type TaskRunStartedEventV0_1_1 struct {
- Context Context `json:"context"`
- Subject TaskRunStartedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TaskRunStartedSubjectV0_1_1 `json:"subject"`
CDEventCustomData
}
@@ -145,9 +144,9 @@ func (e *TaskRunStartedEventV0_1_1) SetCustomData(contentType string, data inter
return nil
}
-func (e TaskRunStartedEventV0_1_1) GetSchema() (string, string) {
+func (e TaskRunStartedEventV0_1_1) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), taskrunstartedschema0_1_1
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -171,7 +170,7 @@ func NewTaskRunStartedEventV0_1_1(specVersion string) (*TaskRunStartedEventV0_1_
Type: TaskRunStartedEventTypeV0_1_1,
Version: specVersion,
},
- Subject: TaskRunStartedSubject{
+ Subject: TaskRunStartedSubjectV0_1_1{
SubjectBase: SubjectBase{
Type: "taskRun",
},
diff --git a/pkg/api/zz_taskrunstarted_0_2_0.go b/pkg/api/zz_taskrunstarted_0_2_0.go
new file mode 100644
index 0000000..5df39c7
--- /dev/null
+++ b/pkg/api/zz_taskrunstarted_0_2_0.go
@@ -0,0 +1,216 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TaskRunStarted event type v0.2.0
+ TaskRunStartedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "taskrun",
+ Predicate: "started",
+ Version: "0.2.0",
+ }
+)
+
+type TaskRunStartedSubjectContentV0_2_0 struct {
+ PipelineRun *Reference `json:"pipelineRun,omitempty"`
+
+ TaskName string `json:"taskName,omitempty"`
+
+ Url string `json:"url,omitempty"`
+}
+
+type TaskRunStartedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TaskRunStartedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TaskRunStartedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "taskRun"
+}
+
+type TaskRunStartedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TaskRunStartedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TaskRunStartedEventV0_2_0) GetType() CDEventType {
+ return TaskRunStartedEventTypeV0_2_0
+}
+
+func (e TaskRunStartedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TaskRunStartedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TaskRunStartedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TaskRunStartedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TaskRunStartedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TaskRunStartedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TaskRunStartedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TaskRunStartedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TaskRunStartedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TaskRunStartedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TaskRunStartedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TaskRunStartedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TaskRunStartedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TaskRunStartedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TaskRunStartedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TaskRunStartedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TaskRunStartedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TaskRunStartedEventV0_2_0) SetSubjectPipelineRun(pipelineRun *Reference) {
+ e.Subject.Content.PipelineRun = pipelineRun
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetSubjectTaskName(taskName string) {
+ e.Subject.Content.TaskName = taskName
+}
+
+func (e *TaskRunStartedEventV0_2_0) SetSubjectUrl(url string) {
+ e.Subject.Content.Url = url
+}
+
+// New creates a new TaskRunStartedEventV0_2_0
+func NewTaskRunStartedEventV0_2_0(specVersion string) (*TaskRunStartedEventV0_2_0, error) {
+ e := &TaskRunStartedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TaskRunStartedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TaskRunStartedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "taskRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_testcaserunfinished_0_1_0.go b/pkg/api/zz_testcaserunfinished_0_1_0.go
index 24b29ea..43bd44b 100644
--- a/pkg/api/zz_testcaserunfinished_0_1_0.go
+++ b/pkg/api/zz_testcaserunfinished_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var testcaserunfinishedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/test-case-run-finished-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"type":{"type":"string","enum":["dev.cdevents.testcaserun.finished.0.1.0"],"default":"dev.cdevents.testcaserun.finished.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"},"type":{"type":"string","minLength":1,"enum":["testCaseRun"],"default":"testCaseRun"},"content":{"properties":{"outcome":{"type":"string","enum":["pass","fail","cancel","error"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"reason":{"type":"string"},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"testSuiteRun":{"type":"object","properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"}},"additionalProperties":false,"required":["id"]},"testCase":{"type":"object","additionalProperties":false,"required":["id"],"properties":{"id":{"type":"string","minLength":1},"version":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["performance","functional","unit","security","compliance","integration","e2e","other"]},"uri":{"type":"string","format":"uri"}}}},"additionalProperties":false,"type":"object","required":["outcome","environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TestCaseRunFinished event type v0.1.0
@@ -36,7 +35,7 @@ var (
}
)
-type TestCaseRunFinishedSubjectContent struct {
+type TestCaseRunFinishedSubjectContentV0_1_0 struct {
Environment *Reference `json:"environment"`
Outcome string `json:"outcome"`
@@ -45,23 +44,23 @@ type TestCaseRunFinishedSubjectContent struct {
Severity string `json:"severity,omitempty"`
- TestCase *TestCaseRunFinishedSubjectContentTestCase `json:"testCase,omitempty"`
+ TestCase *TestCaseRunFinishedSubjectContentTestCaseV0_1_0 `json:"testCase,omitempty"`
TestSuiteRun *Reference `json:"testSuiteRun,omitempty"`
}
-type TestCaseRunFinishedSubject struct {
+type TestCaseRunFinishedSubjectV0_1_0 struct {
SubjectBase
- Content TestCaseRunFinishedSubjectContent `json:"content"`
+ Content TestCaseRunFinishedSubjectContentV0_1_0 `json:"content"`
}
-func (sc TestCaseRunFinishedSubject) GetSubjectType() SubjectType {
+func (sc TestCaseRunFinishedSubjectV0_1_0) GetSubjectType() SubjectType {
return "testCaseRun"
}
type TestCaseRunFinishedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject TestCaseRunFinishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TestCaseRunFinishedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -151,9 +150,9 @@ func (e *TestCaseRunFinishedEventV0_1_0) SetCustomData(contentType string, data
return nil
}
-func (e TestCaseRunFinishedEventV0_1_0) GetSchema() (string, string) {
+func (e TestCaseRunFinishedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), testcaserunfinishedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -174,7 +173,7 @@ func (e *TestCaseRunFinishedEventV0_1_0) SetSubjectSeverity(severity string) {
e.Subject.Content.Severity = severity
}
-func (e *TestCaseRunFinishedEventV0_1_0) SetSubjectTestCase(testCase *TestCaseRunFinishedSubjectContentTestCase) {
+func (e *TestCaseRunFinishedEventV0_1_0) SetSubjectTestCase(testCase *TestCaseRunFinishedSubjectContentTestCaseV0_1_0) {
e.Subject.Content.TestCase = testCase
}
@@ -189,7 +188,7 @@ func NewTestCaseRunFinishedEventV0_1_0(specVersion string) (*TestCaseRunFinished
Type: TestCaseRunFinishedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: TestCaseRunFinishedSubject{
+ Subject: TestCaseRunFinishedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "testCaseRun",
},
@@ -202,8 +201,8 @@ func NewTestCaseRunFinishedEventV0_1_0(specVersion string) (*TestCaseRunFinished
return e, nil
}
-// TestCaseRunFinishedSubjectContentTestCase holds the content of a TestCase field in the content
-type TestCaseRunFinishedSubjectContentTestCase struct {
+// TestCaseRunFinishedSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunFinishedSubjectContentTestCaseV0_1_0 struct {
Id string `json:"id"`
Name string `json:"name,omitempty"`
diff --git a/pkg/api/zz_testcaserunfinished_0_2_0.go b/pkg/api/zz_testcaserunfinished_0_2_0.go
new file mode 100644
index 0000000..2232257
--- /dev/null
+++ b/pkg/api/zz_testcaserunfinished_0_2_0.go
@@ -0,0 +1,247 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestCaseRunFinished event type v0.2.0
+ TestCaseRunFinishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "testcaserun",
+ Predicate: "finished",
+ Version: "0.2.0",
+ }
+)
+
+type TestCaseRunFinishedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment"`
+
+ Outcome string `json:"outcome"`
+
+ Reason string `json:"reason,omitempty"`
+
+ Severity string `json:"severity,omitempty"`
+
+ TestCase *TestCaseRunFinishedSubjectContentTestCaseV0_2_0 `json:"testCase,omitempty"`
+
+ TestSuiteRun *Reference `json:"testSuiteRun,omitempty"`
+}
+
+type TestCaseRunFinishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TestCaseRunFinishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TestCaseRunFinishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "testCaseRun"
+}
+
+type TestCaseRunFinishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestCaseRunFinishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestCaseRunFinishedEventV0_2_0) GetType() CDEventType {
+ return TestCaseRunFinishedEventTypeV0_2_0
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestCaseRunFinishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestCaseRunFinishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectOutcome(outcome string) {
+ e.Subject.Content.Outcome = outcome
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectReason(reason string) {
+ e.Subject.Content.Reason = reason
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectSeverity(severity string) {
+ e.Subject.Content.Severity = severity
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectTestCase(testCase *TestCaseRunFinishedSubjectContentTestCaseV0_2_0) {
+ e.Subject.Content.TestCase = testCase
+}
+
+func (e *TestCaseRunFinishedEventV0_2_0) SetSubjectTestSuiteRun(testSuiteRun *Reference) {
+ e.Subject.Content.TestSuiteRun = testSuiteRun
+}
+
+// New creates a new TestCaseRunFinishedEventV0_2_0
+func NewTestCaseRunFinishedEventV0_2_0(specVersion string) (*TestCaseRunFinishedEventV0_2_0, error) {
+ e := &TestCaseRunFinishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TestCaseRunFinishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestCaseRunFinishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// TestCaseRunFinishedSubjectContentTestCaseV0_2_0 holds the content of a TestCase field in the content
+type TestCaseRunFinishedSubjectContentTestCaseV0_2_0 struct {
+ Id string `json:"id"`
+
+ Name string `json:"name,omitempty"`
+
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+
+ Version string `json:"version,omitempty"`
+}
diff --git a/pkg/api/zz_testcaserunqueued_0_1_0.go b/pkg/api/zz_testcaserunqueued_0_1_0.go
index 836ab71..70a564a 100644
--- a/pkg/api/zz_testcaserunqueued_0_1_0.go
+++ b/pkg/api/zz_testcaserunqueued_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var testcaserunqueuedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/test-case-run-queued-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"type":{"type":"string","enum":["dev.cdevents.testcaserun.queued.0.1.0"],"default":"dev.cdevents.testcaserun.queued.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"},"type":{"type":"string","minLength":1,"enum":["testCaseRun"],"default":"testCaseRun"},"content":{"properties":{"trigger":{"type":"object","properties":{"type":{"type":"string","enum":["manual","pipeline","event","schedule","other"]},"uri":{"type":"string","format":"uri"}}},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"testSuiteRun":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"}},"additionalProperties":false,"type":"object","required":["id"]},"testCase":{"type":"object","additionalProperties":false,"required":["id"],"properties":{"id":{"type":"string","minLength":1},"version":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["performance","functional","unit","security","compliance","integration","e2e","other"]},"uri":{"type":"string","format":"uri"}}}},"additionalProperties":false,"type":"object","required":["environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TestCaseRunQueued event type v0.1.0
@@ -36,28 +35,28 @@ var (
}
)
-type TestCaseRunQueuedSubjectContent struct {
+type TestCaseRunQueuedSubjectContentV0_1_0 struct {
Environment *Reference `json:"environment"`
- TestCase *TestCaseRunQueuedSubjectContentTestCase `json:"testCase,omitempty"`
+ TestCase *TestCaseRunQueuedSubjectContentTestCaseV0_1_0 `json:"testCase,omitempty"`
TestSuiteRun *Reference `json:"testSuiteRun,omitempty"`
- Trigger *TestCaseRunQueuedSubjectContentTrigger `json:"trigger,omitempty"`
+ Trigger *TestCaseRunQueuedSubjectContentTriggerV0_1_0 `json:"trigger,omitempty"`
}
-type TestCaseRunQueuedSubject struct {
+type TestCaseRunQueuedSubjectV0_1_0 struct {
SubjectBase
- Content TestCaseRunQueuedSubjectContent `json:"content"`
+ Content TestCaseRunQueuedSubjectContentV0_1_0 `json:"content"`
}
-func (sc TestCaseRunQueuedSubject) GetSubjectType() SubjectType {
+func (sc TestCaseRunQueuedSubjectV0_1_0) GetSubjectType() SubjectType {
return "testCaseRun"
}
type TestCaseRunQueuedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject TestCaseRunQueuedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TestCaseRunQueuedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *TestCaseRunQueuedEventV0_1_0) SetCustomData(contentType string, data in
return nil
}
-func (e TestCaseRunQueuedEventV0_1_0) GetSchema() (string, string) {
+func (e TestCaseRunQueuedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), testcaserunqueuedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -158,7 +157,7 @@ func (e *TestCaseRunQueuedEventV0_1_0) SetSubjectEnvironment(environment *Refere
e.Subject.Content.Environment = environment
}
-func (e *TestCaseRunQueuedEventV0_1_0) SetSubjectTestCase(testCase *TestCaseRunQueuedSubjectContentTestCase) {
+func (e *TestCaseRunQueuedEventV0_1_0) SetSubjectTestCase(testCase *TestCaseRunQueuedSubjectContentTestCaseV0_1_0) {
e.Subject.Content.TestCase = testCase
}
@@ -166,7 +165,7 @@ func (e *TestCaseRunQueuedEventV0_1_0) SetSubjectTestSuiteRun(testSuiteRun *Refe
e.Subject.Content.TestSuiteRun = testSuiteRun
}
-func (e *TestCaseRunQueuedEventV0_1_0) SetSubjectTrigger(trigger *TestCaseRunQueuedSubjectContentTrigger) {
+func (e *TestCaseRunQueuedEventV0_1_0) SetSubjectTrigger(trigger *TestCaseRunQueuedSubjectContentTriggerV0_1_0) {
e.Subject.Content.Trigger = trigger
}
@@ -177,7 +176,7 @@ func NewTestCaseRunQueuedEventV0_1_0(specVersion string) (*TestCaseRunQueuedEven
Type: TestCaseRunQueuedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: TestCaseRunQueuedSubject{
+ Subject: TestCaseRunQueuedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "testCaseRun",
},
@@ -190,8 +189,8 @@ func NewTestCaseRunQueuedEventV0_1_0(specVersion string) (*TestCaseRunQueuedEven
return e, nil
}
-// TestCaseRunQueuedSubjectContentTestCase holds the content of a TestCase field in the content
-type TestCaseRunQueuedSubjectContentTestCase struct {
+// TestCaseRunQueuedSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunQueuedSubjectContentTestCaseV0_1_0 struct {
Id string `json:"id"`
Name string `json:"name,omitempty"`
@@ -203,8 +202,8 @@ type TestCaseRunQueuedSubjectContentTestCase struct {
Version string `json:"version,omitempty"`
}
-// TestCaseRunQueuedSubjectContentTrigger holds the content of a Trigger field in the content
-type TestCaseRunQueuedSubjectContentTrigger struct {
+// TestCaseRunQueuedSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestCaseRunQueuedSubjectContentTriggerV0_1_0 struct {
Type string `json:"type,omitempty"`
Uri string `json:"uri,omitempty"`
diff --git a/pkg/api/zz_testcaserunqueued_0_2_0.go b/pkg/api/zz_testcaserunqueued_0_2_0.go
new file mode 100644
index 0000000..fe5d978
--- /dev/null
+++ b/pkg/api/zz_testcaserunqueued_0_2_0.go
@@ -0,0 +1,242 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestCaseRunQueued event type v0.2.0
+ TestCaseRunQueuedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "testcaserun",
+ Predicate: "queued",
+ Version: "0.2.0",
+ }
+)
+
+type TestCaseRunQueuedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment"`
+
+ TestCase *TestCaseRunQueuedSubjectContentTestCaseV0_2_0 `json:"testCase,omitempty"`
+
+ TestSuiteRun *Reference `json:"testSuiteRun,omitempty"`
+
+ Trigger *TestCaseRunQueuedSubjectContentTriggerV0_2_0 `json:"trigger,omitempty"`
+}
+
+type TestCaseRunQueuedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TestCaseRunQueuedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TestCaseRunQueuedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "testCaseRun"
+}
+
+type TestCaseRunQueuedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestCaseRunQueuedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestCaseRunQueuedEventV0_2_0) GetType() CDEventType {
+ return TestCaseRunQueuedEventTypeV0_2_0
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestCaseRunQueuedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestCaseRunQueuedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSubjectTestCase(testCase *TestCaseRunQueuedSubjectContentTestCaseV0_2_0) {
+ e.Subject.Content.TestCase = testCase
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSubjectTestSuiteRun(testSuiteRun *Reference) {
+ e.Subject.Content.TestSuiteRun = testSuiteRun
+}
+
+func (e *TestCaseRunQueuedEventV0_2_0) SetSubjectTrigger(trigger *TestCaseRunQueuedSubjectContentTriggerV0_2_0) {
+ e.Subject.Content.Trigger = trigger
+}
+
+// New creates a new TestCaseRunQueuedEventV0_2_0
+func NewTestCaseRunQueuedEventV0_2_0(specVersion string) (*TestCaseRunQueuedEventV0_2_0, error) {
+ e := &TestCaseRunQueuedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TestCaseRunQueuedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestCaseRunQueuedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// TestCaseRunQueuedSubjectContentTestCaseV0_2_0 holds the content of a TestCase field in the content
+type TestCaseRunQueuedSubjectContentTestCaseV0_2_0 struct {
+ Id string `json:"id"`
+
+ Name string `json:"name,omitempty"`
+
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+
+ Version string `json:"version,omitempty"`
+}
+
+// TestCaseRunQueuedSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestCaseRunQueuedSubjectContentTriggerV0_2_0 struct {
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+}
diff --git a/pkg/api/zz_testcaserunskipped_0_1_0.go b/pkg/api/zz_testcaserunskipped_0_1_0.go
new file mode 100644
index 0000000..166f349
--- /dev/null
+++ b/pkg/api/zz_testcaserunskipped_0_1_0.go
@@ -0,0 +1,235 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestCaseRunSkipped event type v0.1.0
+ TestCaseRunSkippedEventTypeV0_1_0 CDEventType = CDEventType{
+ Subject: "testcaserun",
+ Predicate: "skipped",
+ Version: "0.1.0",
+ }
+)
+
+type TestCaseRunSkippedSubjectContentV0_1_0 struct {
+ Environment *Reference `json:"environment,omitempty"`
+
+ Reason string `json:"reason,omitempty"`
+
+ TestCase *TestCaseRunSkippedSubjectContentTestCaseV0_1_0 `json:"testCase,omitempty"`
+
+ TestSuiteRun *Reference `json:"testSuiteRun,omitempty"`
+}
+
+type TestCaseRunSkippedSubjectV0_1_0 struct {
+ SubjectBase
+ Content TestCaseRunSkippedSubjectContentV0_1_0 `json:"content"`
+}
+
+func (sc TestCaseRunSkippedSubjectV0_1_0) GetSubjectType() SubjectType {
+ return "testCaseRun"
+}
+
+type TestCaseRunSkippedEventV0_1_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestCaseRunSkippedSubjectV0_1_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestCaseRunSkippedEventV0_1_0) GetType() CDEventType {
+ return TestCaseRunSkippedEventTypeV0_1_0
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestCaseRunSkippedEventV0_1_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestCaseRunSkippedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSubjectReason(reason string) {
+ e.Subject.Content.Reason = reason
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSubjectTestCase(testCase *TestCaseRunSkippedSubjectContentTestCaseV0_1_0) {
+ e.Subject.Content.TestCase = testCase
+}
+
+func (e *TestCaseRunSkippedEventV0_1_0) SetSubjectTestSuiteRun(testSuiteRun *Reference) {
+ e.Subject.Content.TestSuiteRun = testSuiteRun
+}
+
+// New creates a new TestCaseRunSkippedEventV0_1_0
+func NewTestCaseRunSkippedEventV0_1_0(specVersion string) (*TestCaseRunSkippedEventV0_1_0, error) {
+ e := &TestCaseRunSkippedEventV0_1_0{
+ Context: ContextV04{
+ Context{
+ Type: TestCaseRunSkippedEventTypeV0_1_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestCaseRunSkippedSubjectV0_1_0{
+ SubjectBase: SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// TestCaseRunSkippedSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunSkippedSubjectContentTestCaseV0_1_0 struct {
+ Id string `json:"id"`
+
+ Name string `json:"name,omitempty"`
+
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+
+ Version string `json:"version,omitempty"`
+}
diff --git a/pkg/api/zz_testcaserunstarted_0_1_0.go b/pkg/api/zz_testcaserunstarted_0_1_0.go
index f559615..d0e748f 100644
--- a/pkg/api/zz_testcaserunstarted_0_1_0.go
+++ b/pkg/api/zz_testcaserunstarted_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var testcaserunstartedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/test-case-run-started-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"type":{"type":"string","enum":["dev.cdevents.testcaserun.started.0.1.0"],"default":"dev.cdevents.testcaserun.started.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"},"type":{"type":"string","minLength":1,"enum":["testCaseRun"],"default":"testCaseRun"},"content":{"properties":{"trigger":{"type":"object","properties":{"type":{"type":"string","enum":["manual","pipeline","event","schedule","other"]},"uri":{"type":"string","format":"uri"}}},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"testSuiteRun":{"type":"object","properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"}},"additionalProperties":false,"required":["id"]},"testCase":{"properties":{"id":{"type":"string","minLength":1},"version":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["performance","functional","unit","security","compliance","integration","e2e","other"]},"uri":{"type":"string","format":"uri"}},"additionalProperties":false,"type":"object","required":["id"]}},"additionalProperties":false,"type":"object","required":["environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TestCaseRunStarted event type v0.1.0
@@ -36,28 +35,28 @@ var (
}
)
-type TestCaseRunStartedSubjectContent struct {
+type TestCaseRunStartedSubjectContentV0_1_0 struct {
Environment *Reference `json:"environment"`
- TestCase *TestCaseRunStartedSubjectContentTestCase `json:"testCase,omitempty"`
+ TestCase *TestCaseRunStartedSubjectContentTestCaseV0_1_0 `json:"testCase,omitempty"`
TestSuiteRun *Reference `json:"testSuiteRun,omitempty"`
- Trigger *TestCaseRunStartedSubjectContentTrigger `json:"trigger,omitempty"`
+ Trigger *TestCaseRunStartedSubjectContentTriggerV0_1_0 `json:"trigger,omitempty"`
}
-type TestCaseRunStartedSubject struct {
+type TestCaseRunStartedSubjectV0_1_0 struct {
SubjectBase
- Content TestCaseRunStartedSubjectContent `json:"content"`
+ Content TestCaseRunStartedSubjectContentV0_1_0 `json:"content"`
}
-func (sc TestCaseRunStartedSubject) GetSubjectType() SubjectType {
+func (sc TestCaseRunStartedSubjectV0_1_0) GetSubjectType() SubjectType {
return "testCaseRun"
}
type TestCaseRunStartedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject TestCaseRunStartedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TestCaseRunStartedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *TestCaseRunStartedEventV0_1_0) SetCustomData(contentType string, data i
return nil
}
-func (e TestCaseRunStartedEventV0_1_0) GetSchema() (string, string) {
+func (e TestCaseRunStartedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), testcaserunstartedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -158,7 +157,7 @@ func (e *TestCaseRunStartedEventV0_1_0) SetSubjectEnvironment(environment *Refer
e.Subject.Content.Environment = environment
}
-func (e *TestCaseRunStartedEventV0_1_0) SetSubjectTestCase(testCase *TestCaseRunStartedSubjectContentTestCase) {
+func (e *TestCaseRunStartedEventV0_1_0) SetSubjectTestCase(testCase *TestCaseRunStartedSubjectContentTestCaseV0_1_0) {
e.Subject.Content.TestCase = testCase
}
@@ -166,7 +165,7 @@ func (e *TestCaseRunStartedEventV0_1_0) SetSubjectTestSuiteRun(testSuiteRun *Ref
e.Subject.Content.TestSuiteRun = testSuiteRun
}
-func (e *TestCaseRunStartedEventV0_1_0) SetSubjectTrigger(trigger *TestCaseRunStartedSubjectContentTrigger) {
+func (e *TestCaseRunStartedEventV0_1_0) SetSubjectTrigger(trigger *TestCaseRunStartedSubjectContentTriggerV0_1_0) {
e.Subject.Content.Trigger = trigger
}
@@ -177,7 +176,7 @@ func NewTestCaseRunStartedEventV0_1_0(specVersion string) (*TestCaseRunStartedEv
Type: TestCaseRunStartedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: TestCaseRunStartedSubject{
+ Subject: TestCaseRunStartedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "testCaseRun",
},
@@ -190,8 +189,8 @@ func NewTestCaseRunStartedEventV0_1_0(specVersion string) (*TestCaseRunStartedEv
return e, nil
}
-// TestCaseRunStartedSubjectContentTestCase holds the content of a TestCase field in the content
-type TestCaseRunStartedSubjectContentTestCase struct {
+// TestCaseRunStartedSubjectContentTestCaseV0_1_0 holds the content of a TestCase field in the content
+type TestCaseRunStartedSubjectContentTestCaseV0_1_0 struct {
Id string `json:"id"`
Name string `json:"name,omitempty"`
@@ -203,8 +202,8 @@ type TestCaseRunStartedSubjectContentTestCase struct {
Version string `json:"version,omitempty"`
}
-// TestCaseRunStartedSubjectContentTrigger holds the content of a Trigger field in the content
-type TestCaseRunStartedSubjectContentTrigger struct {
+// TestCaseRunStartedSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestCaseRunStartedSubjectContentTriggerV0_1_0 struct {
Type string `json:"type,omitempty"`
Uri string `json:"uri,omitempty"`
diff --git a/pkg/api/zz_testcaserunstarted_0_2_0.go b/pkg/api/zz_testcaserunstarted_0_2_0.go
new file mode 100644
index 0000000..87832fe
--- /dev/null
+++ b/pkg/api/zz_testcaserunstarted_0_2_0.go
@@ -0,0 +1,242 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestCaseRunStarted event type v0.2.0
+ TestCaseRunStartedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "testcaserun",
+ Predicate: "started",
+ Version: "0.2.0",
+ }
+)
+
+type TestCaseRunStartedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment"`
+
+ TestCase *TestCaseRunStartedSubjectContentTestCaseV0_2_0 `json:"testCase,omitempty"`
+
+ TestSuiteRun *Reference `json:"testSuiteRun,omitempty"`
+
+ Trigger *TestCaseRunStartedSubjectContentTriggerV0_2_0 `json:"trigger,omitempty"`
+}
+
+type TestCaseRunStartedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TestCaseRunStartedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TestCaseRunStartedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "testCaseRun"
+}
+
+type TestCaseRunStartedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestCaseRunStartedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestCaseRunStartedEventV0_2_0) GetType() CDEventType {
+ return TestCaseRunStartedEventTypeV0_2_0
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestCaseRunStartedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestCaseRunStartedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestCaseRunStartedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestCaseRunStartedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSubjectTestCase(testCase *TestCaseRunStartedSubjectContentTestCaseV0_2_0) {
+ e.Subject.Content.TestCase = testCase
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSubjectTestSuiteRun(testSuiteRun *Reference) {
+ e.Subject.Content.TestSuiteRun = testSuiteRun
+}
+
+func (e *TestCaseRunStartedEventV0_2_0) SetSubjectTrigger(trigger *TestCaseRunStartedSubjectContentTriggerV0_2_0) {
+ e.Subject.Content.Trigger = trigger
+}
+
+// New creates a new TestCaseRunStartedEventV0_2_0
+func NewTestCaseRunStartedEventV0_2_0(specVersion string) (*TestCaseRunStartedEventV0_2_0, error) {
+ e := &TestCaseRunStartedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TestCaseRunStartedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestCaseRunStartedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "testCaseRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// TestCaseRunStartedSubjectContentTestCaseV0_2_0 holds the content of a TestCase field in the content
+type TestCaseRunStartedSubjectContentTestCaseV0_2_0 struct {
+ Id string `json:"id"`
+
+ Name string `json:"name,omitempty"`
+
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+
+ Version string `json:"version,omitempty"`
+}
+
+// TestCaseRunStartedSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestCaseRunStartedSubjectContentTriggerV0_2_0 struct {
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+}
diff --git a/pkg/api/zz_testoutputpublished_0_1_0.go b/pkg/api/zz_testoutputpublished_0_1_0.go
index f1c0f24..1ba1f8a 100644
--- a/pkg/api/zz_testoutputpublished_0_1_0.go
+++ b/pkg/api/zz_testoutputpublished_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var testoutputpublishedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/test-output-published-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"type":{"type":"string","enum":["dev.cdevents.testoutput.published.0.1.0"],"default":"dev.cdevents.testoutput.published.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"},"type":{"type":"string","minLength":1,"enum":["testOutput"],"default":"testOutput"},"content":{"properties":{"outputType":{"type":"string","enum":["report","video","image","log","other"]},"format":{"type":"string","example":"application/pdf"},"uri":{"type":"string","format":"uri"},"testCaseRun":{"type":"object","properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"}},"additionalProperties":false,"required":["id"]}},"additionalProperties":false,"type":"object","required":["outputType","format"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TestOutputPublished event type v0.1.0
@@ -36,7 +35,7 @@ var (
}
)
-type TestOutputPublishedSubjectContent struct {
+type TestOutputPublishedSubjectContentV0_1_0 struct {
Format string `json:"format"`
OutputType string `json:"outputType"`
@@ -46,18 +45,18 @@ type TestOutputPublishedSubjectContent struct {
Uri string `json:"uri,omitempty"`
}
-type TestOutputPublishedSubject struct {
+type TestOutputPublishedSubjectV0_1_0 struct {
SubjectBase
- Content TestOutputPublishedSubjectContent `json:"content"`
+ Content TestOutputPublishedSubjectContentV0_1_0 `json:"content"`
}
-func (sc TestOutputPublishedSubject) GetSubjectType() SubjectType {
+func (sc TestOutputPublishedSubjectV0_1_0) GetSubjectType() SubjectType {
return "testOutput"
}
type TestOutputPublishedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject TestOutputPublishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TestOutputPublishedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -147,9 +146,9 @@ func (e *TestOutputPublishedEventV0_1_0) SetCustomData(contentType string, data
return nil
}
-func (e TestOutputPublishedEventV0_1_0) GetSchema() (string, string) {
+func (e TestOutputPublishedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), testoutputpublishedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -177,7 +176,7 @@ func NewTestOutputPublishedEventV0_1_0(specVersion string) (*TestOutputPublished
Type: TestOutputPublishedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: TestOutputPublishedSubject{
+ Subject: TestOutputPublishedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "testOutput",
},
diff --git a/pkg/api/zz_testoutputpublished_0_2_0.go b/pkg/api/zz_testoutputpublished_0_2_0.go
new file mode 100644
index 0000000..d508352
--- /dev/null
+++ b/pkg/api/zz_testoutputpublished_0_2_0.go
@@ -0,0 +1,222 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestOutputPublished event type v0.2.0
+ TestOutputPublishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "testoutput",
+ Predicate: "published",
+ Version: "0.2.0",
+ }
+)
+
+type TestOutputPublishedSubjectContentV0_2_0 struct {
+ Format string `json:"format"`
+
+ OutputType string `json:"outputType"`
+
+ TestCaseRun *Reference `json:"testCaseRun,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+}
+
+type TestOutputPublishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TestOutputPublishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TestOutputPublishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "testOutput"
+}
+
+type TestOutputPublishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestOutputPublishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestOutputPublishedEventV0_2_0) GetType() CDEventType {
+ return TestOutputPublishedEventTypeV0_2_0
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestOutputPublishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestOutputPublishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestOutputPublishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestOutputPublishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestOutputPublishedEventV0_2_0) SetSubjectFormat(format string) {
+ e.Subject.Content.Format = format
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetSubjectOutputType(outputType string) {
+ e.Subject.Content.OutputType = outputType
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetSubjectTestCaseRun(testCaseRun *Reference) {
+ e.Subject.Content.TestCaseRun = testCaseRun
+}
+
+func (e *TestOutputPublishedEventV0_2_0) SetSubjectUri(uri string) {
+ e.Subject.Content.Uri = uri
+}
+
+// New creates a new TestOutputPublishedEventV0_2_0
+func NewTestOutputPublishedEventV0_2_0(specVersion string) (*TestOutputPublishedEventV0_2_0, error) {
+ e := &TestOutputPublishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TestOutputPublishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestOutputPublishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "testOutput",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_testsuiterunfinished_0_1_0.go b/pkg/api/zz_testsuiterunfinished_0_1_0.go
index 73f1716..aea7ea5 100644
--- a/pkg/api/zz_testsuiterunfinished_0_1_0.go
+++ b/pkg/api/zz_testsuiterunfinished_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var testsuiterunfinishedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/test-suite-finished-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"type":{"type":"string","enum":["dev.cdevents.testsuiterun.finished.0.1.0"],"default":"dev.cdevents.testsuiterun.finished.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"},"type":{"type":"string","minLength":1,"enum":["testSuiteRun"],"default":"testSuiteRun"},"content":{"properties":{"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"testSuite":{"type":"object","additionalProperties":false,"required":["id"],"properties":{"id":{"type":"string","minLength":1},"version":{"type":"string"},"name":{"type":"string"},"uri":{"type":"string","format":"uri"}}},"outcome":{"type":"string","enum":["pass","fail","cancel","error"]},"severity":{"type":"string","enum":["low","medium","high","critical"]},"reason":{"type":"string"}},"additionalProperties":false,"type":"object","required":["outcome","environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TestSuiteRunFinished event type v0.1.0
@@ -36,7 +35,7 @@ var (
}
)
-type TestSuiteRunFinishedSubjectContent struct {
+type TestSuiteRunFinishedSubjectContentV0_1_0 struct {
Environment *Reference `json:"environment"`
Outcome string `json:"outcome"`
@@ -45,21 +44,21 @@ type TestSuiteRunFinishedSubjectContent struct {
Severity string `json:"severity,omitempty"`
- TestSuite *TestSuiteRunFinishedSubjectContentTestSuite `json:"testSuite,omitempty"`
+ TestSuite *TestSuiteRunFinishedSubjectContentTestSuiteV0_1_0 `json:"testSuite,omitempty"`
}
-type TestSuiteRunFinishedSubject struct {
+type TestSuiteRunFinishedSubjectV0_1_0 struct {
SubjectBase
- Content TestSuiteRunFinishedSubjectContent `json:"content"`
+ Content TestSuiteRunFinishedSubjectContentV0_1_0 `json:"content"`
}
-func (sc TestSuiteRunFinishedSubject) GetSubjectType() SubjectType {
+func (sc TestSuiteRunFinishedSubjectV0_1_0) GetSubjectType() SubjectType {
return "testSuiteRun"
}
type TestSuiteRunFinishedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject TestSuiteRunFinishedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TestSuiteRunFinishedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -149,9 +148,9 @@ func (e *TestSuiteRunFinishedEventV0_1_0) SetCustomData(contentType string, data
return nil
}
-func (e TestSuiteRunFinishedEventV0_1_0) GetSchema() (string, string) {
+func (e TestSuiteRunFinishedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), testsuiterunfinishedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -172,7 +171,7 @@ func (e *TestSuiteRunFinishedEventV0_1_0) SetSubjectSeverity(severity string) {
e.Subject.Content.Severity = severity
}
-func (e *TestSuiteRunFinishedEventV0_1_0) SetSubjectTestSuite(testSuite *TestSuiteRunFinishedSubjectContentTestSuite) {
+func (e *TestSuiteRunFinishedEventV0_1_0) SetSubjectTestSuite(testSuite *TestSuiteRunFinishedSubjectContentTestSuiteV0_1_0) {
e.Subject.Content.TestSuite = testSuite
}
@@ -183,7 +182,7 @@ func NewTestSuiteRunFinishedEventV0_1_0(specVersion string) (*TestSuiteRunFinish
Type: TestSuiteRunFinishedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: TestSuiteRunFinishedSubject{
+ Subject: TestSuiteRunFinishedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "testSuiteRun",
},
@@ -196,8 +195,8 @@ func NewTestSuiteRunFinishedEventV0_1_0(specVersion string) (*TestSuiteRunFinish
return e, nil
}
-// TestSuiteRunFinishedSubjectContentTestSuite holds the content of a TestSuite field in the content
-type TestSuiteRunFinishedSubjectContentTestSuite struct {
+// TestSuiteRunFinishedSubjectContentTestSuiteV0_1_0 holds the content of a TestSuite field in the content
+type TestSuiteRunFinishedSubjectContentTestSuiteV0_1_0 struct {
Id string `json:"id"`
Name string `json:"name,omitempty"`
diff --git a/pkg/api/zz_testsuiterunfinished_0_2_0.go b/pkg/api/zz_testsuiterunfinished_0_2_0.go
new file mode 100644
index 0000000..70ed2e2
--- /dev/null
+++ b/pkg/api/zz_testsuiterunfinished_0_2_0.go
@@ -0,0 +1,239 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestSuiteRunFinished event type v0.2.0
+ TestSuiteRunFinishedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "testsuiterun",
+ Predicate: "finished",
+ Version: "0.2.0",
+ }
+)
+
+type TestSuiteRunFinishedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment"`
+
+ Outcome string `json:"outcome"`
+
+ Reason string `json:"reason,omitempty"`
+
+ Severity string `json:"severity,omitempty"`
+
+ TestSuite *TestSuiteRunFinishedSubjectContentTestSuiteV0_2_0 `json:"testSuite,omitempty"`
+}
+
+type TestSuiteRunFinishedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TestSuiteRunFinishedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TestSuiteRunFinishedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "testSuiteRun"
+}
+
+type TestSuiteRunFinishedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestSuiteRunFinishedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetType() CDEventType {
+ return TestSuiteRunFinishedEventTypeV0_2_0
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestSuiteRunFinishedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSubjectOutcome(outcome string) {
+ e.Subject.Content.Outcome = outcome
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSubjectReason(reason string) {
+ e.Subject.Content.Reason = reason
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSubjectSeverity(severity string) {
+ e.Subject.Content.Severity = severity
+}
+
+func (e *TestSuiteRunFinishedEventV0_2_0) SetSubjectTestSuite(testSuite *TestSuiteRunFinishedSubjectContentTestSuiteV0_2_0) {
+ e.Subject.Content.TestSuite = testSuite
+}
+
+// New creates a new TestSuiteRunFinishedEventV0_2_0
+func NewTestSuiteRunFinishedEventV0_2_0(specVersion string) (*TestSuiteRunFinishedEventV0_2_0, error) {
+ e := &TestSuiteRunFinishedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TestSuiteRunFinishedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestSuiteRunFinishedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "testSuiteRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// TestSuiteRunFinishedSubjectContentTestSuiteV0_2_0 holds the content of a TestSuite field in the content
+type TestSuiteRunFinishedSubjectContentTestSuiteV0_2_0 struct {
+ Id string `json:"id"`
+
+ Name string `json:"name,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+
+ Version string `json:"version,omitempty"`
+}
diff --git a/pkg/api/zz_testsuiterunqueued_0_1_0.go b/pkg/api/zz_testsuiterunqueued_0_1_0.go
index 054a1f2..c1c16a7 100644
--- a/pkg/api/zz_testsuiterunqueued_0_1_0.go
+++ b/pkg/api/zz_testsuiterunqueued_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var testsuiterunqueuedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/test-suite-run-queued-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"type":{"type":"string","enum":["dev.cdevents.testsuiterun.queued.0.1.0"],"default":"dev.cdevents.testsuiterun.queued.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"},"type":{"type":"string","minLength":1,"enum":["testSuiteRun"],"default":"testSuiteRun"},"content":{"properties":{"trigger":{"type":"object","properties":{"type":{"type":"string","enum":["manual","pipeline","event","schedule","other"]},"uri":{"type":"string","format":"uri"}}},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"testSuite":{"type":"object","additionalProperties":false,"required":["id"],"properties":{"id":{"type":"string","minLength":1},"version":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri"}}}},"additionalProperties":false,"type":"object","required":["environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TestSuiteRunQueued event type v0.1.0
@@ -36,26 +35,26 @@ var (
}
)
-type TestSuiteRunQueuedSubjectContent struct {
+type TestSuiteRunQueuedSubjectContentV0_1_0 struct {
Environment *Reference `json:"environment"`
- TestSuite *TestSuiteRunQueuedSubjectContentTestSuite `json:"testSuite,omitempty"`
+ TestSuite *TestSuiteRunQueuedSubjectContentTestSuiteV0_1_0 `json:"testSuite,omitempty"`
- Trigger *TestSuiteRunQueuedSubjectContentTrigger `json:"trigger,omitempty"`
+ Trigger *TestSuiteRunQueuedSubjectContentTriggerV0_1_0 `json:"trigger,omitempty"`
}
-type TestSuiteRunQueuedSubject struct {
+type TestSuiteRunQueuedSubjectV0_1_0 struct {
SubjectBase
- Content TestSuiteRunQueuedSubjectContent `json:"content"`
+ Content TestSuiteRunQueuedSubjectContentV0_1_0 `json:"content"`
}
-func (sc TestSuiteRunQueuedSubject) GetSubjectType() SubjectType {
+func (sc TestSuiteRunQueuedSubjectV0_1_0) GetSubjectType() SubjectType {
return "testSuiteRun"
}
type TestSuiteRunQueuedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject TestSuiteRunQueuedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TestSuiteRunQueuedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -145,9 +144,9 @@ func (e *TestSuiteRunQueuedEventV0_1_0) SetCustomData(contentType string, data i
return nil
}
-func (e TestSuiteRunQueuedEventV0_1_0) GetSchema() (string, string) {
+func (e TestSuiteRunQueuedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), testsuiterunqueuedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -156,11 +155,11 @@ func (e *TestSuiteRunQueuedEventV0_1_0) SetSubjectEnvironment(environment *Refer
e.Subject.Content.Environment = environment
}
-func (e *TestSuiteRunQueuedEventV0_1_0) SetSubjectTestSuite(testSuite *TestSuiteRunQueuedSubjectContentTestSuite) {
+func (e *TestSuiteRunQueuedEventV0_1_0) SetSubjectTestSuite(testSuite *TestSuiteRunQueuedSubjectContentTestSuiteV0_1_0) {
e.Subject.Content.TestSuite = testSuite
}
-func (e *TestSuiteRunQueuedEventV0_1_0) SetSubjectTrigger(trigger *TestSuiteRunQueuedSubjectContentTrigger) {
+func (e *TestSuiteRunQueuedEventV0_1_0) SetSubjectTrigger(trigger *TestSuiteRunQueuedSubjectContentTriggerV0_1_0) {
e.Subject.Content.Trigger = trigger
}
@@ -171,7 +170,7 @@ func NewTestSuiteRunQueuedEventV0_1_0(specVersion string) (*TestSuiteRunQueuedEv
Type: TestSuiteRunQueuedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: TestSuiteRunQueuedSubject{
+ Subject: TestSuiteRunQueuedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "testSuiteRun",
},
@@ -184,8 +183,8 @@ func NewTestSuiteRunQueuedEventV0_1_0(specVersion string) (*TestSuiteRunQueuedEv
return e, nil
}
-// TestSuiteRunQueuedSubjectContentTestSuite holds the content of a TestSuite field in the content
-type TestSuiteRunQueuedSubjectContentTestSuite struct {
+// TestSuiteRunQueuedSubjectContentTestSuiteV0_1_0 holds the content of a TestSuite field in the content
+type TestSuiteRunQueuedSubjectContentTestSuiteV0_1_0 struct {
Id string `json:"id"`
Name string `json:"name,omitempty"`
@@ -195,8 +194,8 @@ type TestSuiteRunQueuedSubjectContentTestSuite struct {
Version string `json:"version,omitempty"`
}
-// TestSuiteRunQueuedSubjectContentTrigger holds the content of a Trigger field in the content
-type TestSuiteRunQueuedSubjectContentTrigger struct {
+// TestSuiteRunQueuedSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestSuiteRunQueuedSubjectContentTriggerV0_1_0 struct {
Type string `json:"type,omitempty"`
Uri string `json:"uri,omitempty"`
diff --git a/pkg/api/zz_testsuiterunqueued_0_2_0.go b/pkg/api/zz_testsuiterunqueued_0_2_0.go
new file mode 100644
index 0000000..50fba0a
--- /dev/null
+++ b/pkg/api/zz_testsuiterunqueued_0_2_0.go
@@ -0,0 +1,234 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestSuiteRunQueued event type v0.2.0
+ TestSuiteRunQueuedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "testsuiterun",
+ Predicate: "queued",
+ Version: "0.2.0",
+ }
+)
+
+type TestSuiteRunQueuedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment"`
+
+ TestSuite *TestSuiteRunQueuedSubjectContentTestSuiteV0_2_0 `json:"testSuite,omitempty"`
+
+ Trigger *TestSuiteRunQueuedSubjectContentTriggerV0_2_0 `json:"trigger,omitempty"`
+}
+
+type TestSuiteRunQueuedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TestSuiteRunQueuedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TestSuiteRunQueuedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "testSuiteRun"
+}
+
+type TestSuiteRunQueuedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestSuiteRunQueuedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetType() CDEventType {
+ return TestSuiteRunQueuedEventTypeV0_2_0
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestSuiteRunQueuedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetSubjectTestSuite(testSuite *TestSuiteRunQueuedSubjectContentTestSuiteV0_2_0) {
+ e.Subject.Content.TestSuite = testSuite
+}
+
+func (e *TestSuiteRunQueuedEventV0_2_0) SetSubjectTrigger(trigger *TestSuiteRunQueuedSubjectContentTriggerV0_2_0) {
+ e.Subject.Content.Trigger = trigger
+}
+
+// New creates a new TestSuiteRunQueuedEventV0_2_0
+func NewTestSuiteRunQueuedEventV0_2_0(specVersion string) (*TestSuiteRunQueuedEventV0_2_0, error) {
+ e := &TestSuiteRunQueuedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TestSuiteRunQueuedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestSuiteRunQueuedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "testSuiteRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// TestSuiteRunQueuedSubjectContentTestSuiteV0_2_0 holds the content of a TestSuite field in the content
+type TestSuiteRunQueuedSubjectContentTestSuiteV0_2_0 struct {
+ Id string `json:"id"`
+
+ Name string `json:"name,omitempty"`
+
+ Url string `json:"url,omitempty"`
+
+ Version string `json:"version,omitempty"`
+}
+
+// TestSuiteRunQueuedSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestSuiteRunQueuedSubjectContentTriggerV0_2_0 struct {
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+}
diff --git a/pkg/api/zz_testsuiterunstarted_0_1_0.go b/pkg/api/zz_testsuiterunstarted_0_1_0.go
index c84d69f..28b3c9b 100644
--- a/pkg/api/zz_testsuiterunstarted_0_1_0.go
+++ b/pkg/api/zz_testsuiterunstarted_0_1_0.go
@@ -21,11 +21,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var testsuiterunstartedschema0_1_0 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/0.3.0/schema/test-suite-run-started-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1},"type":{"type":"string","enum":["dev.cdevents.testsuiterun.started.0.1.0"],"default":"dev.cdevents.testsuiterun.started.0.1.0"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string"},"type":{"type":"string","minLength":1,"enum":["testSuiteRun"],"default":"testSuiteRun"},"content":{"properties":{"trigger":{"type":"object","properties":{"type":{"type":"string","enum":["manual","pipeline","event","schedule","other"]},"uri":{"type":"string","format":"uri"}}},"environment":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"testSuite":{"type":"object","additionalProperties":false,"required":["id"],"properties":{"id":{"type":"string","minLength":1},"version":{"type":"string"},"name":{"type":"string"},"uri":{"type":"string","format":"uri"}}}},"additionalProperties":false,"type":"object","required":["environment"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// TestSuiteRunStarted event type v0.1.0
@@ -36,26 +35,26 @@ var (
}
)
-type TestSuiteRunStartedSubjectContent struct {
+type TestSuiteRunStartedSubjectContentV0_1_0 struct {
Environment *Reference `json:"environment"`
- TestSuite *TestSuiteRunStartedSubjectContentTestSuite `json:"testSuite,omitempty"`
+ TestSuite *TestSuiteRunStartedSubjectContentTestSuiteV0_1_0 `json:"testSuite,omitempty"`
- Trigger *TestSuiteRunStartedSubjectContentTrigger `json:"trigger,omitempty"`
+ Trigger *TestSuiteRunStartedSubjectContentTriggerV0_1_0 `json:"trigger,omitempty"`
}
-type TestSuiteRunStartedSubject struct {
+type TestSuiteRunStartedSubjectV0_1_0 struct {
SubjectBase
- Content TestSuiteRunStartedSubjectContent `json:"content"`
+ Content TestSuiteRunStartedSubjectContentV0_1_0 `json:"content"`
}
-func (sc TestSuiteRunStartedSubject) GetSubjectType() SubjectType {
+func (sc TestSuiteRunStartedSubjectV0_1_0) GetSubjectType() SubjectType {
return "testSuiteRun"
}
type TestSuiteRunStartedEventV0_1_0 struct {
- Context Context `json:"context"`
- Subject TestSuiteRunStartedSubject `json:"subject"`
+ Context Context `json:"context"`
+ Subject TestSuiteRunStartedSubjectV0_1_0 `json:"subject"`
CDEventCustomData
}
@@ -145,9 +144,9 @@ func (e *TestSuiteRunStartedEventV0_1_0) SetCustomData(contentType string, data
return nil
}
-func (e TestSuiteRunStartedEventV0_1_0) GetSchema() (string, string) {
+func (e TestSuiteRunStartedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), testsuiterunstartedschema0_1_0
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.3.0", eType.Subject, eType.Predicate)
}
// Set subject custom fields
@@ -156,11 +155,11 @@ func (e *TestSuiteRunStartedEventV0_1_0) SetSubjectEnvironment(environment *Refe
e.Subject.Content.Environment = environment
}
-func (e *TestSuiteRunStartedEventV0_1_0) SetSubjectTestSuite(testSuite *TestSuiteRunStartedSubjectContentTestSuite) {
+func (e *TestSuiteRunStartedEventV0_1_0) SetSubjectTestSuite(testSuite *TestSuiteRunStartedSubjectContentTestSuiteV0_1_0) {
e.Subject.Content.TestSuite = testSuite
}
-func (e *TestSuiteRunStartedEventV0_1_0) SetSubjectTrigger(trigger *TestSuiteRunStartedSubjectContentTrigger) {
+func (e *TestSuiteRunStartedEventV0_1_0) SetSubjectTrigger(trigger *TestSuiteRunStartedSubjectContentTriggerV0_1_0) {
e.Subject.Content.Trigger = trigger
}
@@ -171,7 +170,7 @@ func NewTestSuiteRunStartedEventV0_1_0(specVersion string) (*TestSuiteRunStarted
Type: TestSuiteRunStartedEventTypeV0_1_0,
Version: specVersion,
},
- Subject: TestSuiteRunStartedSubject{
+ Subject: TestSuiteRunStartedSubjectV0_1_0{
SubjectBase: SubjectBase{
Type: "testSuiteRun",
},
@@ -184,8 +183,8 @@ func NewTestSuiteRunStartedEventV0_1_0(specVersion string) (*TestSuiteRunStarted
return e, nil
}
-// TestSuiteRunStartedSubjectContentTestSuite holds the content of a TestSuite field in the content
-type TestSuiteRunStartedSubjectContentTestSuite struct {
+// TestSuiteRunStartedSubjectContentTestSuiteV0_1_0 holds the content of a TestSuite field in the content
+type TestSuiteRunStartedSubjectContentTestSuiteV0_1_0 struct {
Id string `json:"id"`
Name string `json:"name,omitempty"`
@@ -195,8 +194,8 @@ type TestSuiteRunStartedSubjectContentTestSuite struct {
Version string `json:"version,omitempty"`
}
-// TestSuiteRunStartedSubjectContentTrigger holds the content of a Trigger field in the content
-type TestSuiteRunStartedSubjectContentTrigger struct {
+// TestSuiteRunStartedSubjectContentTriggerV0_1_0 holds the content of a Trigger field in the content
+type TestSuiteRunStartedSubjectContentTriggerV0_1_0 struct {
Type string `json:"type,omitempty"`
Uri string `json:"uri,omitempty"`
diff --git a/pkg/api/zz_testsuiterunstarted_0_2_0.go b/pkg/api/zz_testsuiterunstarted_0_2_0.go
new file mode 100644
index 0000000..72d3a86
--- /dev/null
+++ b/pkg/api/zz_testsuiterunstarted_0_2_0.go
@@ -0,0 +1,234 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TestSuiteRunStarted event type v0.2.0
+ TestSuiteRunStartedEventTypeV0_2_0 CDEventType = CDEventType{
+ Subject: "testsuiterun",
+ Predicate: "started",
+ Version: "0.2.0",
+ }
+)
+
+type TestSuiteRunStartedSubjectContentV0_2_0 struct {
+ Environment *Reference `json:"environment"`
+
+ TestSuite *TestSuiteRunStartedSubjectContentTestSuiteV0_2_0 `json:"testSuite,omitempty"`
+
+ Trigger *TestSuiteRunStartedSubjectContentTriggerV0_2_0 `json:"trigger,omitempty"`
+}
+
+type TestSuiteRunStartedSubjectV0_2_0 struct {
+ SubjectBase
+ Content TestSuiteRunStartedSubjectContentV0_2_0 `json:"content"`
+}
+
+func (sc TestSuiteRunStartedSubjectV0_2_0) GetSubjectType() SubjectType {
+ return "testSuiteRun"
+}
+
+type TestSuiteRunStartedEventV0_2_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TestSuiteRunStartedSubjectV0_2_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TestSuiteRunStartedEventV0_2_0) GetType() CDEventType {
+ return TestSuiteRunStartedEventTypeV0_2_0
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TestSuiteRunStartedEventV0_2_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TestSuiteRunStartedEventV0_2_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetSubjectEnvironment(environment *Reference) {
+ e.Subject.Content.Environment = environment
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetSubjectTestSuite(testSuite *TestSuiteRunStartedSubjectContentTestSuiteV0_2_0) {
+ e.Subject.Content.TestSuite = testSuite
+}
+
+func (e *TestSuiteRunStartedEventV0_2_0) SetSubjectTrigger(trigger *TestSuiteRunStartedSubjectContentTriggerV0_2_0) {
+ e.Subject.Content.Trigger = trigger
+}
+
+// New creates a new TestSuiteRunStartedEventV0_2_0
+func NewTestSuiteRunStartedEventV0_2_0(specVersion string) (*TestSuiteRunStartedEventV0_2_0, error) {
+ e := &TestSuiteRunStartedEventV0_2_0{
+ Context: ContextV04{
+ Context{
+ Type: TestSuiteRunStartedEventTypeV0_2_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TestSuiteRunStartedSubjectV0_2_0{
+ SubjectBase: SubjectBase{
+ Type: "testSuiteRun",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
+
+// TestSuiteRunStartedSubjectContentTestSuiteV0_2_0 holds the content of a TestSuite field in the content
+type TestSuiteRunStartedSubjectContentTestSuiteV0_2_0 struct {
+ Id string `json:"id"`
+
+ Name string `json:"name,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+
+ Version string `json:"version,omitempty"`
+}
+
+// TestSuiteRunStartedSubjectContentTriggerV0_2_0 holds the content of a Trigger field in the content
+type TestSuiteRunStartedSubjectContentTriggerV0_2_0 struct {
+ Type string `json:"type,omitempty"`
+
+ Uri string `json:"uri,omitempty"`
+}
diff --git a/pkg/api/zz_ticketclosed_0_1_0.go b/pkg/api/zz_ticketclosed_0_1_0.go
new file mode 100644
index 0000000..f6dda86
--- /dev/null
+++ b/pkg/api/zz_ticketclosed_0_1_0.go
@@ -0,0 +1,264 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TicketClosed event type v0.1.0
+ TicketClosedEventTypeV0_1_0 CDEventType = CDEventType{
+ Subject: "ticket",
+ Predicate: "closed",
+ Version: "0.1.0",
+ }
+)
+
+type TicketClosedSubjectContentV0_1_0 struct {
+ Assignees []string `json:"assignees,omitempty"`
+
+ Creator string `json:"creator,omitempty"`
+
+ Group string `json:"group,omitempty"`
+
+ Labels []string `json:"labels,omitempty"`
+
+ Milestone string `json:"milestone,omitempty"`
+
+ Priority string `json:"priority,omitempty"`
+
+ Resolution string `json:"resolution"`
+
+ Summary string `json:"summary,omitempty"`
+
+ TicketType string `json:"ticketType,omitempty"`
+
+ UpdatedBy string `json:"updatedBy,omitempty"`
+
+ Uri string `json:"uri"`
+}
+
+type TicketClosedSubjectV0_1_0 struct {
+ SubjectBase
+ Content TicketClosedSubjectContentV0_1_0 `json:"content"`
+}
+
+func (sc TicketClosedSubjectV0_1_0) GetSubjectType() SubjectType {
+ return "ticket"
+}
+
+type TicketClosedEventV0_1_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TicketClosedSubjectV0_1_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TicketClosedEventV0_1_0) GetType() CDEventType {
+ return TicketClosedEventTypeV0_1_0
+}
+
+func (e TicketClosedEventV0_1_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TicketClosedEventV0_1_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TicketClosedEventV0_1_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TicketClosedEventV0_1_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TicketClosedEventV0_1_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TicketClosedEventV0_1_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TicketClosedEventV0_1_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TicketClosedEventV0_1_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TicketClosedEventV0_1_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TicketClosedEventV0_1_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TicketClosedEventV0_1_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TicketClosedEventV0_1_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TicketClosedEventV0_1_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TicketClosedEventV0_1_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TicketClosedEventV0_1_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TicketClosedEventV0_1_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TicketClosedEventV0_1_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TicketClosedEventV0_1_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TicketClosedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TicketClosedEventV0_1_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TicketClosedEventV0_1_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TicketClosedEventV0_1_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TicketClosedEventV0_1_0) SetSubjectAssignees(assignees []string) {
+ e.Subject.Content.Assignees = assignees
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectCreator(creator string) {
+ e.Subject.Content.Creator = creator
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectGroup(group string) {
+ e.Subject.Content.Group = group
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectLabels(labels []string) {
+ e.Subject.Content.Labels = labels
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectMilestone(milestone string) {
+ e.Subject.Content.Milestone = milestone
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectPriority(priority string) {
+ e.Subject.Content.Priority = priority
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectResolution(resolution string) {
+ e.Subject.Content.Resolution = resolution
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectSummary(summary string) {
+ e.Subject.Content.Summary = summary
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectTicketType(ticketType string) {
+ e.Subject.Content.TicketType = ticketType
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectUpdatedBy(updatedBy string) {
+ e.Subject.Content.UpdatedBy = updatedBy
+}
+
+func (e *TicketClosedEventV0_1_0) SetSubjectUri(uri string) {
+ e.Subject.Content.Uri = uri
+}
+
+// New creates a new TicketClosedEventV0_1_0
+func NewTicketClosedEventV0_1_0(specVersion string) (*TicketClosedEventV0_1_0, error) {
+ e := &TicketClosedEventV0_1_0{
+ Context: ContextV04{
+ Context{
+ Type: TicketClosedEventTypeV0_1_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TicketClosedSubjectV0_1_0{
+ SubjectBase: SubjectBase{
+ Type: "ticket",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_ticketcreated_0_1_0.go b/pkg/api/zz_ticketcreated_0_1_0.go
new file mode 100644
index 0000000..bbde39b
--- /dev/null
+++ b/pkg/api/zz_ticketcreated_0_1_0.go
@@ -0,0 +1,252 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TicketCreated event type v0.1.0
+ TicketCreatedEventTypeV0_1_0 CDEventType = CDEventType{
+ Subject: "ticket",
+ Predicate: "created",
+ Version: "0.1.0",
+ }
+)
+
+type TicketCreatedSubjectContentV0_1_0 struct {
+ Assignees []string `json:"assignees,omitempty"`
+
+ Creator string `json:"creator"`
+
+ Group string `json:"group,omitempty"`
+
+ Labels []string `json:"labels,omitempty"`
+
+ Milestone string `json:"milestone,omitempty"`
+
+ Priority string `json:"priority,omitempty"`
+
+ Summary string `json:"summary"`
+
+ TicketType string `json:"ticketType,omitempty"`
+
+ Uri string `json:"uri"`
+}
+
+type TicketCreatedSubjectV0_1_0 struct {
+ SubjectBase
+ Content TicketCreatedSubjectContentV0_1_0 `json:"content"`
+}
+
+func (sc TicketCreatedSubjectV0_1_0) GetSubjectType() SubjectType {
+ return "ticket"
+}
+
+type TicketCreatedEventV0_1_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TicketCreatedSubjectV0_1_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TicketCreatedEventV0_1_0) GetType() CDEventType {
+ return TicketCreatedEventTypeV0_1_0
+}
+
+func (e TicketCreatedEventV0_1_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TicketCreatedEventV0_1_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TicketCreatedEventV0_1_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TicketCreatedEventV0_1_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TicketCreatedEventV0_1_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TicketCreatedEventV0_1_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TicketCreatedEventV0_1_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TicketCreatedEventV0_1_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TicketCreatedEventV0_1_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TicketCreatedEventV0_1_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TicketCreatedEventV0_1_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TicketCreatedEventV0_1_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TicketCreatedEventV0_1_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TicketCreatedEventV0_1_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TicketCreatedEventV0_1_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TicketCreatedEventV0_1_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TicketCreatedEventV0_1_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TicketCreatedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TicketCreatedEventV0_1_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TicketCreatedEventV0_1_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectAssignees(assignees []string) {
+ e.Subject.Content.Assignees = assignees
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectCreator(creator string) {
+ e.Subject.Content.Creator = creator
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectGroup(group string) {
+ e.Subject.Content.Group = group
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectLabels(labels []string) {
+ e.Subject.Content.Labels = labels
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectMilestone(milestone string) {
+ e.Subject.Content.Milestone = milestone
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectPriority(priority string) {
+ e.Subject.Content.Priority = priority
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectSummary(summary string) {
+ e.Subject.Content.Summary = summary
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectTicketType(ticketType string) {
+ e.Subject.Content.TicketType = ticketType
+}
+
+func (e *TicketCreatedEventV0_1_0) SetSubjectUri(uri string) {
+ e.Subject.Content.Uri = uri
+}
+
+// New creates a new TicketCreatedEventV0_1_0
+func NewTicketCreatedEventV0_1_0(specVersion string) (*TicketCreatedEventV0_1_0, error) {
+ e := &TicketCreatedEventV0_1_0{
+ Context: ContextV04{
+ Context{
+ Type: TicketCreatedEventTypeV0_1_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TicketCreatedSubjectV0_1_0{
+ SubjectBase: SubjectBase{
+ Type: "ticket",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_ticketupdated_0_1_0.go b/pkg/api/zz_ticketupdated_0_1_0.go
new file mode 100644
index 0000000..cd7b149
--- /dev/null
+++ b/pkg/api/zz_ticketupdated_0_1_0.go
@@ -0,0 +1,258 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // TicketUpdated event type v0.1.0
+ TicketUpdatedEventTypeV0_1_0 CDEventType = CDEventType{
+ Subject: "ticket",
+ Predicate: "updated",
+ Version: "0.1.0",
+ }
+)
+
+type TicketUpdatedSubjectContentV0_1_0 struct {
+ Assignees []string `json:"assignees,omitempty"`
+
+ Creator string `json:"creator,omitempty"`
+
+ Group string `json:"group,omitempty"`
+
+ Labels []string `json:"labels,omitempty"`
+
+ Milestone string `json:"milestone,omitempty"`
+
+ Priority string `json:"priority,omitempty"`
+
+ Summary string `json:"summary,omitempty"`
+
+ TicketType string `json:"ticketType,omitempty"`
+
+ UpdatedBy string `json:"updatedBy,omitempty"`
+
+ Uri string `json:"uri"`
+}
+
+type TicketUpdatedSubjectV0_1_0 struct {
+ SubjectBase
+ Content TicketUpdatedSubjectContentV0_1_0 `json:"content"`
+}
+
+func (sc TicketUpdatedSubjectV0_1_0) GetSubjectType() SubjectType {
+ return "ticket"
+}
+
+type TicketUpdatedEventV0_1_0 struct {
+ Context ContextV04 `json:"context"`
+ Subject TicketUpdatedSubjectV0_1_0 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e TicketUpdatedEventV0_1_0) GetType() CDEventType {
+ return TicketUpdatedEventTypeV0_1_0
+}
+
+func (e TicketUpdatedEventV0_1_0) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e TicketUpdatedEventV0_1_0) GetId() string {
+ return e.Context.Id
+}
+
+func (e TicketUpdatedEventV0_1_0) GetSource() string {
+ return e.Context.Source
+}
+
+func (e TicketUpdatedEventV0_1_0) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e TicketUpdatedEventV0_1_0) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e TicketUpdatedEventV0_1_0) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e TicketUpdatedEventV0_1_0) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e TicketUpdatedEventV0_1_0) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TicketUpdatedEventV0_1_0) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e TicketUpdatedEventV0_1_0) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e TicketUpdatedEventV0_1_0) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e TicketUpdatedEventV0_1_0) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e TicketUpdatedEventV0_1_0) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e TicketUpdatedEventV0_1_0) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *TicketUpdatedEventV0_1_0) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e TicketUpdatedEventV0_1_0) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return CompiledSchemas.GetBySpecSubjectPredicate("0.4.1", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *TicketUpdatedEventV0_1_0) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectAssignees(assignees []string) {
+ e.Subject.Content.Assignees = assignees
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectCreator(creator string) {
+ e.Subject.Content.Creator = creator
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectGroup(group string) {
+ e.Subject.Content.Group = group
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectLabels(labels []string) {
+ e.Subject.Content.Labels = labels
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectMilestone(milestone string) {
+ e.Subject.Content.Milestone = milestone
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectPriority(priority string) {
+ e.Subject.Content.Priority = priority
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectSummary(summary string) {
+ e.Subject.Content.Summary = summary
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectTicketType(ticketType string) {
+ e.Subject.Content.TicketType = ticketType
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectUpdatedBy(updatedBy string) {
+ e.Subject.Content.UpdatedBy = updatedBy
+}
+
+func (e *TicketUpdatedEventV0_1_0) SetSubjectUri(uri string) {
+ e.Subject.Content.Uri = uri
+}
+
+// New creates a new TicketUpdatedEventV0_1_0
+func NewTicketUpdatedEventV0_1_0(specVersion string) (*TicketUpdatedEventV0_1_0, error) {
+ e := &TicketUpdatedEventV0_1_0{
+ Context: ContextV04{
+ Context{
+ Type: TicketUpdatedEventTypeV0_1_0,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: TicketUpdatedSubjectV0_1_0{
+ SubjectBase: SubjectBase{
+ Type: "ticket",
+ },
+ },
+ }
+ _, err := initCDEvent(e)
+ if err != nil {
+ return nil, err
+ }
+ return e, nil
+}
diff --git a/pkg/api/zz_ztest_foosubjectbarpredicate_1_2_3.go b/pkg/api/zz_ztest_foosubjectbarpredicate_1_2_3.go
index 6793087..e72ef6e 100644
--- a/pkg/api/zz_ztest_foosubjectbarpredicate_1_2_3.go
+++ b/pkg/api/zz_ztest_foosubjectbarpredicate_1_2_3.go
@@ -23,11 +23,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
"time"
-)
-var foosubjectbarpredicateschema1_2_3 = `{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://cdevents.dev/99.0.0/schema/foosubject-barpredicate-event","properties":{"context":{"properties":{"version":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","enum":["dev.cdevents.foosubject.barpredicate.1.2.3"],"default":"dev.cdevents.foosubject.barpredicate.1.2.3"},"timestamp":{"type":"string","format":"date-time"}},"additionalProperties":false,"type":"object","required":["version","id","source","type","timestamp"]},"subject":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"},"type":{"type":"string","minLength":1,"enum":["fooSubject"],"default":"fooSubject"},"content":{"properties":{"plainField":{"type":"string","minLength":1},"referenceField":{"properties":{"id":{"type":"string","minLength":1},"source":{"type":"string","minLength":1,"format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["id"]},"artifactId":{"type":"string"},"objectField":{"properties":{"required":{"type":"string","minLength":1},"optional":{"type":"string","format":"uri-reference"}},"additionalProperties":false,"type":"object","required":["required"]}},"additionalProperties":false,"type":"object","required":["plainField","referenceField"]}},"additionalProperties":false,"type":"object","required":["id","type","content"]},"customData":{"oneOf":[{"type":"object"},{"type":"string","contentEncoding":"base64"}]},"customDataContentType":{"type":"string"}},"additionalProperties":false,"type":"object","required":["context","subject"]}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// FooSubjectBarPredicate event type v1.2.3
@@ -38,28 +37,28 @@ var (
}
)
-type FooSubjectBarPredicateSubjectContent struct {
+type FooSubjectBarPredicateSubjectContentV1_2_3 struct {
ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
- ObjectField *FooSubjectBarPredicateSubjectContentObjectField `json:"objectField,omitempty"`
+ ObjectField *FooSubjectBarPredicateSubjectContentObjectFieldV1_2_3 `json:"objectField,omitempty"`
PlainField string `json:"plainField"`
ReferenceField *Reference `json:"referenceField"`
}
-type FooSubjectBarPredicateSubject struct {
+type FooSubjectBarPredicateSubjectV1_2_3 struct {
SubjectBase
- Content FooSubjectBarPredicateSubjectContent `json:"content"`
+ Content FooSubjectBarPredicateSubjectContentV1_2_3 `json:"content"`
}
-func (sc FooSubjectBarPredicateSubject) GetSubjectType() SubjectType {
+func (sc FooSubjectBarPredicateSubjectV1_2_3) GetSubjectType() SubjectType {
return "fooSubject"
}
type FooSubjectBarPredicateEventV1_2_3 struct {
- Context Context `json:"context"`
- Subject FooSubjectBarPredicateSubject `json:"subject"`
+ Context ContextV04 `json:"context"`
+ Subject FooSubjectBarPredicateSubjectV1_2_3 `json:"subject"`
CDEventCustomData
}
@@ -113,6 +112,20 @@ func (e FooSubjectBarPredicateEventV1_2_3) GetCustomDataContentType() string {
return e.CustomDataContentType
}
+// CDEventsReaderV04 implementation
+
+func (e FooSubjectBarPredicateEventV1_2_3) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e FooSubjectBarPredicateEventV1_2_3) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e FooSubjectBarPredicateEventV1_2_3) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
// CDEventsWriter implementation
func (e *FooSubjectBarPredicateEventV1_2_3) SetId(id string) {
@@ -149,9 +162,23 @@ func (e *FooSubjectBarPredicateEventV1_2_3) SetCustomData(contentType string, da
return nil
}
-func (e FooSubjectBarPredicateEventV1_2_3) GetSchema() (string, string) {
+func (e FooSubjectBarPredicateEventV1_2_3) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), foosubjectbarpredicateschema1_2_3
+ return TestCompiledSchemas.GetBySpecSubjectPredicate("99.0.0", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *FooSubjectBarPredicateEventV1_2_3) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *FooSubjectBarPredicateEventV1_2_3) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *FooSubjectBarPredicateEventV1_2_3) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
}
// Set subject custom fields
@@ -160,7 +187,7 @@ func (e *FooSubjectBarPredicateEventV1_2_3) SetSubjectArtifactId(artifactId stri
e.Subject.Content.ArtifactId = artifactId
}
-func (e *FooSubjectBarPredicateEventV1_2_3) SetSubjectObjectField(objectField *FooSubjectBarPredicateSubjectContentObjectField) {
+func (e *FooSubjectBarPredicateEventV1_2_3) SetSubjectObjectField(objectField *FooSubjectBarPredicateSubjectContentObjectFieldV1_2_3) {
e.Subject.Content.ObjectField = objectField
}
@@ -175,11 +202,15 @@ func (e *FooSubjectBarPredicateEventV1_2_3) SetSubjectReferenceField(referenceFi
// New creates a new FooSubjectBarPredicateEventV1_2_3
func NewFooSubjectBarPredicateEventV1_2_3(specVersion string) (*FooSubjectBarPredicateEventV1_2_3, error) {
e := &FooSubjectBarPredicateEventV1_2_3{
- Context: Context{
- Type: FooSubjectBarPredicateEventTypeV1_2_3,
- Version: specVersion,
+ Context: ContextV04{
+ Context{
+ Type: FooSubjectBarPredicateEventTypeV1_2_3,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
},
- Subject: FooSubjectBarPredicateSubject{
+ Subject: FooSubjectBarPredicateSubjectV1_2_3{
SubjectBase: SubjectBase{
Type: "fooSubject",
},
@@ -192,8 +223,8 @@ func NewFooSubjectBarPredicateEventV1_2_3(specVersion string) (*FooSubjectBarPre
return e, nil
}
-// FooSubjectBarPredicateSubjectContentObjectField holds the content of a ObjectField field in the content
-type FooSubjectBarPredicateSubjectContentObjectField struct {
+// FooSubjectBarPredicateSubjectContentObjectFieldV1_2_3 holds the content of a ObjectField field in the content
+type FooSubjectBarPredicateSubjectContentObjectFieldV1_2_3 struct {
Optional string `json:"optional,omitempty"`
Required string `json:"required"`
diff --git a/pkg/api/zz_ztest_foosubjectbarpredicate_2_2_3.go b/pkg/api/zz_ztest_foosubjectbarpredicate_2_2_3.go
new file mode 100644
index 0000000..5e5794c
--- /dev/null
+++ b/pkg/api/zz_ztest_foosubjectbarpredicate_2_2_3.go
@@ -0,0 +1,231 @@
+// Code generated by tools/generator. DO NOT EDIT.
+
+//go:build testonly
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+ "time"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+var (
+ // FooSubjectBarPredicate event type v2.2.3
+ FooSubjectBarPredicateEventTypeV2_2_3 CDEventType = CDEventType{
+ Subject: "foosubject",
+ Predicate: "barpredicate",
+ Version: "2.2.3",
+ }
+)
+
+type FooSubjectBarPredicateSubjectContentV2_2_3 struct {
+ ArtifactId string `json:"artifactId,omitempty" validate:"purl"`
+
+ ObjectField *FooSubjectBarPredicateSubjectContentObjectFieldV2_2_3 `json:"objectField,omitempty"`
+
+ PlainField string `json:"plainField"`
+
+ ReferenceField *Reference `json:"referenceField"`
+}
+
+type FooSubjectBarPredicateSubjectV2_2_3 struct {
+ SubjectBase
+ Content FooSubjectBarPredicateSubjectContentV2_2_3 `json:"content"`
+}
+
+func (sc FooSubjectBarPredicateSubjectV2_2_3) GetSubjectType() SubjectType {
+ return "fooSubject"
+}
+
+type FooSubjectBarPredicateEventV2_2_3 struct {
+ Context ContextV04 `json:"context"`
+ Subject FooSubjectBarPredicateSubjectV2_2_3 `json:"subject"`
+ CDEventCustomData
+}
+
+// CDEventsReader implementation
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetType() CDEventType {
+ return FooSubjectBarPredicateEventTypeV2_2_3
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetVersion() string {
+ return CDEventsSpecVersion
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetId() string {
+ return e.Context.Id
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetSource() string {
+ return e.Context.Source
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetTimestamp() time.Time {
+ return e.Context.Timestamp
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetSubjectId() string {
+ return e.Subject.Id
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetSubjectSource() string {
+ return e.Subject.Source
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetSubject() Subject {
+ return e.Subject
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetCustomData() (interface{}, error) {
+ return GetCustomData(e.CustomDataContentType, e.CustomData)
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetCustomDataAs(receiver interface{}) error {
+ return GetCustomDataAs(e, receiver)
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetCustomDataRaw() ([]byte, error) {
+ return GetCustomDataRaw(e.CustomDataContentType, e.CustomData)
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetCustomDataContentType() string {
+ return e.CustomDataContentType
+}
+
+// CDEventsReaderV04 implementation
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+
+// CDEventsWriter implementation
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetId(id string) {
+ e.Context.Id = id
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSource(source string) {
+ e.Context.Source = source
+ // Default the subject source to the event source
+ if e.Subject.Source == "" {
+ e.Subject.Source = source
+ }
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetTimestamp(timestamp time.Time) {
+ e.Context.Timestamp = timestamp
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSubjectId(subjectId string) {
+ e.Subject.Id = subjectId
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSubjectSource(subjectSource string) {
+ e.Subject.Source = subjectSource
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetCustomData(contentType string, data interface{}) error {
+ err := CheckCustomData(contentType, data)
+ if err != nil {
+ return err
+ }
+ e.CustomData = data
+ e.CustomDataContentType = contentType
+ return nil
+}
+
+func (e FooSubjectBarPredicateEventV2_2_3) GetSchema() (string, *jsonschema.Schema, error) {
+ eType := e.GetType()
+ return TestCompiledSchemas.GetBySpecSubjectPredicate("99.1.0", eType.Subject, eType.Predicate)
+}
+
+// CDEventsWriterV04 implementation
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+
+// Set subject custom fields
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSubjectArtifactId(artifactId string) {
+ e.Subject.Content.ArtifactId = artifactId
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSubjectObjectField(objectField *FooSubjectBarPredicateSubjectContentObjectFieldV2_2_3) {
+ e.Subject.Content.ObjectField = objectField
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSubjectPlainField(plainField string) {
+ e.Subject.Content.PlainField = plainField
+}
+
+func (e *FooSubjectBarPredicateEventV2_2_3) SetSubjectReferenceField(referenceField *Reference) {
+ e.Subject.Content.ReferenceField = referenceField
+}
+
+// New creates a new FooSubjectBarPredicateEventV2_2_3
+func NewFooSubjectBarPredicateEventV2_2_3(specVersion string) (*FooSubjectBarPredicateEventV2_2_3, error) {
+ e := &FooSubjectBarPredicateEventV2_2_3{
+ Context: ContextV04{
+ Context{
+ Type: FooSubjectBarPredicateEventTypeV2_2_3,
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+ },
+ Subject: FooSubjectBarPredicateSubjectV2_2_3{
+ SubjectBase: SubjectBase{
+ Type: "fooSubject",
+ },
+ },
+ }
+ // Pre-seeded with test data
+ t, _ := time.Parse(time.RFC3339Nano, "2023-03-20T14:27:05.315384Z")
+ e.SetTimestamp(t)
+ e.SetId("271069a8-fc18-44f1-b38f-9d70a1695819")
+ return e, nil
+}
+
+// FooSubjectBarPredicateSubjectContentObjectFieldV2_2_3 holds the content of a ObjectField field in the content
+type FooSubjectBarPredicateSubjectContentObjectFieldV2_2_3 struct {
+ Optional string `json:"optional,omitempty"`
+
+ Required string `json:"required"`
+}
diff --git a/tools/generator.go b/tools/generator.go
index e0f788b..0a5984a 100644
--- a/tools/generator.go
+++ b/tools/generator.go
@@ -28,13 +28,12 @@ import (
"log"
"os"
"path/filepath"
+ "regexp"
"sort"
"strings"
"text/template"
- cdevents "github.com/cdevents/sdk-go/pkg/api"
- jsonschema "github.com/santhosh-tekuri/jsonschema/v5"
- _ "github.com/santhosh-tekuri/jsonschema/v5/httploader" // loads the HTTP loader
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
"golang.org/x/mod/semver"
"golang.org/x/text/cases"
"golang.org/x/text/language"
@@ -49,9 +48,13 @@ var (
CODE_FOLDER string
GEN_CODE_FOLDER string
SPEC_FOLDER_PREFIX = "spec-"
- SPEC_VERSIONS = []string{"0.3.0"}
+ TEST_FOLDER_PREFIX = "tests-"
+ SPEC_VERSIONS = []string{"0.3.0", "0.4.1"}
+ TEST_VERSIONS = []string{"99.0.0", "99.1.0"}
SCHEMA_FOLDER = "schemas"
- TEST_SCHEMA_FOLDER = "tests"
+ LINKS_FOLDER = filepath.Join(SCHEMA_FOLDER, "links")
+ SCHEMA_FOLDERS = []string{LINKS_FOLDER, SCHEMA_FOLDER, CUSTOM_FOLDER}
+ CUSTOM_FOLDER = "custom"
TEST_OUTPUT_PREFIX = "ztest_"
GO_TYPES_NAMES = map[string]string{
@@ -67,20 +70,41 @@ var (
"barpredicate": "BarPredicate",
}
+ JSON_SCHEMA_NAMES = map[string]string{
+ "task-run": "taskrun",
+ "pipeline-run": "pipelinerun",
+ "test-case-run": "testcaserun",
+ "test-suite-run": "testsuiterun",
+ "test-output": "testoutput",
+ "test-suite-started": "testsuiterun-started", // Workaround to a bug in v0.3.0
+ "test-suite-finished": "testsuiterun-finished", // Workaround to a bug in v0.3.0
+ }
+
// Templates
eventTemplateFileName = "event.go.tmpl"
typesTemplateFileName = "types.go.tmpl"
examplesTestsTemplateFileNames = []string{
"examples_test.go.tmpl",
"factory_test.go.tmpl",
+ "shared_test.go.tmpl",
}
- specTemplateFileName = "docs.go.tmpl"
+ specTemplateFileName = "docs.go.tmpl"
+ schemaTemplateFileName = "schemas.go.tmpl"
// Tool
capitalizer cases.Caser
// Flags
RESOURCES_PATH = flag.String("resources", "", "the path to the generator resources root folder")
+
+ // Schema DB and compiler
+ schemas Schemas
+ testSchemas Schemas
+ compiler jsonschema.Compiler
+
+ // CDEvents types
+ cdeventsTypeRegex = "^dev\\.cdevents\\.(?P[a-z]+)\\.(?P[a-z]+)\\.(?P.*)$"
+ cdeventsTypeCRegex = regexp.MustCompile(cdeventsTypeRegex)
)
const REFERENCE_TYPE = "Reference"
@@ -113,6 +137,12 @@ type Data struct {
Prefix string
Schema string
IsTestData bool
+ SpecVersion string
+}
+
+type Schemas struct {
+ Data map[string][]byte
+ IsTestData bool
}
type AllData struct {
@@ -129,6 +159,14 @@ func (d Data) OutputFile() string {
func init() {
capitalizer = cases.Title(language.English, cases.NoLower)
+ pathLoader := PathLoader{}
+ loader := jsonschema.SchemeURLLoader{
+ "file": jsonschema.FileLoader{},
+ "http": pathLoader,
+ "https": pathLoader,
+ }
+ compiler = *jsonschema.NewCompiler()
+ compiler.UseLoader(loader)
}
// GoTypeName returns the name to be used when building Go types
@@ -143,6 +181,39 @@ func GoTypeName(schemaName string, mappings map[string]string) string {
}
}
+type cdeventType struct {
+ Subject string
+ Predicate string
+ Version string
+}
+
+func cdeventTypeFromString(cdet string) (cdeventType, error) {
+ parts := cdeventsTypeCRegex.FindStringSubmatch(cdet)
+ if len(parts) != 4 {
+ return cdeventType{}, fmt.Errorf("cannot parse event type %s", cdet)
+ }
+ return cdeventType{
+ Subject: parts[1],
+ Predicate: parts[2],
+ Version: parts[3],
+ }, nil
+}
+
+type PathLoader struct{}
+
+// LoadSchema loads schemas from the local database (global variable)
+func (pl PathLoader) Load(url string) (any, error) {
+ var loaded map[string]interface{}
+ if schemaBytes, found := schemas.Data[url]; found {
+ err := json.Unmarshal(schemaBytes, &loaded)
+ if err != nil {
+ return nil, &jsonschema.LoadURLError{URL: url, Err: err}
+ }
+ return loaded, nil
+ }
+ return nil, &jsonschema.LoadURLError{URL: url, Err: fmt.Errorf("$id %s not found in local schema DB", url)}
+}
+
func main() {
var err error
var ex string
@@ -166,27 +237,92 @@ func main() {
CODE_FOLDER = filepath.Join(*RESOURCES_PATH, CODE)
GEN_CODE_FOLDER = filepath.Join(*RESOURCES_PATH, GEN_CODE)
+ // Load templates
+ templates, err := template.ParseGlob(TEMPLATES_FOLDER)
+ if err != nil {
+ log.Fatalf("%s", err.Error())
+ }
+
+ // Load schema files into a slice and run the schemas DB template
+ schemas = Schemas{
+ IsTestData: false,
+ Data: make(map[string][]byte),
+ }
+ for _, version := range SPEC_VERSIONS {
+ shortVersion := semver.MajorMinor("v" + version)
+ for _, folder := range SCHEMA_FOLDERS {
+ versioned_schema_folder := filepath.Join(CODE_FOLDER, SPEC_FOLDER_PREFIX+shortVersion, folder)
+ err = loadSchemas(versioned_schema_folder, &schemas)
+ if err != nil {
+ log.Fatalf("%s", err.Error())
+ }
+ }
+ }
+ outputFileName := filepath.Join(GEN_CODE_FOLDER, strings.TrimSuffix(schemaTemplateFileName, filepath.Ext(schemaTemplateFileName)))
+ err = executeTemplate(templates, schemaTemplateFileName, outputFileName, schemas)
+ if err != nil {
+ log.Fatalf("%s", err.Error())
+ }
+
+ // Load test schema files into a slice and run the schemas DB template
+ testSchemas = Schemas{
+ IsTestData: true,
+ Data: make(map[string][]byte),
+ }
+ for _, version := range TEST_VERSIONS {
+ shortVersion := semver.MajorMinor("v" + version)
+ for _, folder := range SCHEMA_FOLDERS {
+ versioned_schema_folder := filepath.Join(CODE_FOLDER, TEST_FOLDER_PREFIX+shortVersion, folder)
+ err = loadSchemas(versioned_schema_folder, &testSchemas)
+ if err != nil {
+ log.Fatalf("%s", err.Error())
+ }
+ }
+ }
+ testOutputFileName := filepath.Join(GEN_CODE_FOLDER, TEST_OUTPUT_PREFIX+strings.TrimSuffix(schemaTemplateFileName, filepath.Ext(schemaTemplateFileName)))
+ err = executeTemplate(templates, schemaTemplateFileName, testOutputFileName, testSchemas)
+ if err != nil {
+ log.Fatalf("%s", err.Error())
+ }
+
// Generate SDK files
for _, version := range SPEC_VERSIONS {
shortVersion := semver.MajorMinor("v" + version)
versioned_schema_folder := filepath.Join(CODE_FOLDER, SPEC_FOLDER_PREFIX+shortVersion, SCHEMA_FOLDER)
log.Printf("Generating SDK files from templates: %s and schemas: %s into %s", TEMPLATES_FOLDER, versioned_schema_folder, GEN_CODE_FOLDER)
- err = generate(versioned_schema_folder, GEN_CODE_FOLDER, "", version, GO_TYPES_NAMES, false)
+ err = generate(versioned_schema_folder, GEN_CODE_FOLDER, "", version, templates, GO_TYPES_NAMES, false)
if err != nil {
log.Fatalf("%s", err.Error())
}
}
// Generate SDK test files
- test_schema_folder := filepath.Join(CODE_FOLDER, TEST_SCHEMA_FOLDER, SCHEMA_FOLDER)
- log.Printf("Generating Test SDK files from templates: %s and schemas: %s into %s", TEMPLATES_FOLDER, test_schema_folder, GEN_CODE_FOLDER)
- err = generate(test_schema_folder, GEN_CODE_FOLDER, TEST_OUTPUT_PREFIX, "99.0.0", GO_TYPES_TEST_NAMES, true)
- if err != nil {
- log.Fatalf("%s", err.Error())
+ for _, version := range TEST_VERSIONS {
+ shortVersion := semver.MajorMinor("v" + version)
+ versioned_test_schema_folder := filepath.Join(CODE_FOLDER, TEST_FOLDER_PREFIX+shortVersion, SCHEMA_FOLDER)
+ log.Printf("Generating Test SDK files from templates: %s and schemas: %s into %s", TEMPLATES_FOLDER, versioned_test_schema_folder, GEN_CODE_FOLDER)
+ err = generate(versioned_test_schema_folder, GEN_CODE_FOLDER, TEST_OUTPUT_PREFIX, version, templates, GO_TYPES_TEST_NAMES, true)
+ if err != nil {
+ log.Fatalf("%s", err.Error())
+ }
}
}
-func generate(schemaFolder, genFolder, prefix, specVersion string, goTypes map[string]string, isTestMode bool) error {
+func loadSchemas(schemaFolder string, schemas *Schemas) error {
+ // Walk the jsonschemas folder, process each ".json" file
+ if _, err := os.Stat(schemaFolder); err != nil {
+ if os.IsNotExist(err) {
+ // Ignore non-existing folders
+ return nil
+ } else {
+ // Something else went wrong
+ return fmt.Errorf("error loading schemas from %s: %s", schemaFolder, err)
+ }
+ }
+ return fs.WalkDir(os.DirFS(schemaFolder), ".", getSchemasWalkProcessor(schemaFolder, schemas))
+}
+
+func generate(schemaFolder, genFolder, prefix, specVersion string, templates *template.Template, goTypes map[string]string, isTestMode bool) error {
// allData is used to accumulate data from all jsonschemas
// which is then used to run shared templates
shortSpecVersion := semver.MajorMinor("v" + specVersion)
@@ -198,14 +334,9 @@ func generate(schemaFolder, genFolder, prefix, specVersion string, goTypes map[s
IsTestData: isTestMode,
}
- allTemplates, err := template.ParseGlob(TEMPLATES_FOLDER)
- if err != nil {
- return err
- }
-
// Walk the jsonschemas folder, process each ".json" file
- walkProcessor := getWalkProcessor(schemaFolder, allTemplates, genFolder, goTypes, &allData, prefix, isTestMode)
- err = fs.WalkDir(os.DirFS(schemaFolder), ".", walkProcessor)
+ walkProcessor := getWalkProcessor(schemaFolder, templates, genFolder, goTypes, &allData, prefix, isTestMode)
+ err := fs.WalkDir(os.DirFS(schemaFolder), ".", walkProcessor)
if err != nil {
return err
}
@@ -219,14 +350,14 @@ func generate(schemaFolder, genFolder, prefix, specVersion string, goTypes map[s
// Spec types (types.go)
outputFileName := filepath.Join(genFolder, allData.SpecVersionName, strings.TrimSuffix(typesTemplateFileName, filepath.Ext(typesTemplateFileName)))
- err = executeTemplate(allTemplates, typesTemplateFileName, outputFileName, allData)
+ err = executeTemplate(templates, typesTemplateFileName, outputFileName, allData)
if err != nil {
return err
}
// Spec aliases (docs.go)
specFileName := filepath.Join(genFolder, allData.SpecVersionName, strings.TrimSuffix(specTemplateFileName, filepath.Ext(specTemplateFileName)))
- err = executeTemplate(allTemplates, specTemplateFileName, specFileName, allData)
+ err = executeTemplate(templates, specTemplateFileName, specFileName, allData)
if err != nil {
return err
}
@@ -234,8 +365,8 @@ func generate(schemaFolder, genFolder, prefix, specVersion string, goTypes map[s
// Process example test files - only for real data
if !isTestMode {
for _, examplesTestsTemplateFileName := range examplesTestsTemplateFileNames {
- outputFileName := filepath.Join(genFolder, "zz_"+prefix+strings.TrimSuffix(examplesTestsTemplateFileName, filepath.Ext(examplesTestsTemplateFileName)))
- err = executeTemplate(allTemplates, examplesTestsTemplateFileName, outputFileName, allData)
+ outputFileName := filepath.Join(genFolder, allData.SpecVersionName, "zz_"+prefix+strings.TrimSuffix(examplesTestsTemplateFileName, filepath.Ext(examplesTestsTemplateFileName)))
+ err = executeTemplate(templates, examplesTestsTemplateFileName, outputFileName, allData)
if err != nil {
return err
}
@@ -244,11 +375,11 @@ func generate(schemaFolder, genFolder, prefix, specVersion string, goTypes map[s
return nil
}
-func executeTemplate(allTemplates *template.Template, templateName, outputFileName string, data interface{}) error {
+func executeTemplate(templates *template.Template, templateName, outputFileName string, data interface{}) error {
// Write the template output to a buffer
generated := new(bytes.Buffer)
- err := allTemplates.ExecuteTemplate(generated, templateName, data)
+ err := templates.ExecuteTemplate(generated, templateName, data)
if err != nil {
return err
}
@@ -267,6 +398,49 @@ func executeTemplate(allTemplates *template.Template, templateName, outputFileNa
return os.WriteFile(outputFileName, src, 0644)
}
+func getSchemasWalkProcessor(rootDir string, schemas *Schemas) fs.WalkDirFunc {
+ return func(path string, info fs.DirEntry, err error) error {
+ if err != nil {
+ return err
+ }
+ // Do not go into sub-folders
+ if info.IsDir() {
+ if info.Name() == "." {
+ return nil
+ }
+ return fs.SkipDir
+ }
+ if !strings.HasSuffix(info.Name(), ".json") {
+ // Ignore non-json files
+ return nil
+ }
+ // Set the whole path
+ schemaPath := filepath.Join(rootDir, path)
+ schemaBytes, err := os.ReadFile(schemaPath)
+ if err != nil {
+ return fmt.Errorf("cannot read schema file at %s: %v", schemaPath, err)
+ }
+ schema := struct {
+ Id string `json:"$id"`
+ }{}
+ // Load the jsonschema from the spec
+ if err := json.Unmarshal(schemaBytes, &schema); err != nil {
+ return fmt.Errorf("cannot unmarshal schema file at %s: %v", schemaPath, err)
+ }
+ // If no $id is defined ignore this file
+ if schema.Id == "" {
+ return nil
+ }
+ var schemaId = schema.Id
+ // Rewrite a few irregular schema IDs
+ for original, fixed := range JSON_SCHEMA_NAMES {
+ schemaId = strings.Replace(schemaId, original, fixed, 1)
+ }
+ (*schemas).Data[schemaId] = schemaBytes
+ return nil
+ }
+}
+
func getWalkProcessor(rootDir string, allTemplates *template.Template, genFolder string, goTypes map[string]string, allData *AllData, prefix string, isTestMode bool) fs.WalkDirFunc {
return func(path string, info fs.DirEntry, err error) error {
if err != nil {
@@ -286,7 +460,7 @@ func getWalkProcessor(rootDir string, allTemplates *template.Template, genFolder
// Set the whole path
schemaPath := filepath.Join(rootDir, path)
// Load the jsonschema from the spec
- sch, err := jsonschema.Compile(schemaPath)
+ sch, err := compiler.Compile(schemaPath)
if err != nil {
return err
}
@@ -311,11 +485,41 @@ func getWalkProcessor(rootDir string, allTemplates *template.Template, genFolder
data.Schema = compressedRawSchema.String()
allData.Slice = append(allData.Slice, *data)
+ data.SpecVersion = allData.SpecVersion
// Execute the template
return executeTemplate(allTemplates, eventTemplateFileName, filepath.Join(genFolder, data.OutputFile()), data)
}
}
+func validateStringEnumAnyOf(schema *jsonschema.Schema) error {
+ if len(schema.AnyOf) != 2 {
+ return fmt.Errorf("only two types allowed when using anyOf for content property in schema %s: %v", schema.Location, schema.Types)
+ }
+ foundEnum := false
+ for _, anyContainer := range schema.AnyOf {
+ var types = []string{}
+ if anyContainer.Types != nil {
+ types = anyContainer.Types.ToStrings()
+ }
+ if len(types) != 1 {
+ return fmt.Errorf("only one type allowed for content property in schema %s: %v", anyContainer.Location, anyContainer.Types)
+ }
+ if types[0] != "string" {
+ return fmt.Errorf("only string allowed when using anyOf for types %s: %v", anyContainer.Location, anyContainer.Types)
+ }
+ if anyContainer.Enum != nil {
+ if foundEnum {
+ return fmt.Errorf("only one enum allowed when using anyOf for types %s: %v", anyContainer.Location, anyContainer.Types)
+ }
+ foundEnum = true
+ }
+ }
+ if !foundEnum {
+ return fmt.Errorf("one enum required when using anyOf for types %s: %v", schema.Location, schema.Types)
+ }
+ return nil
+}
+
func DataFromSchema(schema *jsonschema.Schema, mappings map[string]string) (*Data, error) {
// Parse the event type from the context
contextSchema, ok := schema.Properties["context"]
@@ -326,17 +530,17 @@ func DataFromSchema(schema *jsonschema.Schema, mappings map[string]string) (*Dat
if !ok {
return nil, fmt.Errorf("no type property in schema %s", eventTypeSchema.Location)
}
- if len(eventTypeSchema.Enum) == 0 {
+ if len(eventTypeSchema.Enum.Values) == 0 {
return nil, fmt.Errorf("no value defined for type in schema %s", eventTypeSchema.Location)
}
- eventTypeString, ok := eventTypeSchema.Enum[0].(string)
+ eventTypeString, ok := eventTypeSchema.Enum.Values[0].(string)
if !ok {
return nil, fmt.Errorf("non-string value defined for type in schema %s", eventTypeSchema.Location)
}
if eventTypeString == "" {
return nil, fmt.Errorf("empty value defined for type in schema %s", eventTypeSchema.Location)
}
- eventType, err := cdevents.CDEventTypeFromString(string(eventTypeString))
+ eventType, err := cdeventTypeFromString(string(eventTypeString))
if err != nil {
return nil, err
}
@@ -350,10 +554,10 @@ func DataFromSchema(schema *jsonschema.Schema, mappings map[string]string) (*Dat
if !ok {
return nil, fmt.Errorf("no type property in schema %s", subjectSchema.Location)
}
- if len(subjectTypeSchema.Enum) == 0 {
+ if len(subjectTypeSchema.Enum.Values) == 0 {
return nil, fmt.Errorf("no value defined for type in schema %s", subjectTypeSchema.Location)
}
- subjectTypeString, ok := subjectTypeSchema.Enum[0].(string)
+ subjectTypeString, ok := subjectTypeSchema.Enum.Values[0].(string)
if !ok {
return nil, fmt.Errorf("non-string value defined for type in schema %s", subjectTypeSchema.Location)
}
@@ -370,15 +574,37 @@ func DataFromSchema(schema *jsonschema.Schema, mappings map[string]string) (*Dat
contentField.NameLower = name
contentField.Name = capitalizer.String(name)
contentField.Required = false
+ var contentFieldType string
for _, value := range contentSchema.Required {
if name == value {
contentField.Required = true
}
}
- if len(propertySchema.Types) != 1 {
- return nil, fmt.Errorf("only one type allowed for content property in schema %s", propertySchema.Location)
+ // Handles the case of "anyOf" with string + enum of strings
+ var types = []string{}
+ if propertySchema.Types != nil {
+ types = propertySchema.Types.ToStrings()
}
- switch propertySchema.Types[0] {
+ if len(types) == 0 {
+ if propertySchema.AnyOf != nil {
+ err = validateStringEnumAnyOf(propertySchema)
+ if err != nil {
+ return nil, err
+ }
+ contentFieldType = "anyOfStringEnum"
+ } else {
+ return nil, fmt.Errorf("one type required or anyOf two string types in schema %s: %v", propertySchema.Location, types)
+ }
+ } else {
+ contentFieldType = types[0]
+ }
+ if len(types) > 1 {
+ return nil, fmt.Errorf("only one type allowed for content property in schema %s: %v", propertySchema.Location, types)
+ }
+ if len(types) > 1 {
+ return nil, fmt.Errorf("only one type allowed for content property in schema %s: %v", propertySchema.Location, types)
+ }
+ switch contentFieldType {
case "object":
contentType, err := typesForSchema(name, propertySchema, mappings)
if err != nil {
@@ -391,12 +617,22 @@ func DataFromSchema(schema *jsonschema.Schema, mappings map[string]string) (*Dat
// If this is not a "Reference" we need to namespace the type name to the event
namespacedType = GoTypeName(eventType.Subject, mappings) +
GoTypeName(eventType.Predicate, mappings) + "SubjectContent" +
- GoTypeName(contentType.Name, mappings)
+ GoTypeName(contentType.Name, mappings) + "V" + strings.ReplaceAll(eventType.Version, ".", "_")
}
// We must use pointers here for "omitempty" to work when rendering to JSON
contentField.Type = "*" + namespacedType
case "string":
contentField.Type = "string"
+ case "array":
+ if propertySchema.Items2020 != nil &&
+ len(propertySchema.Items2020.Types.ToStrings()) == 1 &&
+ propertySchema.Items2020.Types.ToStrings()[0] == "string" {
+ contentField.Type = "[]string"
+ } else {
+ return nil, fmt.Errorf("content property type %s not allowed in schema %s", contentField.Type, propertySchema.Location)
+ }
+ case "anyOfStringEnum":
+ contentField.Type = "string"
default:
return nil, fmt.Errorf("content property type %s not allowed in schema %s", contentField.Type, propertySchema.Location)
}
@@ -435,10 +671,14 @@ func typesForSchema(name string, property *jsonschema.Schema, mappings map[strin
default:
otherNames = append(otherNames, name)
}
- if len(propertySchema.Types) != 1 {
+ var types = []string{}
+ if propertySchema.Types != nil {
+ types = propertySchema.Types.ToStrings()
+ }
+ if len(types) != 1 {
return nil, fmt.Errorf("only one type allowed for content property in schema %s", propertySchema.Location)
}
- if propertySchema.Types[0] != "string" {
+ if types[0] != "string" {
return nil, fmt.Errorf("only one string type allowed for content property in schema %s", propertySchema.Location)
}
field := ContentField{
diff --git a/tools/generator_test.go b/tools/generator_test.go
index 4248095..c5be95a 100644
--- a/tools/generator_test.go
+++ b/tools/generator_test.go
@@ -27,18 +27,20 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/google/go-cmp/cmp/cmpopts"
- "github.com/santhosh-tekuri/jsonschema/v5"
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+ "golang.org/x/mod/semver"
)
-const testSchemaJson = "../pkg/api/tests/schemas/foosubjectbarpredicate.json"
+const testSchemaJson = "../pkg/api/tests-v99.1/schemas/foosubjectbarpredicate.json"
+const specVersion = "0.4.1"
var (
testSchema *jsonschema.Schema
testSubject = "FooSubject"
testSubjectType = "fooSubject"
testPredicate = "BarPredicate"
- testVersion = "1.2.3"
- testVersionName = "1_2_3"
+ testVersion = "2.2.3"
+ testVersionName = "2_2_3"
)
func panicOnError(err error) {
@@ -49,7 +51,23 @@ func panicOnError(err error) {
func init() {
var err error
- testSchema, err = jsonschema.Compile(testSchemaJson)
+ pathLoader := PathLoader{}
+ loader := jsonschema.SchemeURLLoader{
+ "file": jsonschema.FileLoader{},
+ "http": pathLoader,
+ "https": pathLoader,
+ }
+ compiler = *jsonschema.NewCompiler()
+ compiler.UseLoader(loader)
+ schemas = Schemas{
+ IsTestData: false,
+ Data: make(map[string][]byte),
+ }
+ shortVersion := semver.MajorMinor("v" + specVersion)
+ schema_folder := filepath.Join("../pkg/api", SPEC_FOLDER_PREFIX+shortVersion, SCHEMA_FOLDERS[0]) // links
+ err = loadSchemas(schema_folder, &schemas)
+ panicOnError(err)
+ testSchema, err = compiler.Compile(testSchemaJson)
panicOnError(err)
}
@@ -80,7 +98,7 @@ func TestDataFromSchema(t *testing.T) {
}, {
Name: "ObjectField",
NameLower: "objectField",
- Type: "*FooSubjectBarPredicateSubjectContentObjectField",
+ Type: "*FooSubjectBarPredicateSubjectContentObjectFieldV2_2_3",
}},
ContentTypes: []ContentType{{
Name: "ObjectField",
@@ -200,3 +218,134 @@ func TestExecuteTemplate_Error(t *testing.T) {
t.Fatal("expected error executing template, got nil")
}
}
+
+// TestValidateStringEnumAnyOf tests the validation of the string enum anyOf case.
+func TestValidateStringEnumAnyOf(t *testing.T) {
+
+ var boolType jsonschema.Types = 4
+ var stringType jsonschema.Types = 32
+ tests := []struct {
+ name string
+ schema jsonschema.Schema
+ wantError string
+ }{{
+ name: "valid",
+ schema: jsonschema.Schema{
+ Location: "test_schema",
+ AnyOf: []*jsonschema.Schema{
+ {
+ Location: "test_schema#/properties/content/anyOf/0",
+ Types: &stringType, // []string{"string"},
+ Enum: &jsonschema.Enum{
+ Values: []interface{}{"foo", "bar"},
+ },
+ },
+ {
+ Location: "test_schema#/properties/content/anyOf/1",
+ Types: &stringType, // []string{"string"},
+ },
+ },
+ },
+ wantError: "",
+ }, {
+ name: "enum missing",
+ schema: jsonschema.Schema{
+ Location: "test_schema",
+ AnyOf: []*jsonschema.Schema{
+ {
+ Location: "test_schema#/properties/content/anyOf/0",
+ Types: &stringType, // []string{"string"},
+ },
+ {
+ Location: "test_schema#/properties/content/anyOf/1",
+ Types: &stringType, // []string{"string"},
+ },
+ },
+ },
+ wantError: "one enum required when using anyOf for types test_schema: ",
+ }, {
+ name: "too many enums",
+ schema: jsonschema.Schema{
+ Location: "test_schema",
+ AnyOf: []*jsonschema.Schema{
+ {
+ Location: "test_schema#/properties/content/anyOf/0",
+ Types: &stringType, // []string{"string"},
+ Enum: &jsonschema.Enum{
+ Values: []interface{}{"foo", "bar"},
+ },
+ },
+ {
+ Location: "test_schema#/properties/content/anyOf/1",
+ Types: &stringType, // []string{"string"},
+ Enum: &jsonschema.Enum{
+ Values: []interface{}{"foo", "bar"},
+ },
+ },
+ },
+ },
+ wantError: "only one enum allowed when using anyOf for types test_schema#/properties/content/anyOf/1: [string]",
+ }, {
+ name: "too many types",
+ schema: jsonschema.Schema{
+ Location: "test_schema",
+ AnyOf: []*jsonschema.Schema{
+ {
+ Location: "test_schema#/properties/content/anyOf/0",
+ Types: &stringType, // []string{"string"},
+ Enum: &jsonschema.Enum{
+ Values: []interface{}{"foo", "bar"},
+ },
+ },
+ {
+ Location: "test_schema#/properties/content/anyOf/1",
+ Types: &stringType, // []string{"string"},
+ },
+ {
+ Location: "test_schema#/properties/content/anyOf/2",
+ Types: &stringType, // []string{"string"},
+ },
+ },
+ },
+ wantError: "only two types allowed when using anyOf for content property in schema test_schema: ",
+ }, {
+ name: "wrong types",
+ schema: jsonschema.Schema{
+ Location: "test_schema",
+ AnyOf: []*jsonschema.Schema{
+ {
+ Location: "test_schema#/properties/content/anyOf/0",
+ Types: &stringType, // []string{"string"},
+ Enum: &jsonschema.Enum{
+ Values: []interface{}{"foo", "bar"},
+ },
+ },
+ {
+ Location: "test_schema#/properties/content/anyOf/1",
+ Types: &boolType, // []string{"bool"},
+ },
+ },
+ },
+ wantError: "only string allowed when using anyOf for types test_schema#/properties/content/anyOf/1: [boolean]",
+ }}
+ for _, tc := range tests {
+ t.Run(tc.name, func(t *testing.T) {
+ err := validateStringEnumAnyOf(&tc.schema)
+ if err != nil {
+ if tc.wantError == "" {
+ t.Fatalf("didn't expected it to fail, but it did: %v", err)
+ } else {
+ // Check the error is what is expected
+ if d := cmp.Diff(tc.wantError, err.Error()); d != "" {
+ t.Errorf("args: diff(-want,+got):\n%s", d)
+ }
+ }
+ }
+ if err == nil {
+ if tc.wantError != "" {
+ t.Fatalf("expected an error, but go none")
+ }
+ }
+ })
+ }
+}
diff --git a/tools/templates/docs.go.tmpl b/tools/templates/docs.go.tmpl
index b795ac0..40f9613 100644
--- a/tools/templates/docs.go.tmpl
+++ b/tools/templates/docs.go.tmpl
@@ -31,21 +31,32 @@ import "github.com/cdevents/sdk-go/pkg/api"
var SpecVersion = "{{.SpecVersion}}"
{{- range $i, $data := .Slice }}
+{{ $subject := .Subject }}
+{{ $predicate := .Predicate }}
+{{ $versionName := .VersionName }}
type {{.Subject}}{{.Predicate}}Event = api.{{.Subject}}{{.Predicate}}EventV{{.VersionName}}
+type {{.Subject}}{{.Predicate}}Subject = api.{{.Subject}}{{.Predicate}}SubjectV{{.VersionName}}
+{{ range $i, $type := .ContentTypes }}
+// {{$subject}}{{$subject}}SubjectContent{{ .Name }}V{{$versionName}} holds the content of a {{ .Name }} field in the content
+type {{$subject}}{{$predicate}}SubjectContent{{ .Name }} = api.{{$subject}}{{$predicate}}SubjectContent{{ .Name }}V{{$versionName}}
+{{ end }}
func New{{.Subject}}{{.Predicate}}Event() (*{{.Subject}}{{.Predicate}}Event, error) {
return api.New{{.Subject}}{{.Predicate}}EventV{{.VersionName}}(SpecVersion)
}
+
+var {{.Subject}}{{.Predicate}}EventType = api.{{.Subject}}{{.Predicate}}EventTypeV{{.VersionName}}
+
{{- end }}
// NewFromJsonBytes builds a new CDEventReader from a JSON string as []bytes
// This works by unmarshalling the context first, extracting the event type and using
// that to unmarshal the rest of the event into the correct object.
// It assumes the context can be unmarshalled in a `Context` object.
-func NewFromJsonBytes(event []byte) (api.CDEvent, error) {
- return api.NewFromJsonBytesContext[api.Context](event, CDEventsByUnversionedTypes)
+func NewFromJsonBytes(event []byte) (api.CDEvent{{if ne .SpecVersion "0.3.0"}}V04{{end}}, error) {
+ return api.NewFromJsonBytesContext[api.CDEvent{{if ne .SpecVersion "0.3.0"}}V04{{end}}](event, CDEventsByUnversionedTypes)
}
// Build a new CDEventReader from a JSON string
-func NewFromJsonString(event string) (api.CDEvent, error) {
+func NewFromJsonString(event string) (api.CDEvent{{if ne .SpecVersion "0.3.0"}}V04{{end}}, error) {
return NewFromJsonBytes([]byte(event))
}
\ No newline at end of file
diff --git a/tools/templates/event.go.tmpl b/tools/templates/event.go.tmpl
index 28d590c..0ba2813 100644
--- a/tools/templates/event.go.tmpl
+++ b/tools/templates/event.go.tmpl
@@ -24,11 +24,10 @@ SPDX-License-Identifier: Apache-2.0
package api
import (
- "fmt"
- "time"
-)
+ "time"
-var {{.SubjectLower}}{{.PredicateLower}}schema{{.VersionName}} = `{{ .Schema }}`
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
var (
// {{.Subject}}{{.Predicate}} event type v{{.Version}}
@@ -39,24 +38,28 @@ var (
}
)
-type {{.Subject}}{{.Predicate}}SubjectContent struct{
+type {{.Subject}}{{.Predicate}}SubjectContentV{{.VersionName}} struct{
{{ range $i, $field := .Contents }}
{{ .Name }} {{ .Type }} `json:"{{ .NameLower }}{{ if not .Required }},omitempty{{ end }}"{{ if eq .Name "ArtifactId" }} validate:"purl"{{ end }}`
{{ end }}
}
-type {{.Subject}}{{.Predicate}}Subject struct {
+type {{.Subject}}{{.Predicate}}SubjectV{{.VersionName}} struct {
SubjectBase
- Content {{.Subject}}{{.Predicate}}SubjectContent `json:"content"`
+ Content {{.Subject}}{{.Predicate}}SubjectContentV{{.VersionName}} `json:"content"`
}
-func (sc {{.Subject}}{{.Predicate}}Subject) GetSubjectType() SubjectType {
+func (sc {{.Subject}}{{.Predicate}}SubjectV{{.VersionName}}) GetSubjectType() SubjectType {
return "{{.SubjectType}}"
}
type {{.Subject}}{{.Predicate}}EventV{{.VersionName}} struct {
+{{- if eq .SpecVersion "0.3.0"}}
Context Context `json:"context"`
- Subject {{.Subject}}{{.Predicate}}Subject `json:"subject"`
+{{- else}}
+ Context ContextV04 `json:"context"`
+{{- end}}
+ Subject {{.Subject}}{{.Predicate}}SubjectV{{.VersionName}} `json:"subject"`
CDEventCustomData
}
@@ -110,6 +113,22 @@ func (e {{.Subject}}{{.Predicate}}EventV{{.VersionName}}) GetCustomDataContentTy
return e.CustomDataContentType
}
+{{- if ne .SpecVersion "0.3.0"}}
+// CDEventsReaderV04 implementation
+
+func (e {{.Subject}}{{.Predicate}}EventV{{.VersionName}}) GetChainId() string {
+ return e.Context.ChainId
+}
+
+func (e {{.Subject}}{{.Predicate}}EventV{{.VersionName}}) GetLinks() EmbeddedLinksArray {
+ return e.Context.Links
+}
+
+func (e {{.Subject}}{{.Predicate}}EventV{{.VersionName}}) GetSchemaUri() string {
+ return e.Context.SchemaUri
+}
+{{- end}}
+
// CDEventsWriter implementation
func (e *{{.Subject}}{{.Predicate}}EventV{{.VersionName}}) SetId(id string) {
@@ -146,11 +165,28 @@ func (e *{{.Subject}}{{.Predicate}}EventV{{.VersionName}}) SetCustomData(content
return nil
}
-func (e {{.Subject}}{{.Predicate}}EventV{{.VersionName}}) GetSchema() (string, string) {
+func (e {{.Subject}}{{.Predicate}}EventV{{.VersionName}}) GetSchema() (string, *jsonschema.Schema, error) {
eType := e.GetType()
- return fmt.Sprintf(CDEventsSchemaURLTemplate, CDEventsSpecVersion, eType.Subject, eType.Predicate), {{.SubjectLower}}{{.PredicateLower}}schema{{.VersionName}}
+ return {{if .IsTestData }}Test{{end}}CompiledSchemas.GetBySpecSubjectPredicate("{{.SpecVersion}}", eType.Subject, eType.Predicate)
}
+{{- if ne .SpecVersion "0.3.0"}}
+// CDEventsWriterV04 implementation
+
+func (e *{{.Subject}}{{.Predicate}}EventV{{.VersionName}}) SetChainId(chainId string) {
+ e.Context.ChainId = chainId
+}
+
+func (e *{{.Subject}}{{.Predicate}}EventV{{.VersionName}}) SetLinks(links EmbeddedLinksArray) {
+ e.Context.Links = links
+}
+
+func (e *{{.Subject}}{{.Predicate}}EventV{{.VersionName}}) SetSchemaUri(schema string) {
+ e.Context.SchemaUri = schema
+}
+{{- end}}
+
+
// Set subject custom fields
{{ range $i, $field := .Contents }}
func (e *{{$.Subject}}{{$.Predicate}}EventV{{$.VersionName}}) SetSubject{{ .Name }}({{ .NameLower }} {{ .Type }}) {
@@ -161,11 +197,21 @@ func (e *{{$.Subject}}{{$.Predicate}}EventV{{$.VersionName}}) SetSubject{{ .Name
// New creates a new {{.Subject}}{{.Predicate}}EventV{{.VersionName}}
func New{{.Subject}}{{.Predicate}}EventV{{.VersionName}}(specVersion string) (*{{.Subject}}{{.Predicate}}EventV{{.VersionName}}, error) {
e := &{{.Subject}}{{.Predicate}}EventV{{.VersionName}}{
+{{- if eq .SpecVersion "0.3.0"}}
Context: Context{
Type: {{.Subject}}{{.Predicate}}EventTypeV{{.VersionName}},
Version: specVersion,
+{{- else}}
+ Context: ContextV04{
+ Context{
+ Type: {{.Subject}}{{.Predicate}}EventTypeV{{.VersionName}},
+ Version: specVersion,
+ },
+ ContextLinks{},
+ ContextCustom{},
+{{- end}}
},
- Subject: {{.Subject}}{{.Predicate}}Subject{
+ Subject: {{.Subject}}{{.Predicate}}SubjectV{{.VersionName}}{
SubjectBase: SubjectBase{
Type: "{{.SubjectType}}",
},
@@ -186,8 +232,8 @@ func New{{.Subject}}{{.Predicate}}EventV{{.VersionName}}(specVersion string) (*{
}
{{ range $i, $type := .ContentTypes }}
-// {{$.Subject}}{{$.Predicate}}SubjectContent{{ .Name }} holds the content of a {{ .Name }} field in the content
-type {{$.Subject}}{{$.Predicate}}SubjectContent{{ .Name }} struct{
+// {{$.Subject}}{{$.Predicate}}SubjectContent{{ .Name }}V{{$.VersionName}} holds the content of a {{ .Name }} field in the content
+type {{$.Subject}}{{$.Predicate}}SubjectContent{{ .Name }}V{{$.VersionName}} struct{
{{ range $j, $field := .Fields }}
{{ .Name }} {{ .Type }} `json:"{{ .NameLower }}{{ if not .Required }},omitempty{{ end }}"`
{{ end }}
diff --git a/tools/templates/examples_test.go.tmpl b/tools/templates/examples_test.go.tmpl
index 8250941..b19ca39 100644
--- a/tools/templates/examples_test.go.tmpl
+++ b/tools/templates/examples_test.go.tmpl
@@ -21,7 +21,7 @@ limitations under the License.
SPDX-License-Identifier: Apache-2.0
*/
-package api_test
+package {{.SpecVersionName}}_test
import (
"github.com/cdevents/sdk-go/pkg/api"
@@ -30,12 +30,38 @@ import (
func init() {
// Create events equal to examples in the spec
- examplesProduced = make(map[string]api.CDEvent)
+ examplesProduced = make(map[string]api.CDEvent{{if ne .SpecVersion "0.3.0"}}V04{{end}})
+ // Set up test links
+ tags := api.Tags{
+ "foo1": "bar",
+ "foo2": "bar",
+ }
+ reference := api.EventReference{
+ ContextId: testContextId,
+ }
+ elr := api.NewEmbeddedLinkRelation()
+ elr.SetTags(tags)
+ elr.SetLinkKind("TRIGGER")
+ elr.SetTarget(reference)
+ elp := api.NewEmbeddedLinkPath()
+ elp.SetTags(tags)
+ elp.SetFrom(reference)
+ ele := api.NewEmbeddedLinkEnd()
+ ele.SetTags(tags)
+ ele.SetFrom(reference)
+ testLinks = api.EmbeddedLinksArray{
+ elr, elp, ele,
+ }
+
+ // Create events for test
{{- range $i, $data := .Slice }}
// {{ .Subject }}{{ .Predicate }} Event producer
new{{ .Subject }}{{ .Predicate }}, _ := spec{{ $.SpecVersionName }}.New{{ .Subject }}{{ .Predicate }}Event()
setContext(new{{ .Subject }}{{ .Predicate }}, testSubjectId)
+{{- if gt $.SpecVersion "0.3.0"}}
+ setContextV04(new{{ .Subject }}{{ .Predicate }}, true, true)
+{{- end}}
example{{ .Subject }}{{ .Predicate }}Event(new{{ .Subject }}{{ .Predicate }})
examplesProduced[new{{ .Subject }}{{ .Predicate }}.GetType().Short()] = new{{ .Subject }}{{ .Predicate }}
{{ end }}
diff --git a/tools/templates/factory_test.go.tmpl b/tools/templates/factory_test.go.tmpl
index c45528f..423a3f8 100644
--- a/tools/templates/factory_test.go.tmpl
+++ b/tools/templates/factory_test.go.tmpl
@@ -21,9 +21,12 @@ limitations under the License.
SPDX-License-Identifier: Apache-2.0
*/
-package api_test
+package {{.SpecVersionName}}_test
-import "github.com/cdevents/sdk-go/pkg/api"
+import (
+ "github.com/cdevents/sdk-go/pkg/api"
+ api{{.SpecVersionName}} "github.com/cdevents/sdk-go/pkg/api/{{.SpecVersionName}}"
+)
func init() {
tests = []testNewCDEventType{}
@@ -31,15 +34,25 @@ func init() {
{{- range $i, $data := .Slice }}
tests = append(tests, testNewCDEventType{
name: "{{ .SubjectLower }} {{ .PredicateLower }}",
- eventType: api.{{ .Subject }}{{ .Predicate }}EventTypeV{{.VersionName}}.String(),
- expectedEvent: &api.{{ .Subject }}{{ .Predicate }}EventV{{.VersionName}}{
+ eventType: api{{$.SpecVersionName}}.{{ .Subject }}{{ .Predicate }}EventType.String(),
+ expectedEvent: &api{{$.SpecVersionName}}.{{ .Subject }}{{ .Predicate }}Event{
+{{- if eq $.SpecVersion "0.3.0"}}
+ Context: api.Context{
+ Type: api{{$.SpecVersionName}}.{{ .Subject }}{{ .Predicate }}EventType,
+ Timestamp: timeNow(),
+ Id: testUUID(),
+ Version: "{{ $.SpecVersion }}",
+{{- else}}
+ Context: api.ContextV04{
Context: api.Context{
- Type: api.{{ .Subject }}{{ .Predicate }}EventTypeV{{.VersionName}},
+ Type: api{{$.SpecVersionName}}.{{ .Subject }}{{ .Predicate }}EventType,
Timestamp: timeNow(),
Id: testUUID(),
- Version: api.CDEventsSpecVersion,
+ Version: "{{ $.SpecVersion }}",
},
- Subject: api.{{ .Subject }}{{ .Predicate }}Subject{
+{{- end}}
+ },
+ Subject: api{{$.SpecVersionName}}.{{ .Subject }}{{ .Predicate }}Subject{
SubjectBase: api.SubjectBase{
Type: "{{ .SubjectType }}",
},
diff --git a/tools/templates/schemas.go.tmpl b/tools/templates/schemas.go.tmpl
new file mode 100644
index 0000000..573f50c
--- /dev/null
+++ b/tools/templates/schemas.go.tmpl
@@ -0,0 +1,100 @@
+// Code generated by tools/generator. DO NOT EDIT.
+{{if .IsTestData}}
+//go:build testonly
+{{end}}
+
+/*
+Copyright 2024 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package api
+
+import (
+{{- if not .IsTestData}}
+ "fmt"
+{{- end}}
+ "encoding/json"
+
+ jsonschema "github.com/santhosh-tekuri/jsonschema/v6"
+)
+
+{{- if not .IsTestData}}
+type SchemaDB map[string]*jsonschema.Schema
+{{- end}}
+
+var (
+ // All compiled schemas by Id
+ {{if .IsTestData}}Test{{end}}CompiledSchemas SchemaDB
+
+ // All schemas as string by Id
+ {{if .IsTestData}}Test{{end}}SchemasById = map[string]string{
+{{- range $id, $data := .Data }}
+ "{{ $id }}": `{{ printf "%s" $data }}`,
+{{- end }}
+}
+)
+
+func init() {
+ compiler, err := new{{if .IsTestData}}Test{{end}}JsonSchemaCompiler()
+ panicOnError(err)
+ {{if .IsTestData}}Test{{end}}CompiledSchemas = make(map[string]*jsonschema.Schema)
+ {{- if .IsTestData}}
+ // For tests load non-test schemas first to cover links and custom
+ for url, _ := range SchemasById {
+ sch, err := compiler.Compile(url)
+ panicOnError(err)
+ TestCompiledSchemas[url] = sch
+ }
+ {{- end}}
+ for url, _ := range {{if .IsTestData}}Test{{end}}SchemasById {
+ sch, err := compiler.Compile(url)
+ panicOnError(err)
+ {{if .IsTestData}}Test{{end}}CompiledSchemas[url] = sch
+ }
+}
+
+{{- if not .IsTestData}}
+func (db SchemaDB) GetBySpecSubjectPredicate(specVersion, subject, predicate string) (string, *jsonschema.Schema, error) {
+ id := fmt.Sprintf(CDEventsSchemaURLTemplate, specVersion, subject, predicate)
+ if schemaString, found := db[id]; found {
+ return id, schemaString, nil
+ }
+ return "", nil, fmt.Errorf("event %s/%s not found for spec %s in local schema DB", specVersion, subject, predicate)
+}
+{{- end}}
+
+func new{{if .IsTestData}}Test{{end}}JsonSchemaCompiler() (*jsonschema.Compiler, error) {
+ {{- if .IsTestData}}
+ c, err := newJsonSchemaCompiler()
+ if err != nil {
+ return nil, err
+ }
+ {{- else}}
+ c := jsonschema.NewCompiler()
+ {{- end}}
+ for url, content := range {{if .IsTestData}}Test{{end}}SchemasById {
+ var loaded map[string]interface{}
+ err := json.Unmarshal([]byte(content), &loaded)
+ if err != nil {
+ return nil, err
+ }
+ if err:=c.AddResource(url, loaded); err!=nil {
+ return nil, err
+ }
+ }
+ return c, nil
+}
diff --git a/tools/templates/shared_test.go.tmpl b/tools/templates/shared_test.go.tmpl
new file mode 100644
index 0000000..965a9b4
--- /dev/null
+++ b/tools/templates/shared_test.go.tmpl
@@ -0,0 +1,95 @@
+// Code generated by tools/generator. DO NOT EDIT.
+{{if .IsTestData}}
+//go:build testonly
+{{end}}
+
+/*
+Copyright 2023 The CDEvents Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+SPDX-License-Identifier: Apache-2.0
+*/
+
+package {{.SpecVersionName}}_test
+
+import "github.com/cdevents/sdk-go/pkg/api"
+
+func panicOnError(err error) {
+ if err != nil {
+ panic(err.Error())
+ }
+}
+
+type testData struct {
+ TestValues []map[string]string `json:"testValues"`
+}
+
+var (
+ // Examples Data
+ testSource = "/event/source/123"
+ testSubjectId = "mySubject123"
+ testValue = "testValue"
+ testArtifactId = "pkg:oci/myapp@sha256%3A0b31b1c02ff458ad9b7b81cbdf8f028bd54699fa151f221d1e8de6817db93427"
+ testDataJson = testData{TestValues: []map[string]string{{`{{"k1": "v1"}, {"k2": "v2"}}`}}}
+ testDataJsonUnmarshalled = map[string]any{
+ "testValues": []any{map[string]any{"k1": string("v1")}, map[string]any{"k2": string("v2")}},
+ }
+ testDataXml = []byte("testData")
+ testChangeId = "myChange123"
+
+ // V04+ Examples Data
+ testChainId = "4c8cb7dd-3448-41de-8768-eec704e2829b"
+ testLinks api.EmbeddedLinksArray
+ testContextId = "5328c37f-bb7e-4bb7-84ea-9f5f85e4a7ce"
+ testSchemaUri = "https://myorg.com/schema/custom"
+)
+
+func init() {
+ // Set up test links
+ tags := api.Tags{
+ "foo1": "bar",
+ "foo2": "bar",
+ }
+ reference := api.EventReference{
+ ContextId: testContextId,
+ }
+ elr := api.NewEmbeddedLinkRelation()
+ elr.SetTags(tags)
+ elr.SetLinkKind("TRIGGER")
+ elr.SetTarget(reference)
+ elp := api.NewEmbeddedLinkPath()
+ elp.SetTags(tags)
+ elp.SetFrom(reference)
+ ele := api.NewEmbeddedLinkEnd()
+ ele.SetTags(tags)
+ ele.SetFrom(reference)
+ testLinks = api.EmbeddedLinksArray{
+ elr, elp, ele,
+ }
+}
+
+func setContext(event api.CDEventWriter, subjectId string) {
+ event.SetSource(testSource)
+ event.SetSubjectId(subjectId)
+}
+
+func setContextV04(event api.CDEventWriterV04, chainId, schemaUri bool) {
+ if chainId {
+ event.SetChainId(testChainId)
+ }
+ if schemaUri {
+ event.SetSchemaUri(testSchemaUri)
+ }
+ event.SetLinks(testLinks)
+}
\ No newline at end of file
diff --git a/tools/templates/types.go.tmpl b/tools/templates/types.go.tmpl
index f26b0e2..a8cbe49 100644
--- a/tools/templates/types.go.tmpl
+++ b/tools/templates/types.go.tmpl
@@ -29,17 +29,17 @@ import (
"github.com/cdevents/sdk-go/pkg/api"
)
-var CDEventsTypes = []api.CDEvent{
+var CDEventsTypes = []api.CDEvent{{if ne .SpecVersion "0.3.0"}}V04{{end}}{
{{- range $i, $data := .Slice }}
&{{ .Subject }}{{ .Predicate }}Event{},
{{- end }}
}
-var CDEventsByUnversionedTypes map[string]api.CDEvent
+var CDEventsByUnversionedTypes map[string]api.CDEvent{{if ne .SpecVersion "0.3.0"}}V04{{end}}
func init() {
// Set up CDEventsByUnversionedTypes for convenience
- CDEventsByUnversionedTypes = make(map[string]api.CDEvent)
+ CDEventsByUnversionedTypes = make(map[string]api.CDEvent{{if ne .SpecVersion "0.3.0"}}V04{{end}})
for _, event := range CDEventsTypes {
CDEventsByUnversionedTypes[event.GetType().UnversionedString()] = event
}