{"action":"created","comment":{"url":"https://api.github.com/repos/openeventing/spec/pulls/comments/156492690","pull_request_review_id":82979212,"id":156492690,"diff_hunk":"@@ -0,0 +1,442 @@\n+# OpenEventing - Verson 0.1\n+\n+OpenEventing is a vendor-neutral specification for event data.\n+\n+## Overview\n+Events are everywhere.  However, event publishers tend to describe events\n+differently.\n+\n+The lack of a common way of describing events means developers must constantly\n+re-learn how to receive events.  This also limits the potential for libraries,\n+tooling and infrastructure to aide the delivery of event data across\n+environments, like SDKs, event routers or tracing systems.  The portability\n+and productivity we can achieve from event data is hindered overall.\n+\n+Enter OpenEventing, a specification for describing event data in a common way.\n+OpenEventing seeks to ease event declaration and delivery across services,\n+platforms and beyond.\n+\n+OpenEventing is a new effort and it's still under active development.  However,\n+its working group has received a surprising amount of industry interest,\n+ranging from major cloud providers to popular SaaS companies.  Our end goal is\n+to offer this specification to the Cloud Native Computing Foundation.\n+\n+## Status\n+A coalition of industry stakeholders have expressed interest in collaborating\n+on this specification (though this does not constitute an endorsement on their\n+behalf) and have begun iterating on early drafts.\n+\n+Version 0.4 of OpenEventing represents the end result of a working session\n+between engineers at Amazon, Google, and Microsoft.  Many items are left to be\n+discussed, but this specification does represent the beginning of a level of\n+consensus between these major industry stakeholders, which is exciting.  Now,\n+we are opening up this specification for public feedback and conducting all\n+working sessions through the Serverless Working Group within the CNCF.\n+Overall, in this early stage, almost all stakeholders have requested the\n+initial scope of the specification be kept small to ease adoption and\n+implementation.  At this time we are focused on the following scope:\n+\n+* Agree upon a set of event metadata attributes (“context”) that:\n+  * Offer a basic description of the event and the data it carries.\n+  * Are currently implemented and semantically similar across multiple\n+    platforms.\n+  * Can be delivered separately from the event data in the transport headers\n+    (e.g. HTTP, AMQP, Kafka) or together with the data in a serialized fashion\n+    (e.g. JSON, protobuf, Avro).\n+  * Include a description of the transport/protocol and encoding, with an\n+    initial focus on HTTP.\n+  * Can be extended to support experimental or uncommon features, while being\n+    clearly indicated as an extension (e.g. extensions use a common prefix).\n+  * Allow for evolution of both the payload and OpenEventing definition (e.g.\n+    versioning).\n+  * Can be embedded at different stages along the route of the event by\n+    middleware (e.g. a router may add transport or auth information).\n+* Establish a backlog of prospective event metadata attributes (“context”)\n+  for potential inclusion in the future.\n+* Include use-case examples to help users understand the value of OpenEventing,\n+  with an initial focus on HTTP and Functions-as-a-Service/Serverless computing.\n+* Determine process and overall governance of the specification.\n+* Discuss additional architecture components that complement this specification.\n+\n+Have questions or want to contribute? Please join the Serverless Working\n+Group within the CNCF.\n+\n+## Glossary\n+\n+### Occurrence\n+When something happens (or doesn’t happen) and is detected by a software\n+system.  This is most typically when that system receives an external signal\n+(e.g HTTP or RPC), though could also be through observing a changing value\n+ (e.g. an IoT sensor or period of inactivity).\n+\n+### Event\n+Data representing an occurrence, a change in state, that something happened\n+(or did not happen), usually used for notification.  Events include context\n+and data.  Each occurrence may be uniquely identified with data in the event.\n+Events should be considered as facts that have no given destination, whereas\n+messages contain intent and tend to transport data from a source to a given\n+destination.\n+\n+### Context\n+A set of consistent metadata attributes included with the event about the\n+occurrence that tools and developers can rely upon to better handle the event.\n+These attributes describe the event and the structure of its data, include\n+information about the originating system, and more.\n+\n+### Data\n+Domain-specific information about the occurrence (i.e. the payload).  This may\n+include minimal information about the occurrence, details about the data that\n+was changed, or more.\n+\n+### Protocol\n+Events can be delivered through various industry standard protocol (e.g. HTTP,\n+AMQP, MQTT, SMTP), open-source protocols (e.g. Kafka, NATS), or\n+platform/vendor specific protocols (AWS Kinesis, Azure Event Grid).\n+\n+## Context Attributes\n+Every event in the OpenEventing specification includes context which is a set\n+of consistent metadata attributes tools and developers can rely upon to\n+understand how to handle the event and its data.\n+\n+Context is designed to be delivered separately from the event data (e.g. in\n+protocol headers or protocol specific attributes).  This allows the context\n+to be analyzed without having to deserialize the event data.  The context can\n+also be serialized with the event data (e.g. a JSON implementation may\n+consist of one JSON object that contains both context and data).\n+\n+### namespace\n+* Type: String\n+* Description: Identifier that uniquely identifies the organization publishing\n+  the event.\n+* Examples:\n+  * kafka.apache.org\n+  * com.microsoft.azure\n+\n+### event-type\n+* Type: String\n+* Description: Type of the event.  Producers can specify the format of this,\n+  depending on their service.  This enables the interpretation of data, and\n+  can be used for routing, policy and more.\n+* Examples:\n+  * customer.created\n+* Constraints:\n+  * Required\n+* Notes:\n+  * It is up for discussion whether namespace could be included as a prefix in\n+    event-type.\n+  * It is up for discussion whether the event-type should also include a\n+    version.  It’s currently included in a separate attribute titled\n+    event-type-version.\n+  * It is up for discussion whether this specification should enforce a type\n+    format.\n+\n+### event-type-version\n+* Type: String\n+* Description: The version of the event-type.  This enables the interpretation\n+  of data by eventual consumers, requires the consumer to be knowledgeable about\n+  the producer.\n+* Notes:\n+  * It is up for discussion whether this is applicable to the whole event or\n+    to the data payload alone.  Currently, event-type-version covers the data,\n+    while open-events-version covers the context.\n+\n+### open-events-version\n+* Type: String\n+* Description: The version of the OpenEventing specification which the event\n+  uses.  This enables the interpretation of the context.\n+\n+### resource\n+* Type: Object\n+* Description: This describes the software instance that emits the event at\n+  runtime (i.e. the producer).  It contains sub-properties (listed below)\n+\n+\n+### resource-type\n+* Type: String\n+* Description: Type of the event source. Providers define list of event sources.\n+* Constraints:\n+  * Required\n+* Examples:\n+  * s3\n+\n+### resource-id\n+* Type: String\n+* Description: ID of the event source.\n+* Constraints:\n+  * Required\n+*Examples:\n+  *my.s3.bucket\n+\n+### event-id\n+* Type: String\n+* Description: ID of the event.  Can be specified by the producer.  The\n+  semantics of this string are explicitly undefined to ease the implementation\n+  of producers.  Enables deduplication.\n+* Examples:\n+  * A database commit ID\n+* Constraints:\n+  * Required\n+  * Unique per producer\n+\n+### correlation-id\n+* Type: String\n+* Description: Correlation ID of event that triggered this event to be\n+  created (if any). If not triggered in response to an event, a unique ID.\n+  Can be specified by the producer if event not produced in response to an\n+  event. Enables traceability through systems.\n+* Examples:\n+  * Event A generated with unique correlation-id. Event handler receives event\n+    and generates a new event in response, Event B. Event B copies the\n+    correlation-id of Event A so that the chain of events can be properly\n+    correlated.\n+* Constraints:\n+  * Optional\n+\n+### causation-id","path":"spec.md","position":239,"original_position":195,"commit_id":"bd61a186191224dc1854dd51baf031954f763dcb","original_commit_id":"1a131a77fcd250fed8c425ae675f13561e641a0e","user":{"login":"duglin","id":1944671,"avatar_url":"https://avatars1.githubusercontent.com/u/1944671?v=4","gravatar_id":"","url":"https://api.github.com/users/duglin","html_url":"https://github.com/duglin","followers_url":"https://api.github.com/users/duglin/followers","following_url":"https://api.github.com/users/duglin/following{/other_user}","gists_url":"https://api.github.com/users/duglin/gists{/gist_id}","starred_url":"https://api.github.com/users/duglin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duglin/subscriptions","organizations_url":"https://api.github.com/users/duglin/orgs","repos_url":"https://api.github.com/users/duglin/repos","events_url":"https://api.github.com/users/duglin/events{/privacy}","received_events_url":"https://api.github.com/users/duglin/received_events","type":"User","site_admin":false},"body":"No idea why this comment didn't go away when I moved the entry, but I did move it as you can see.","created_at":"2017-12-12T20:56:45Z","updated_at":"2017-12-12T20:56:46Z","html_url":"https://github.com/openeventing/spec/pull/1#discussion_r156492690","pull_request_url":"https://api.github.com/repos/openeventing/spec/pulls/1","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/openeventing/spec/pulls/comments/156492690"},"html":{"href":"https://github.com/openeventing/spec/pull/1#discussion_r156492690"},"pull_request":{"href":"https://api.github.com/repos/openeventing/spec/pulls/1"}},"in_reply_to_id":156452038},"pull_request":{"url":"https://api.github.com/repos/openeventing/spec/pulls/1","id":157469254,"html_url":"https://github.com/openeventing/spec/pull/1","diff_url":"https://github.com/openeventing/spec/pull/1.diff","patch_url":"https://github.com/openeventing/spec/pull/1.patch","issue_url":"https://api.github.com/repos/openeventing/spec/issues/1","number":1,"state":"open","locked":false,"title":"initial spec","user":{"login":"duglin","id":1944671,"avatar_url":"https://avatars1.githubusercontent.com/u/1944671?v=4","gravatar_id":"","url":"https://api.github.com/users/duglin","html_url":"https://github.com/duglin","followers_url":"https://api.github.com/users/duglin/followers","following_url":"https://api.github.com/users/duglin/following{/other_user}","gists_url":"https://api.github.com/users/duglin/gists{/gist_id}","starred_url":"https://api.github.com/users/duglin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duglin/subscriptions","organizations_url":"https://api.github.com/users/duglin/orgs","repos_url":"https://api.github.com/users/duglin/repos","events_url":"https://api.github.com/users/duglin/events{/privacy}","received_events_url":"https://api.github.com/users/duglin/received_events","type":"User","site_admin":false},"body":"Signed-off-by: Doug Davis <dug@us.ibm.com>","created_at":"2017-12-11T02:59:52Z","updated_at":"2017-12-12T20:56:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d80f7843efde9ace94a93f4c4bd417c54b011aa3","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/openeventing/spec/pulls/1/commits","review_comments_url":"https://api.github.com/repos/openeventing/spec/pulls/1/comments","review_comment_url":"https://api.github.com/repos/openeventing/spec/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openeventing/spec/issues/1/comments","statuses_url":"https://api.github.com/repos/openeventing/spec/statuses/bd61a186191224dc1854dd51baf031954f763dcb","head":{"label":"duglin:initalSpec","ref":"initalSpec","sha":"bd61a186191224dc1854dd51baf031954f763dcb","user":{"login":"duglin","id":1944671,"avatar_url":"https://avatars1.githubusercontent.com/u/1944671?v=4","gravatar_id":"","url":"https://api.github.com/users/duglin","html_url":"https://github.com/duglin","followers_url":"https://api.github.com/users/duglin/followers","following_url":"https://api.github.com/users/duglin/following{/other_user}","gists_url":"https://api.github.com/users/duglin/gists{/gist_id}","starred_url":"https://api.github.com/users/duglin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duglin/subscriptions","organizations_url":"https://api.github.com/users/duglin/orgs","repos_url":"https://api.github.com/users/duglin/repos","events_url":"https://api.github.com/users/duglin/events{/privacy}","received_events_url":"https://api.github.com/users/duglin/received_events","type":"User","site_admin":false},"repo":{"id":113702066,"name":"spec","full_name":"duglin/spec","owner":{"login":"duglin","id":1944671,"avatar_url":"https://avatars1.githubusercontent.com/u/1944671?v=4","gravatar_id":"","url":"https://api.github.com/users/duglin","html_url":"https://github.com/duglin","followers_url":"https://api.github.com/users/duglin/followers","following_url":"https://api.github.com/users/duglin/following{/other_user}","gists_url":"https://api.github.com/users/duglin/gists{/gist_id}","starred_url":"https://api.github.com/users/duglin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/duglin/subscriptions","organizations_url":"https://api.github.com/users/duglin/orgs","repos_url":"https://api.github.com/users/duglin/repos","events_url":"https://api.github.com/users/duglin/events{/privacy}","received_events_url":"https://api.github.com/users/duglin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/duglin/spec","description":"OpenEventing Specification","fork":true,"url":"https://api.github.com/repos/duglin/spec","forks_url":"https://api.github.com/repos/duglin/spec/forks","keys_url":"https://api.github.com/repos/duglin/spec/keys{/key_id}","collaborators_url":"https://api.github.com/repos/duglin/spec/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/duglin/spec/teams","hooks_url":"https://api.github.com/repos/duglin/spec/hooks","issue_events_url":"https://api.github.com/repos/duglin/spec/issues/events{/number}","events_url":"https://api.github.com/repos/duglin/spec/events","assignees_url":"https://api.github.com/repos/duglin/spec/assignees{/user}","branches_url":"https://api.github.com/repos/duglin/spec/branches{/branch}","tags_url":"https://api.github.com/repos/duglin/spec/tags","blobs_url":"https://api.github.com/repos/duglin/spec/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/duglin/spec/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/duglin/spec/git/refs{/sha}","trees_url":"https://api.github.com/repos/duglin/spec/git/trees{/sha}","statuses_url":"https://api.github.com/repos/duglin/spec/statuses/{sha}","languages_url":"https://api.github.com/repos/duglin/spec/languages","stargazers_url":"https://api.github.com/repos/duglin/spec/stargazers","contributors_url":"https://api.github.com/repos/duglin/spec/contributors","subscribers_url":"https://api.github.com/repos/duglin/spec/subscribers","subscription_url":"https://api.github.com/repos/duglin/spec/subscription","commits_url":"https://api.github.com/repos/duglin/spec/commits{/sha}","git_commits_url":"https://api.github.com/repos/duglin/spec/git/commits{/sha}","comments_url":"https://api.github.com/repos/duglin/spec/comments{/number}","issue_comment_url":"https://api.github.com/repos/duglin/spec/issues/comments{/number}","contents_url":"https://api.github.com/repos/duglin/spec/contents/{+path}","compare_url":"https://api.github.com/repos/duglin/spec/compare/{base}...{head}","merges_url":"https://api.github.com/repos/duglin/spec/merges","archive_url":"https://api.github.com/repos/duglin/spec/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/duglin/spec/downloads","issues_url":"https://api.github.com/repos/duglin/spec/issues{/number}","pulls_url":"https://api.github.com/repos/duglin/spec/pulls{/number}","milestones_url":"https://api.github.com/repos/duglin/spec/milestones{/number}","notifications_url":"https://api.github.com/repos/duglin/spec/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/duglin/spec/labels{/name}","releases_url":"https://api.github.com/repos/duglin/spec/releases{/id}","deployments_url":"https://api.github.com/repos/duglin/spec/deployments","created_at":"2017-12-09T21:20:39Z","updated_at":"2017-12-09T21:18:13Z","pushed_at":"2017-12-12T20:51:14Z","git_url":"git://github.com/duglin/spec.git","ssh_url":"git@github.com:duglin/spec.git","clone_url":"https://github.com/duglin/spec.git","svn_url":"https://github.com/duglin/spec","homepage":null,"size":6,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openeventing:master","ref":"master","sha":"f47997feae0ecb7c40697ba256be88118cdbb9cb","user":{"login":"openeventing","id":32076828,"avatar_url":"https://avatars2.githubusercontent.com/u/32076828?v=4","gravatar_id":"","url":"https://api.github.com/users/openeventing","html_url":"https://github.com/openeventing","followers_url":"https://api.github.com/users/openeventing/followers","following_url":"https://api.github.com/users/openeventing/following{/other_user}","gists_url":"https://api.github.com/users/openeventing/gists{/gist_id}","starred_url":"https://api.github.com/users/openeventing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openeventing/subscriptions","organizations_url":"https://api.github.com/users/openeventing/orgs","repos_url":"https://api.github.com/users/openeventing/repos","events_url":"https://api.github.com/users/openeventing/events{/privacy}","received_events_url":"https://api.github.com/users/openeventing/received_events","type":"Organization","site_admin":false},"repo":{"id":113701924,"name":"spec","full_name":"openeventing/spec","owner":{"login":"openeventing","id":32076828,"avatar_url":"https://avatars2.githubusercontent.com/u/32076828?v=4","gravatar_id":"","url":"https://api.github.com/users/openeventing","html_url":"https://github.com/openeventing","followers_url":"https://api.github.com/users/openeventing/followers","following_url":"https://api.github.com/users/openeventing/following{/other_user}","gists_url":"https://api.github.com/users/openeventing/gists{/gist_id}","starred_url":"https://api.github.com/users/openeventing/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openeventing/subscriptions","organizations_url":"https://api.github.com/users/openeventing/orgs","repos_url":"https://api.github.com/users/openeventing/repos","events_url":"https://api.github.com/users/openeventing/events{/privacy}","received_events_url":"https://api.github.com/users/openeventing/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openeventing/spec","description":"OpenEventing Specification","fork":false,"url":"https://api.github.com/repos/openeventing/spec","forks_url":"https://api.github.com/repos/openeventing/spec/forks","keys_url":"https://api.github.com/repos/openeventing/spec/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openeventing/spec/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openeventing/spec/teams","hooks_url":"https://api.github.com/repos/openeventing/spec/hooks","issue_events_url":"https://api.github.com/repos/openeventing/spec/issues/events{/number}","events_url":"https://api.github.com/repos/openeventing/spec/events","assignees_url":"https://api.github.com/repos/openeventing/spec/assignees{/user}","branches_url":"https://api.github.com/repos/openeventing/spec/branches{/branch}","tags_url":"https://api.github.com/repos/openeventing/spec/tags","blobs_url":"https://api.github.com/repos/openeventing/spec/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openeventing/spec/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openeventing/spec/git/refs{/sha}","trees_url":"https://api.github.com/repos/openeventing/spec/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openeventing/spec/statuses/{sha}","languages_url":"https://api.github.com/repos/openeventing/spec/languages","stargazers_url":"https://api.github.com/repos/openeventing/spec/stargazers","contributors_url":"https://api.github.com/repos/openeventing/spec/contributors","subscribers_url":"https://api.github.com/repos/openeventing/spec/subscribers","subscription_url":"https://api.github.com/repos/openeventing/spec/subscription","commits_url":"https://api.github.com/repos/openeventing/spec/commits{/sha}","git_commits_url":"https://api.github.com/repos/openeventing/spec/git/commits{/sha}","comments_url":"https://api.github.com/repos/openeventing/spec/comments{/number}","issue_comment_url":"https://api.github.com/repos/openeventing/spec/issues/comments{/number}","contents_url":"https://api.github.com/repos/openeventing/spec/contents/{+path}","compare_url":"https://api.github.com/repos/openeventing/spec/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openeventing/spec/merges","archive_url":"https://api.github.com/repos/openeventing/spec/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openeventing/spec/downloads","issues_url":"https://api.github.com/repos/openeventing/spec/issues{/number}","pulls_url":"https://api.github.com/repos/openeventing/spec/pulls{/number}","milestones_url":"https://api.github.com/repos/openeventing/spec/milestones{/number}","notifications_url":"https://api.github.com/repos/openeventing/spec/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openeventing/spec/labels{/name}","releases_url":"https://api.github.com/repos/openeventing/spec/releases{/id}","deployments_url":"https://api.github.com/repos/openeventing/spec/deployments","created_at":"2017-12-09T21:18:13Z","updated_at":"2017-12-09T21:18:13Z","pushed_at":"2017-12-12T20:51:15Z","git_url":"git://github.com/openeventing/spec.git","ssh_url":"git@github.com:openeventing/spec.git","clone_url":"https://github.com/openeventing/spec.git","svn_url":"https://github.com/openeventing/spec","homepage":null,"size":0,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openeventing/spec/pulls/1"},"html":{"href":"https://github.com/openeventing/spec/pull/1"},"issue":{"href":"https://api.github.com/repos/openeventing/spec/issues/1"},"comments":{"href":"https://api.github.com/repos/openeventing/spec/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/openeventing/spec/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/openeventing/spec/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openeventing/spec/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/openeventing/spec/statuses/bd61a186191224dc1854dd51baf031954f763dcb"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"duglin"}}