Developer Portal for YouTrack and Hub Help

Operations with Specific ActivityCursorPage

This resource provides access to the issue activities wrapping it to the page object. The main advantage of the page in comparison to a list of activities is cursors. The page provides boundary marks that allows continuing iteration over the activities from the place the page is finished.

Resource

/api/issues/{issueID}/activitiesPage

Returned entity

ActivityCursorPage. For the description of the entity attributes, see Supported Fields section.

Supported methods

ActivityCursorPage attributes

Represents a page object that wraps a list of issue activities. The main advantage of the page in comparison to a list of activities is cursors. The page provides boundary marks that allow continuous iteration over the activities from the place the page is finished.

Related Resources

Below you can find the list of resources that let you work with this entity.

Attributes

This table describes attributes of the ActivityCursorPage entity.

  • To receive an attribute in the response from the server, specify it explicitly in the fields request parameter.

  • To update an attribute, provide it in the body of a POST request.

Field

Type

Description

id

String

The ID of the activity cursor page. Read-only.

activities

Array of ActivityItems

The list of activities in the page. Read-only.

afterCursor

String

A string value that is required to retrieve the next page of activities. Read-only.

beforeCursor

String

A string value that is required to retrieve the previous page of activities. Read-only.

hasAfter

Boolean

Indicates if the next page exists. Read-only.

hasBefore

Boolean

Indicates if the previous page exists. Read-only.

reverse

Boolean

Indicates whether the order of returning activities on the page is from newest to oldest or the opposite. If false, then the oldest activity item that matches a selected filter is returned first. If true, then the newest activity is returned first. By default, false. Read-only.

Read a Specific ActivityCursorPage

Read a page of activities in the specific issue.

Request syntax

GET /api/issues/{issueID}/activitiesPage?{fields}&{categories}&{reverse}&{start}&{end}&{author}&{cursor}&{activityId}

Request parameters

Parameter

Type

Description

fields

String

A list of ActivityCursorPage attributes that should be returned in the response. If no field is specified, only the entityID is returned.

categories

String

Mandatory. Parameter filters returned activities by categories. You must specify at least one category per request.

You can specify the categories query parameter in either of these formats:

  • categories=IssueCreatedCategory&categories=CommentsCategory
  • categories=IssueCreatedCategory,CommentsCategory

See this table for mapping between available categories and returned types of activity items.

reverse

Boolean

Indicates whether the order of returning activities is from newest to oldest or the opposite. If false, then the oldest activity item that matches a selected filter is returned first. If true, then the newest activity is returned first. By default, false.

start

String

The timestamp in milliseconds indicating the start of the time interval the activity timestamp belongs to. Stored as a unix timestamp at UTC. If the parameter is not set, it is considered to be 0.

end

String

The timestamp in milliseconds indicating the end of the time interval the activity timestamp belongs to. Stored as a unix timestamp at UTC. If the parameter is not set, it is considered as Long.MAX_VALUE.

author

String

Parameter to filter activities by the author. You can specify one of the following parameters: the database ID, login, Hub ID, or me for the currently logged in user.

cursor

String

The main application for cursors is the pagination of activities. The Activities is a frequently changing collection, and new activities might be created between two consecutive requests. The general pagination method with $top and $skip parameters does not work in this case. Instead, use the following pagination approach:

  1. Request a page using one of the activitiesPage resources.

  2. Take one of the cursors from the returned activity page.

  3. Put this value as the cursor parameter for the request of the next page.

If the cursor is not specified in the request, the response page starts either from the oldest activity or the newest one, depending on the requested order (direct or reverse).

Use case:

Let's consider the following statements as initial conditions for the example:

  • There is a collection of four activity items: A, B, C, and D.

  • A request has been made that returned a page containing only 1 item: [B].

The following JSON presents the mentioned page (see: ActivityCursorPage):

{ "activities": [B] "cursorBefore": "A^B" // the value differs from the real one and is only used for the demonstration "cursorAfter": "B^C" // the value differs from the real one and is only used for the demonstration "hasBefore": true "hasAfter": true "reverse": false }

A request to the following endpoint could receive such a page:

/api/activitiesPage?activityId=B&$top=1

The real value of the cursor is a complication string. Used notation "A^B" shows that the cursor points to the gap between items A and B.

To request nearby pages of activities, we can use the cursors of the received page and request the page starting from the cursor to different directions. The following combinations are possible:

  • Request /api/activitiesPage?$top=100&cursor=A^B&reverse=false returns a page with [B, C, D] items.

  • Request /api/activitiesPage?$top=100&cursor=A^B&reverse=true returns a page with [A] item.

  • Request /api/activitiesPage?$top=100&cursor=B^C&reverse=false returns a page with [C, D] items.

  • Request /api/activitiesPage?$top=100&cursor=B^C&reverse=true returns a page with [B, A] items.

activityId

String

ID of the activity that should be included in the page. The activity is allocated to the middle of the page.

Sample

Sample request

https://example.youtrack.cloud/api/issues/2-31/activitiesPage?fields=id,beforeCursor,afterCursor,activities(id,author(name,login),timestamp)&categories=CommentsCategory,IssueCreatedCategory,SummaryCategory,WorkItemCategory,ProjectCategory,IssueVisibilityCategory,AttachmentsCategory

Sample response body

{ "afterCursor": "AI.2-31+:CM.4-2+:TT.^+:RH.9-61+:1535649875680", "beforeCursor": "AI.^+:CM.^+:TT.^+:RH.^+:1533139032010", "activities": [ { "id": "2-31.0-0", "author": { "login": "john.doe", "name": "John Doe", "$type": "User" }, "timestamp": 1533139032010, "$type": "IssueCreatedActivityItem" }, { "id": "4-0.0-0", "author": { "login": "jane.doe", "name": "Jane Doe", "$type": "User" }, "timestamp": 1533214812208, "$type": "CommentActivityItem" }, { "id": "4-2.0-0", "author": { "login": "john.doe", "name": "John Doe", "$type": "User" }, "timestamp": 1533221614364, "$type": "CommentActivityItem" }, { "author": { "login": "john.doe", "name": "John Doe", "$type": "User" }, "timestamp": 1535649875680, "id": "0-0.9-60", "$type": "SimpleValueActivityItem" }, { "author": { "login": "john.doe", "name": "John Doe", "$type": "User" }, "timestamp": 1535649875680, "id": "0-0.9-61", "$type": "VisibilityGroupActivityItem" } ], "id": "AI.^+:CM.^+:TT.^+:RH.^+:1533139032010#AI.2-31+:CM.4-2+:TT.^+:RH.9-61+:1535649875680.d", "$type": "ActivityCursorPage" }
Last modified: 7 November 2024