Event

An event is a historical entry of some user or bot action that took place in Helix TeamHub. An event identifies an action that has a subject (a Helix TeamHub account id), and a specific point of time.

Events can also be live. When an event is created, it is usually also marked complete by setting the progress value as 100. However, if an event has a progress value below 100, has a fairly recent timestamp and has also been updated (i.e. the progress value has been incremented) recently, an event is interpreted as a live event. You can expect live updates to these events and show this to the user.

The action-target pair of values is a powerful way of describing all the meaningful things people can do in Helix TeamHub. The author and the hash of linked objects identify the data objects related to the event.

Attributes

id

A URL-friendly identifier for the event.

  • Type: string
  • Unique: true (in company scope)

subject

The subject of the event (the identifier of a User or Collaborator). It can be expanded to get the full objects by including the query parameter expand=subject in the request.

  • Type: string / object

timestamp

Date and time of the action, in ISO-8601 format.

  • Type: timestamp

operation

A verb describing what the author has done with the target. One of added, assigned, completed, created, deleted, failed, reassigned, removed, unvoted, updated, voted.

  • Type: string

target

A noun describing what the object of the action is. One of bookmark, bot, branch, build, code_review_comment, code_review_description, code_review_line_comment, code_review_require_build, code_review_state, code_review_threshold, code_review_title, code_review, collaborator, comment_reply, commit_comment, commit_line_comment, event_comment, group_member, milestone, project, project_short_name, project_name, project_description, project_visibility, project_collaborator, project_description, project_group, project_hook, project_name, project_short_name, project_user, project_visibility, project, push, repository_hook, repository, reviewer, tag, task_branch, task_comment, task_commit, task_description, task_member, task_milestone, task_state, task_title, task, user.

  • Type: string

ref

Only applicable to push, branch, bookmark and tag targets. A string describing the Branch, Bookmark or Tag affected (for example master).

  • Type: string

bookmarks

Only applicable to push and build targets. A list of bookmarks' names related to the event.

  • Type: array

commits

Only applicable to push, branch, build and task_commit targets. A list of commit identifiers related to the event. The list may contain at maximum 100 commit identifiers. It can be expanded to get the full Commit objects by including the query parameter expand=objects.commits in the request.

  • Type: array

commit_count

Only applicable to push and branch targets. The total number of commit identifiers related to the event. Note that the count might be larger than the size of commits array.

  • Type: int

last_commit

Only applicable to push and branch targets. The last commit identifier related to the event. Note that this commit identifier might not be in the commits array.

  • Type: string

files

Only applicable to push target. Contains details about changed files.

  • Type: object
"files": {
  "added": [
    "app/model/user.rb",
    "spec/models/user_spec.rb"
  ],
  "modified": [
    "readme.md",
  ],
  "deleted": [
    "user.rb",
  ]
}

code_reviews

Only applicable to push and build targets. A list of Code Reviews related to the event. It can be expanded to get the full Code Review objects by including the query parameter expand=objects.code_reviews in the request.

  • Type: array

role

Only applicable to project_user, project_collaborator, project_group and bot targets. The role the User or Collaborator has directly in the project.

short_name

Only applicable to project target. The URL-friendly identifier for the Project.

  • Type: string

name

Only applicable to build and project targets. The name of the build (for example Development) or the name of the Project.

  • Type: string

description

Only applicable to project_description, task_description and code_review_description targets. The free-form description of the Project, Task or Code Review.

  • Type: string

title

Only applicable to task_title and code_review_title targets. The state for the Task or Code Review.

  • Type: string

state

Only applicable to task_state and code_review_state targets. The human-readable title for the Task or Code Review.

  • Type: string

visibility

Only applicable to project target. The visibility flag of the Project.

  • Type: string

objects

A hash of linked objects related to the event. The interpretation of this value depends on the action-target pair of the event.

For example: {"project": { "id": "luotsi" }, "repository": {"id": "chef" }}.

  • Type: object

progress

The progress value of an event, as percentage. Must be between 0 and 100. When progress is 100, the event is considered complete.

  • Type: int

resources

A list of links to external resources related to the event, usually defined as an array of URLs to link to.

Example: ["http://jenkins.eficode.com/project"].

  • Type: array

Operations

GET /events

Get all events within the company. Results may be restricted using query parameters. Returned as a metadata-results object.

Example Request: Get two latest events for a project

curl -X GET \
  -H "Accept: application/vnd.hth.v1" \
  -H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
  https://helixteamhub.cloud/api/events?project=luotsi&limit=2

Example Response

{
  "metadata": {
    "more_results": true,
    "next_offset": 2,
    "count": 2
  },
  "results": [
    {
      "api_status": 200,
      "api_timestamp": "2012-10-25T09:47:30Z",
      "id": "50883cfe1229c02952000036",
      "created_at": "2012-10-24T19:09:50Z",
      "updated_at": "2012-10-24T19:09:50Z",
      "subject": {
        "id": "assimov"
      },
      "operation": "created",
      "target": "push",
      "progress": 100,
      "objects": {
          "project": {
            "id": "luotsi"
          },
          "repository": {
            "id": "devrel"
          },
          "commits": [
              {
                "id": "a6e0210cdd2f473104d75c35a7d1052e12b11b46"
              },
              {
                "id": "393fe81b0f6c39f3006f748f5b16cdddcbe01c80"
              }
          ],
          "last_commit": "393fe81b0f6c39f3006f748f5b16cdddcbe01c80",
          "commit_count": 2,
          "ref": "master"
      },
      "timestamp": "2012-10-24T19:09:50Z"
    },
    {
      "api_status": 200,
      "api_timestamp": "2012-10-25T09:47:30Z",
      "id": "50880fe31229c0295a00002d",
      "created_at": "2012-10-24T15:57:23Z",
      "updated_at": "2012-10-24T15:57:23Z",
      "subject": {
        "id": "jlaiho"
      },
      "operation": "created",
      "target": "push",
      "progress": 100,
      "objects": {
          "project": {
            "id": "luotsi"
          },
          "repository": {
            "id": "luotsi"
          },
          "commits": [
              {
                "id": "b63c10447d5c0f1b7f013af7ffe56742b449d100"
              },
              {
                "id": "831c9809309e640a5191a639a7f002012f2a842c"
              }
              ...
          ]
          "last_commit": "a6e0210cdd2f473104d75c35a7d1052e12b11b46",
          "commit_count": 2815
      },
      "timestamp": "2012-10-24T15:57:23Z"
    }
  ]
}

Example Request: Get an event for the most recently added project user in a project

curl -X GET \
  -H "Accept: application/vnd.hth.v1" \
  -H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
  https://helixteamhub.cloud/api/events?project=luotsi&limit=1&operation=created&target=project_user

Example Response

{
  "metadata": {
    "more_results": true,
    "next_offset": 1,
    "count": 1
  },
  "results": [
    {
      "api_status": 200,
      "api_timestamp": "2012-10-25T09:58:48Z",
      "id": "50879b531229c06d30000014",
      "created_at": "2012-10-24T07:40:03Z",
      "updated_at": "2012-10-24T07:40:03Z",
      "subject": {
        "id": "thuovinen"
      },
      "operation": "created",
      "target": "project_user",
      "progress": 100,
      "objects": {
          "user": {
            "id": "etuupainen"
          },
          "project": {
            "id": "luotsi"
          },
          "role": "guest"
      },
      "timestamp": "2012-10-24T07:40:03Z"
    }
  ]
}

GET /events/:id

Get a specific event.

Example Request

curl -X GET \
  -H "Accept: application/vnd.hth.v1" \
  -H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
  https://helixteamhub.cloud/api/events/50883cfe1229c02952000036

Example Response

{
    "api_status": 200,
    "api_timestamp": "2012-10-25T09:47:30Z",
    "id": "50883cfe1229c02952000036",
    "created_at": "2012-10-24T19:09:50Z",
    "updated_at": "2012-10-24T19:09:50Z",
    "subject": {
      "id": "assimov"
    },
    "operation": "created",
    "target": "repository",
    "progress": 100,
    "objects": {
        "project": {
          "id": "luotsi"
        },
        "repository": {
          "id": "devrel"
        }
    },
    "timestamp": "2012-10-24T19:09:50Z"
}

POST /events

Create a new event. Only build events can be created through API by using a bot account. Operation can be either "completed" or "failed", name is optional.

Example Request

curl -X POST \
  -H "Accept: application/vnd.hth.v1" \
  -H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
  -H "Content-Type: application/json" \
  -d '{ "target": "build", "operation": "completed", "project": "luotsi", "repository": "chef", "name": "Development", "commits": ["d847a7a20f547b8990c31627599aee47441018e6"], "resources": ["http://domain.com/jenkins/job/development/2372"] }' \
  https://helixteamhub.cloud/api/events

Example Response

{
  "api_status": 201,
  "api_timestamp": "2013-08-15T14:48:02Z",
  "id": "520cea221cf3593b29000004",
  "created_at": "2013-08-15T14:48:02Z",
  "updated_at": "2013-08-15T14:48:02Z",
  "subject": {
    "id": "luotsi-ci-bot"
  },
  "operation": "completed",
  "target": "build",
  "progress": 100,
  "objects": {
    "project": {
      "id": "luotsi"
    },
    "repository": {
      "id": "chef"
    },
    "commits": [
      {
        "id": "d847a7a20f547b8990c31627599aee47441018e6"
      }
    ],
    "resources": [
      "http://domain.com/jenkins/job/development/2372"
    ],
    "name": "Development"
  },
  "timestamp": "2013-08-15T14:48:02Z"
}

PUT /events/:id

Only progress and operation of an incomplete build event can be updated.

Example request

curl -X PUT \
  -H "Accept: application/vnd.hth.v1" \
  -H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
  -H "Content-Type: application/json" \
  -d '{ "progress": 100, "operation": "completed" }' \
  https://helixteamhub.cloud/api/events/5211cf501cf3592d2100000d

Example response

{
  "api_status": 200,
  "api_timestamp": "2013-08-19T07:55:39Z",
  "id": "5211cf501cf3592d2100000d",
  "created_at": "2013-08-19T07:54:56Z",
  "updated_at": "2013-08-19T07:55:39Z",
  "subject": {
    "id": "luotsi-ci-bot"
  },
  "operation": "completed",
  "target": "build",
  "progress": 100,
  "objects": {
    "project": {
      "id": "luotsi"
    },
    "repository": {
      "id": "chef"
    },
    "commits": [
      {
        "id": "d847a7a20f547b8990c31627599aee47441018e6"
      }
    ],
    "resources": [
      "http://domain.com/jenkins/job/development/2372"
    ],
    "name": "Development"
  },
  "timestamp": "2013-08-19T07:54:56Z"
}