Activity : Swarm Activity List
From Swarm 2022.2, Swarm no longer supports APIs older than v9.
List Activity Entries
Summary
List Activity Entries
GET /api/v9/activity
Description
Retrieve the Activity List.
- Private projects: when a project is made private, only the project owners, moderators, and members, plus users with super-level privileges in the Helix Core Server, can see the project, its activity streams, and ongoing reviews. API responses honor these private project restrictions. For more information about private project restrictions, see Private projects.
- Permissions: if a public review contains files that the user does not have permission to view, the review is returned but the restricted files are not displayed.
Parameters
Parameter | Description | Type | Parameter Type | Required | Default Value |
---|---|---|---|---|---|
change |
Optionally filter activity entries by associated Changelist ID. This only includes records for which there is an activity entry in Swarm. |
integer |
form |
No |
|
stream |
Optional activity stream to query for entries. This can include user-initiated actions ( |
string |
form |
No |
|
type |
Type of activity, for example, |
string |
form |
No |
|
after |
An activity ID to seek to. Activity entries up to and including the specified ID are excluded from the results and do not count towards |
integer |
query |
No |
|
max |
Maximum number of activity entries to return. This does not guarantee that |
integer |
query |
No |
100 |
fields |
An optional comma-separated list (or array) of fields to show. Omitting this parameter or passing an empty value shows all fields. |
string |
query |
No |
Example response
Successful Response:
To get the latest activity entry on a review:
curl -u "username:password" http://myswarm.url/api/v9/activity?stream=review-290&max=1
Swarm responds with an array of activity entities, and a lastSeen
value that can be used for pagination:
HTTP/1.1 200 OK
{
"activity": [
{
"id": 619,
"action": "updated files in",
"behalfOf": null,
"behalfOfExists": false,
"behalfOfFullName": "",
"change": 290,
"comments": [
0,
0
],
"date": "2019-01-23T02:46:59-08:00",
"depotFile": null,
"description": "Start of Project Blue Book.",
"details": [
],
"followers": [
],
"link": [
"review",
{
"review": "290",
"version": 2
}
],
"preposition": "for",
"projectList": {
"blue-book": [
"main"
]
},
"projects": {
"blue-book": [
"main"
]
},
"streams": {
"0": "review-290",
"1": "user-allison.clayborne",
"2": "personal-allison.clayborne",
"3": "project-blue-book",
"7": "group-triage",
"8": "personal-alex.randolph",
"9": "personal-jack.boone"
},
"target": "review 290 (revision 2)",
"time": 1548240419,
"topic": "reviews/290",
"type": "review",
"url": "/main/reviews/290/v2/",
"user": "allison.clayborne",
"userExists": true,
"userFullName": "Allison Clayborne"
}
],
"lastSeen": 618
}
Examples of usage
Fetching review activity
To get the latest activity entries on a review:
In this example, the review has more than 2 activities but the request has been made to limit the response to a max of 2 activities. This will return the most recent activities unless lastseen is included in the request. This allows for pagination of your results, see Activity pagination.
curl -u "username:password" http://myswarm.url/api/v9/activity?stream=review-1234&fields=id,action,date,description,type&max=2
You can tweak max
and fields
to fetch the data that works best for you.
Swarm responds with an array of activity entities, and a lastSeen
value that can be used for pagination:
HTTP/1.1 200 OK
{
"activity": [
{
"id": 619,
"action": "updated files in",
"date": "2019-01-23T02:46:59-08:00",
"description": "Start of Project Blue Book.",
"type": "review"
},
{
"id": 618,
"action": "commented on",
"date": "2019-01-23T02:46:19-08:00",
"description": "This is a short comment.",
"type": "comment"
}
],
"lastSeen": 618
}
Activity pagination
To get the second page of activity entries for a review (based on the previous example):
curl -u "username:password" "https://myswarm.url/api/v9/activity?stream=review-1234&fields=id,date,description,type&max=2&lastSeen=618"
Swarm again responds with a list of activity entities and a lastSeen
value:
HTTP/1.1 200 OK
{
"activity": [
{
"id": 617,
"action": "commented on",
"date": "2018-12-30T12:12:12-07:00",
"description": "This is the first test comment.",
"type": "comment"
},
{
"id": 616,
"action": "commented on",
"date": "2018-12-27T12:13:14-07:00",
"description": "Start of Project Blue Book.",
"type": "review"
}
],
"lastSeen": 616
}
Create Activity Entry
Summary
Create Activity Entry
POST /api/v9/activity
Description
Creates an entry in the Activity List.
The authenticated user must match the user provided unless the authenticated user has minimum admin-level privileges in which case any user may be specified.
- Private projects: when a project is made private, only the project owners, moderators, and members, plus users with super-level privileges in the Helix Core Server, can see the project, its activity streams, and ongoing reviews. API responses honor these private project restrictions. For more information about private project restrictions, see Private projects.
- Permissions: if a public review contains files that the user does not have permission to view, the review is returned but the restricted files are not displayed.
Parameters
Parameter | Description | Type | Parameter Type | Required |
---|---|---|---|---|
type |
Type of activity, used for filtering activity streams (values can include |
string |
form |
Yes |
user |
User who performed the action. |
string |
form |
Yes |
action |
Action that was performed - past-tense, for example, |
string |
form |
Yes |
target |
Target that the action was performed on, for example, |
string |
form |
Yes |
topic |
Optional topic for the activity entry. Topics are essentially comment thread IDs. Examples: |
string |
form |
No |
description |
Optional description of object or activity to provide context. |
string |
form |
No |
change |
Optional changelist ID this activity is related to. Used to filter activity related to restricted changes. |
integer |
form |
No |
streams[] |
Optional array of streams to display on. This can include user-initiated actions ( |
array (of strings) |
form |
No |
link |
Optional URL for |
string |
form |
No |
Examples of usage
Creating an activity entry
To create a plain activity entry:
curl -u "username:password"
-X POST
-d "type=job"
-d "user=jira"
-d "action=punted"
-d "target=review 123" \
"https://myswarm.url/api/v9/activity"
JSON Response:
HTTP/1.1 200 OK
{
"activity":{
"id":620,
"action":"punted",
"behalfOf":null,
"change":null,
"depotFile":null,
"description":null,
"details":[
],
"followers":[
],
"link":null,
"preposition":"for",
"projects":[
],
"streams":[
],
"target":"review 123",
"time":1560783425,
"topic":null,
"type":"job",
"user":"jira"
}
}
Linking an activity entry to a review
Linking activity entries to reviews is useful. This involves providing link
, streams
, and topic
fields in
the activity data. The link
field is used to make the review 123
string in the activity entry clickable.
The stream
field is needed so that the activity entry can be attached to the review in the Swarm interface.
The topic
field is used to link the activity entry to the comment thread for that topic, in the event that a
user wants to comment on the activity.
To create a fully linked activity entry:
curl -u "username:password"
-X POST
-d "type=job"
-d "user=jira"
-d "action=punted"
-d "target=review 123" \
-d "streams[]=review-123" \
-d "link=reviews/123" \
-d "topic=reviews/123" \
"https://myswarm.url/api/v9/activity"
Swarm responds with an activity entity:
HTTP/1.1 200 OK
{
"activity": {
"id": 1375,
"action": "punted",
"behalfOf": null,
"change": null,
"depotFile": null,
"description": null,
"details": [
],
"followers": [
],
"link": "reviews/123",
"preposition": "for",
"projects": [
],
"streams": [
"review-123"
],
"target": "review 123",
"time": 1461607739,
"topic": "reviews/123",
"type": "job",
"user": "jira"
}
}