{"action":"created","comment":{"url":"https://api.github.com/repos/zalando/nakadi/pulls/comments/50728670","id":50728670,"diff_hunk":"@@ -0,0 +1,1232 @@\n+swagger: '2.0'\n+info:\n+  title: Nakadi Event Bus API Definition\n+  description: |\n+    -----------\n+    Definitions\n+    -----------\n+    Nakadi at its core aims at being a generic and content-agnostic event broker with a convenient API.\n+    In doing this, Nakadi abstracts away, as much as possible, details of the backing messaging\n+    infrastructure. The single currently supported messaging infrastructure is Kafka (Kinesis is planned\n+    for the future).\n+\n+    In Nakadi every Event has an EventType, and a **stream** of Events is exposed for each registered\n+    EventType.\n+\n+    An EventType defines properties relevant for the operation of its associated stream, namely:\n+\n+    * The **schema** of the Event of this EventType. The schema defines the accepted format of Events of an\n+    EventType and will be, if so desired, enforced by Nakadi. Usually Nakadi will respect the schema for\n+    the EventTypes in accordance to how an owning Application defines them.\n+    **Note:** *Currently the specification of the schema must be pushed into Nakadi on EventType creation;\n+    in the future, assuming that Applications will expose the schema for its owned resources, Nakadi might\n+    support fetching the schema directly from them.*\n+    Nakadi might define globally minimal schema compliance requirements (i.e. some fields that must be\n+    present on schemas of all EventTypes).\n+\n+    * The expected **validation** and **enrichment** procedures upon reception of an Event.\n+    (*TODO: define validation and enrichment*)\n+\n+    * The **ordering** expectations of Events in this stream. (*TODO: define ordering not in terms of\n+    partitioning*)\n+\n+    Except for defined enrichment rules, Nakadi will never manipulate the content of any Event.\n+\n+    Clients of Nakadi can be grouped in 2 categories: **Application owners** and **Clients** (clients in turn\n+    are both **Producers** and **Consumers** of Events). Application owners interact with Nakadi via the\n+    **Schema Registry API** for the definition of EventTypes, while Clients via the **Stream API** for\n+    submission and reception of Events. A low level **Topic API** is available, providing full control and\n+    responsibility of position tracking and partitioning (and therefore ordering) to the Clients.\n+\n+    The consumption of Events proceeds via the establishment of a named **Subscription** to an EventType.\n+    Subscriptions are persistent relationships from an Application (which might have several instances) and\n+    the stream of an EventType, whose consumption tracking is managed by Nakadi, freeing Consumers from any\n+    responsibility in tracking the current position on a Stream.\n+\n+\n+    Scope and status of this document\n+    -------------------------------\n+\n+    The present API specification is in **draft** state and is subject to change.\n+\n+    In this document, ready for review are included:\n+    * The Schema Registry API, including configuration possibilities for the Schema, Validation, Enrichment\n+    and Partitioning of Events, and their effects on reception of Events.\n+\n+    * The stantardised event format (see definition of Event, BusinessEvent and DataChangeEvent) (Note: at a\n+    later moment this will be configurable and not be inherent part of this API).\n+\n+    * Topic API (low level).\n+\n+    Other aspects of the Event Bus are at this moment to be defined and otherwise specificied, not included\n+    in this version of this specification.\n+\n+    Notable omissions here are:\n+    * The contract between Nakadi and clients in the context of the high-level API (i.e. the process for\n+    clients to establish subscriptions).\n+\n+    * Submission of events to topics in batched manner.\n+\n+    * Security scopes (OAuth) for the different operations\n+\n+    * Validation and Enrichment Strategies available in Nakadi are out of this document an can be consulted\n+    in an external document (TBD link to document).\n+\n+\n+  version: '0.5'\n+  contact:\n+    name: Team Aruha @ Zalando\n+    email: team-aruha+nakadi-maintainers@zalando.de\n+schemes:\n+  - https\n+consumes:\n+  - application/json\n+produces:\n+  - application/json\n+securityDefinitions:\n+  oauth2:\n+    type: oauth2\n+    flow: implicit\n+    authorizationUrl: 'https://auth.example.com/oauth2/tokeninfo'\n+\n+paths:\n+  /metrics:\n+    get:\n+      tags:\n+        - monitoring\n+      summary: Get monitoring metrics\n+      responses:\n+        '200':\n+          description: Ok\n+          schema:\n+            $ref: '#/definitions/Metrics'\n+        '401':\n+          description: Client is not authenticated\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '500':\n+          description: Server error\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '503':\n+          description: Not available\n+          schema:\n+            $ref: '#/definitions/Problem'\n+  /event-types:\n+    get:\n+      tags:\n+        - schema-registry-api\n+      description: Returns a list of all registered `EventType`s\n+      parameters:\n+        - name: X-Flow-Id\n+          in: header\n+          description: |\n+            The flow id of the request, which is written into the logs and passed to called services. Helpful\n+            for operational troubleshooting and log analysis.\n+          type: string\n+          format: flow-id\n+      responses:\n+        '200':\n+          description: Ok\n+          schema:\n+            type: array\n+            items:\n+              $ref: '#/definitions/EventType'\n+        '401':\n+          description: Client is not authenticated\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '500':\n+          description: Server error\n+          schema:\n+            $ref: '#/definitions/Problem'\n+\n+    post:\n+      tags:\n+        - schema-registry-api\n+      description: |\n+        Creates a new `EventType`.\n+\n+        **Implementation note:** The creation of an EventType implicitly creates the structures in the\n+        backing messaging implementation needed for the reception and persistency of the Events. Considering\n+        that at this time only Kafka is used, this corresponds to the creation of a Topic. If so desired,\n+        clients can interact directly with the topic using the low level API (for existing restrictions see\n+        the corresponding methods on the topic-api).\n+\n+        The fields validation-strategies, enrichment-strategies and partition-resolution-strategy have all an\n+        effect on the incoming Event of this EventType. For its impacts on the reception of events please\n+        consult the Event submission API methods.\n+\n+        * Validation strategies define an array of `EventValidationStrategy` to be evaluated on reception of\n+        an `Event` of this `EventType`. Details of usage can be found in an external document (TBD link to\n+        document).\n+        **Notes**: Some EventValidationStrategies might support additional parameters. The behaviour is\n+        specific to each strategy and one is suggested to consult its `doc` field for detailes of operation.\n+        The default `SchemaValidationStrategy` supports passing fields to be ignored if the qualifier matches\n+        the input.\n+\n+        * TDB Enrichment strategy\n+\n+        * TDB Partition resolution strategy\n+\n+        * The schema of an `EventType` is defined as an `EventTypeSchema`. Currently only json-schema is\n+        supported.\n+\n+        Following violations are enforced. Not meeting them will fail the request with a 422 Unprocessable\n+        entity (details are provided in the Problem object):\n+\n+        * Event name on creation not begin unique.\n+\n+        * Using `EventTypeSchema.type` other than json-schema or passing a `EventTypeSchema.schema`\n+        that is invalid with respect to the schema's type.\n+\n+        * Referring any of Validation, Enrichment or Partitioning strategies that does not exist or whose\n+        parameterization is deemed invalid.\n+\n+        Nakadi MIGHT impose necessary schema, validation and enrichment minimal configurations that MUST be\n+        followed by all EventTypes (examples include: validation rules to match the schema; enriching every\n+        Event with the reception date-type; adhering to a set of schema fields that are mandatory for all\n+        EventTypes). **The mechanism to set and inspect such rules is not defined at this time and might not\n+        be exposed in the API.**\n+\n+      parameters:\n+        - name: event-type\n+          in: body\n+          description: EventType to be created\n+          schema:\n+            type: object\n+            $ref: '#/definitions/EventType'\n+          required: true\n+      responses:\n+        '200':\n+          description: Ok\n+        '401':\n+          description: Client is not authenticated\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '422':\n+          description: Unprocessable Entity\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '500':\n+          description: Server error\n+          schema:\n+            $ref: '#/definitions/Problem'\n+\n+\n+  /event-types/{name}:\n+    get:\n+      tags:\n+        - schema-registry-api\n+      description: |\n+        Returns the `EventType` identified by its name.\n+      parameters:\n+        - name: name\n+          in: path\n+          description: Name of the EventType to load.\n+          type: string\n+          required: true\n+        - name: X-Flow-Id\n+          in: header\n+          description: |\n+            The flow id of the request, which is written into the logs and passed to called services. Helpful\n+            for operational troubleshooting and log analysis.\n+          type: string\n+          format: flow-id\n+      responses:\n+        '200':\n+          description: Ok\n+          schema:\n+            $ref: '#/definitions/EventType'\n+        '401':\n+          description: Client is not authenticated\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '404':\n+          description: EventType not found\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '500':\n+          description: Server error\n+          schema:\n+            $ref: '#/definitions/Problem'\n+\n+    put:\n+      tags:\n+        - schema-registry-api\n+      description: |\n+        Updates the `EventType` identified by its name. Behaviour is the same as creation of `EventType` (See\n+        POST /event-type) except where noted below.\n+\n+        The name and the topic fields cannot be changed. Attempting to do so will result in a 422 failure.\n+\n+        At this moment changes in the schema are not supported and will produce a 422 failure. (TODO: define\n+        conditions for backwards compatible extensions in the schema)\n+      parameters:\n+        - name: name\n+          in: path\n+          description: Name of the EventType to update.\n+          type: string\n+          required: true\n+        - name: event-type\n+          in: body\n+          description: EventType to be updated.\n+          schema:\n+            type: object\n+            $ref: '#/definitions/EventType'\n+          required: true\n+        - name: X-Flow-Id\n+          in: header\n+          description: |\n+            The flow id of the request, which is written into the logs and passed to called services. Helpful\n+            for operational troubleshooting and log analysis.\n+          type: string\n+          format: flow-id\n+      responses:\n+        '200':\n+          description: Ok\n+        '401':\n+          description: Client is not authenticated\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '404':\n+          description: EventType not found.\n+          schema:\n+              $ref: '#/definitions/Problem'\n+        '422':\n+          description: Unprocessable Entity\n+          schema:\n+            $ref: '#/definitions/Problem'\n+        '500':\n+          description: Server error\n+          schema:\n+            $ref: '#/definitions/Problem'\n+\n+  /event-types/{name}/events:\n+    post:\n+      tags:\n+        - stream-api\n+      description: |\n+        Publishes one or more events of this EventType.\n+\n+        Reception of Events will always respect the configuration of its EventType w.r.t. validation,\n+        enrichment and partitioning. The steps performed on reception of incoming message are:\n+\n+        1. Every validation rule specified in the `EventType` will be checked in order against the incoming\n+        Events. Validation rules are evaluated in the order they are defined and the Event is **rejected**\n+        in the first case of failure with a status of 400 Bad request. If the offending validation rule\n+        provides information about the violation it will be included in the Problem response.\n+        If the `EventType` defines schema validation it will be performed at this moment.\n+        **TBD behaviour in case of violation within a stream of events**)\n+\n+        1. Once the validation succeeded, the content of the Event is updated according to the enrichment\n+        rules in the order the rules are defined in the `EventType`.\n+        No preexisting value might be changed (even if added by an enrichment rule). Violations on this will\n+        force the immediate **rejection** of the Event with a 409 Conflict status. The invalid overwrite\n+        attempt will be included in the respose's Problem object.\n+\n+        1. The incoming Event's relative ordering is evaluated according to the rule on the\n+        `EventType`. Failure to evaluate the rule will **reject** the Event.\n+        **Restriction**: POSTing Events based on its `EventType` requires it to have a\n+        `PartitioningStrategy` defined. Violating this condition will produce a 405 Not allowed.","path":"api/nakadi-event-bus-api.yaml","position":344,"original_position":331,"commit_id":"b62c9957ce11c6a3b63948a39ee16a82958b9ca0","original_commit_id":"13bfdd4a514216b484e365905de82e5185199eb8","user":{"login":"igoryankov","id":4191429,"avatar_url":"https://avatars.githubusercontent.com/u/4191429?v=3","gravatar_id":"","url":"https://api.github.com/users/igoryankov","html_url":"https://github.com/igoryankov","followers_url":"https://api.github.com/users/igoryankov/followers","following_url":"https://api.github.com/users/igoryankov/following{/other_user}","gists_url":"https://api.github.com/users/igoryankov/gists{/gist_id}","starred_url":"https://api.github.com/users/igoryankov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igoryankov/subscriptions","organizations_url":"https://api.github.com/users/igoryankov/orgs","repos_url":"https://api.github.com/users/igoryankov/repos","events_url":"https://api.github.com/users/igoryankov/events{/privacy}","received_events_url":"https://api.github.com/users/igoryankov/received_events","type":"User","site_admin":false},"body":"To my mind \"bulk publishing\" is must-have feature. Without that keeping the order of events fired from even one instance might be very slow. ","created_at":"2016-01-25T17:49:10Z","updated_at":"2016-01-25T17:49:10Z","html_url":"https://github.com/zalando/nakadi/pull/56#discussion_r50728670","pull_request_url":"https://api.github.com/repos/zalando/nakadi/pulls/56","_links":{"self":{"href":"https://api.github.com/repos/zalando/nakadi/pulls/comments/50728670"},"html":{"href":"https://github.com/zalando/nakadi/pull/56#discussion_r50728670"},"pull_request":{"href":"https://api.github.com/repos/zalando/nakadi/pulls/56"}}},"pull_request":{"url":"https://api.github.com/repos/zalando/nakadi/pulls/56","id":54998746,"html_url":"https://github.com/zalando/nakadi/pull/56","diff_url":"https://github.com/zalando/nakadi/pull/56.diff","patch_url":"https://github.com/zalando/nakadi/pull/56.patch","issue_url":"https://api.github.com/repos/zalando/nakadi/issues/56","number":56,"state":"open","locked":false,"title":"Nakadi low level api review","user":{"login":"jkliff","id":1238848,"avatar_url":"https://avatars.githubusercontent.com/u/1238848?v=3","gravatar_id":"","url":"https://api.github.com/users/jkliff","html_url":"https://github.com/jkliff","followers_url":"https://api.github.com/users/jkliff/followers","following_url":"https://api.github.com/users/jkliff/following{/other_user}","gists_url":"https://api.github.com/users/jkliff/gists{/gist_id}","starred_url":"https://api.github.com/users/jkliff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkliff/subscriptions","organizations_url":"https://api.github.com/users/jkliff/orgs","repos_url":"https://api.github.com/users/jkliff/repos","events_url":"https://api.github.com/users/jkliff/events{/privacy}","received_events_url":"https://api.github.com/users/jkliff/received_events","type":"User","site_admin":false},"body":"This is a review request for the API Guild.\r\n\r\nThis is the second stage of the review, that considers a lot of the input from the first review done in #43 \r\n\r\nFor the moment swagger definition does not contain correct definition and examples of the proposed `Event` schema.","created_at":"2016-01-04T17:17:14Z","updated_at":"2016-01-25T17:49:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b7ceefff4478961006229a449228d37aa495ba2d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/zalando/nakadi/pulls/56/commits","review_comments_url":"https://api.github.com/repos/zalando/nakadi/pulls/56/comments","review_comment_url":"https://api.github.com/repos/zalando/nakadi/pulls/comments{/number}","comments_url":"https://api.github.com/repos/zalando/nakadi/issues/56/comments","statuses_url":"https://api.github.com/repos/zalando/nakadi/statuses/b62c9957ce11c6a3b63948a39ee16a82958b9ca0","head":{"label":"zalando:nakadi-low-level-api-review","ref":"nakadi-low-level-api-review","sha":"b62c9957ce11c6a3b63948a39ee16a82958b9ca0","user":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"repo":{"id":44234368,"name":"nakadi","full_name":"zalando/nakadi","owner":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/zalando/nakadi","description":"Zalando Distributed Event Bus","fork":false,"url":"https://api.github.com/repos/zalando/nakadi","forks_url":"https://api.github.com/repos/zalando/nakadi/forks","keys_url":"https://api.github.com/repos/zalando/nakadi/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zalando/nakadi/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zalando/nakadi/teams","hooks_url":"https://api.github.com/repos/zalando/nakadi/hooks","issue_events_url":"https://api.github.com/repos/zalando/nakadi/issues/events{/number}","events_url":"https://api.github.com/repos/zalando/nakadi/events","assignees_url":"https://api.github.com/repos/zalando/nakadi/assignees{/user}","branches_url":"https://api.github.com/repos/zalando/nakadi/branches{/branch}","tags_url":"https://api.github.com/repos/zalando/nakadi/tags","blobs_url":"https://api.github.com/repos/zalando/nakadi/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zalando/nakadi/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zalando/nakadi/git/refs{/sha}","trees_url":"https://api.github.com/repos/zalando/nakadi/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zalando/nakadi/statuses/{sha}","languages_url":"https://api.github.com/repos/zalando/nakadi/languages","stargazers_url":"https://api.github.com/repos/zalando/nakadi/stargazers","contributors_url":"https://api.github.com/repos/zalando/nakadi/contributors","subscribers_url":"https://api.github.com/repos/zalando/nakadi/subscribers","subscription_url":"https://api.github.com/repos/zalando/nakadi/subscription","commits_url":"https://api.github.com/repos/zalando/nakadi/commits{/sha}","git_commits_url":"https://api.github.com/repos/zalando/nakadi/git/commits{/sha}","comments_url":"https://api.github.com/repos/zalando/nakadi/comments{/number}","issue_comment_url":"https://api.github.com/repos/zalando/nakadi/issues/comments{/number}","contents_url":"https://api.github.com/repos/zalando/nakadi/contents/{+path}","compare_url":"https://api.github.com/repos/zalando/nakadi/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zalando/nakadi/merges","archive_url":"https://api.github.com/repos/zalando/nakadi/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zalando/nakadi/downloads","issues_url":"https://api.github.com/repos/zalando/nakadi/issues{/number}","pulls_url":"https://api.github.com/repos/zalando/nakadi/pulls{/number}","milestones_url":"https://api.github.com/repos/zalando/nakadi/milestones{/number}","notifications_url":"https://api.github.com/repos/zalando/nakadi/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zalando/nakadi/labels{/name}","releases_url":"https://api.github.com/repos/zalando/nakadi/releases{/id}","deployments_url":"https://api.github.com/repos/zalando/nakadi/deployments","created_at":"2015-10-14T08:30:17Z","updated_at":"2016-01-21T14:51:44Z","pushed_at":"2016-01-22T16:44:22Z","git_url":"git://github.com/zalando/nakadi.git","ssh_url":"git@github.com:zalando/nakadi.git","clone_url":"https://github.com/zalando/nakadi.git","svn_url":"https://github.com/zalando/nakadi","homepage":"","size":566,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":17,"forks":7,"open_issues":17,"watchers":3,"default_branch":"nakadi-jvm"}},"base":{"label":"zalando:nakadi-jvm","ref":"nakadi-jvm","sha":"e9ef6cb9d4c1aa7ca5e8d305a1b92f1eb027124a","user":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"repo":{"id":44234368,"name":"nakadi","full_name":"zalando/nakadi","owner":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/zalando/nakadi","description":"Zalando Distributed Event Bus","fork":false,"url":"https://api.github.com/repos/zalando/nakadi","forks_url":"https://api.github.com/repos/zalando/nakadi/forks","keys_url":"https://api.github.com/repos/zalando/nakadi/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zalando/nakadi/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zalando/nakadi/teams","hooks_url":"https://api.github.com/repos/zalando/nakadi/hooks","issue_events_url":"https://api.github.com/repos/zalando/nakadi/issues/events{/number}","events_url":"https://api.github.com/repos/zalando/nakadi/events","assignees_url":"https://api.github.com/repos/zalando/nakadi/assignees{/user}","branches_url":"https://api.github.com/repos/zalando/nakadi/branches{/branch}","tags_url":"https://api.github.com/repos/zalando/nakadi/tags","blobs_url":"https://api.github.com/repos/zalando/nakadi/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zalando/nakadi/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zalando/nakadi/git/refs{/sha}","trees_url":"https://api.github.com/repos/zalando/nakadi/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zalando/nakadi/statuses/{sha}","languages_url":"https://api.github.com/repos/zalando/nakadi/languages","stargazers_url":"https://api.github.com/repos/zalando/nakadi/stargazers","contributors_url":"https://api.github.com/repos/zalando/nakadi/contributors","subscribers_url":"https://api.github.com/repos/zalando/nakadi/subscribers","subscription_url":"https://api.github.com/repos/zalando/nakadi/subscription","commits_url":"https://api.github.com/repos/zalando/nakadi/commits{/sha}","git_commits_url":"https://api.github.com/repos/zalando/nakadi/git/commits{/sha}","comments_url":"https://api.github.com/repos/zalando/nakadi/comments{/number}","issue_comment_url":"https://api.github.com/repos/zalando/nakadi/issues/comments{/number}","contents_url":"https://api.github.com/repos/zalando/nakadi/contents/{+path}","compare_url":"https://api.github.com/repos/zalando/nakadi/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zalando/nakadi/merges","archive_url":"https://api.github.com/repos/zalando/nakadi/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zalando/nakadi/downloads","issues_url":"https://api.github.com/repos/zalando/nakadi/issues{/number}","pulls_url":"https://api.github.com/repos/zalando/nakadi/pulls{/number}","milestones_url":"https://api.github.com/repos/zalando/nakadi/milestones{/number}","notifications_url":"https://api.github.com/repos/zalando/nakadi/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zalando/nakadi/labels{/name}","releases_url":"https://api.github.com/repos/zalando/nakadi/releases{/id}","deployments_url":"https://api.github.com/repos/zalando/nakadi/deployments","created_at":"2015-10-14T08:30:17Z","updated_at":"2016-01-21T14:51:44Z","pushed_at":"2016-01-22T16:44:22Z","git_url":"git://github.com/zalando/nakadi.git","ssh_url":"git@github.com:zalando/nakadi.git","clone_url":"https://github.com/zalando/nakadi.git","svn_url":"https://github.com/zalando/nakadi","homepage":"","size":566,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":17,"forks":7,"open_issues":17,"watchers":3,"default_branch":"nakadi-jvm"}},"_links":{"self":{"href":"https://api.github.com/repos/zalando/nakadi/pulls/56"},"html":{"href":"https://github.com/zalando/nakadi/pull/56"},"issue":{"href":"https://api.github.com/repos/zalando/nakadi/issues/56"},"comments":{"href":"https://api.github.com/repos/zalando/nakadi/issues/56/comments"},"review_comments":{"href":"https://api.github.com/repos/zalando/nakadi/pulls/56/comments"},"review_comment":{"href":"https://api.github.com/repos/zalando/nakadi/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/zalando/nakadi/pulls/56/commits"},"statuses":{"href":"https://api.github.com/repos/zalando/nakadi/statuses/b62c9957ce11c6a3b63948a39ee16a82958b9ca0"}}}}