Integrating Yandex Tracker with Cloud Functions

Learn how to integrate Yandex Tracker automation tools with Cloud Functions. The example shows how to calculate the total time spent on a parent issue from all its sub-issues.

To configure the total time spent value of a parent issue to automatically update whenever this value changes in any of its child sub-issues:

  1. Register the application.
  2. Get an application access token.
  3. Get an organization ID to access the API.
  4. Create a Cloud Functions function.
  5. Set up a trigger.
  6. Test out automatic data updates.

Getting started

To run the scenario, you will need:

  • Yandex Cloud billing account.
  • A Yandex Tracker account that belongs to an organization connected to Yandex Cloud with a role of at least organization-manager.admin.

Sign up for Yandex Cloud and create a billing account:

  1. Go to the management console and log in to Yandex Cloud or create an account if you do not have one yet.
  2. On the Billing page, make sure you have a billing account activated and its status is ACTIVE or TRIAL_ACTIVE. If you do not have a billing account, create one.

If you have an active billing account, you can create or select a folder on the cloud page to host your infrastructure.

Learn more about clouds and folders.

The infrastructure maintenance fee covers the cost of using this function (see Cloud Functions pricing).

If you no longer need the resources you created, delete them.

Register the application

If you use a federated or service account, log in using an IAM token.

To access Yandex Tracker API, you need to obtain an OAuth token. Use the obtained token in the Authorization header when making requests to Yandex Tracker API.

This token grants the same permissions as the user account in Yandex Tracker. For example, if the user is not allowed to change queue settings, API requests to change queue settings will not be available using this token.

To get a token:

  1. Click the link https://oauth.yandex.com/.

  2. On the Your apps page, click Create.

  3. In the window that opens, select For API access or debugging and click Create new token.

  4. Enter the app name and your contact email.

  5. Add permissions for accessing user data. To select a permission, start typing its name in the Permission name field:

    • Write in tracker (tracker:write): Users with this permission can create, delete, and edit data.
    • Read from tracker (tracker:read): Users with this permission can only read data.
  6. Click Create app.

  7. In your Yandex OAuth account, select the previously created application and copy its ID from the ClientID field.

  8. Next, generate a link to request a token:

    https://oauth.yandex.com/authorize?response_type=token&client_id=<application_ID>
    
  9. Log in to the account which you'll be using to access the API, then follow the generated link.

    You'll see a sequence of characters appear on the page — that's your OAuth token. Copy and save it.

See how to set up your app in Yandex ID Help:

To check if you have access to the API, request information about the current user. If no access permission is granted, you will get a response with the 401 Unauthorized code.

Sample curl request for retrieving information about the current user:

curl -X GET 'api.tracker.yandex.net/v3/myself' \
     -H 'Authorization: OAuth ABC-def12GH_******' \
     -H 'X-Cloud-Org-Id: abcd12******'
curl -X GET "api.tracker.yandex.net/v3/myself" ^
     -H "Authorization: OAuth ABC-def12GH_******" ^
     -H "X-Cloud-Org-Id: abcd12******"

Get an application access token

  1. In the browser, go to:
    https://oauth.yandex.ru/authorize?response_type=token&client_id=<app_ID>
    
    Where the client_id parameter value is the application ID from the ClientID field on the application details page from the previous step.
  2. Wait for the page to load and copy the token.
  3. Save the token. You will need it to create a function.

Get an organization ID to access the API

  1. Go to Tracker. Click Log in to Tracker.
  2. In the right-hand panel, click Administration.
  3. Under Access and payment, click Organizations.
  4. Under Yandex 360 for businesses, copy and save your organization ID. You'll need it to create a function.

Create a Cloud Functions function

  1. Go to the management console.
  2. In the top-left corner, click All services.
  3. Select Serverless computingCloud Functions.
  4. Click Create function.
  5. Enter a function name, e.g., timeupdater.
  6. Click Create.
  7. In the Editor window that opens, select Python / 3.9 runtime environment.
  8. Click Next.
  9. In the Method field, click ZIP archive.
  10. Attach a test archive.
  11. In the Entry point field, specify index.handler.
  12. Go to Parameters and in the Environment variables field, add:
    • ORG: Yandex 360 for Business organization ID
    • TOKEN: Application access token
  13. Click Save changes.
  14. Wait for the page to load. Next, in the Link to invoke field, copy and save the function invocation link.
    Here is an example of such a link:
    https://functions.yandexcloud.net/d4e94uav3108********
    
  15. Enable the Public function option.

Set up a trigger

Create a queue

  1. On the left panel, click QueuesCreate queue.

  2. Select a queue template, e.g., Basic development model.
  3. Enter a name, e.g., Function Test.
  4. Click Create.

Create a trigger

  1. In the top-right corner of the queue page, click  Queue settings.
  2. On the left-hand panel, select AutomationTriggers and click Create trigger.
  3. In the Name field, enter a trigger name, e.g., timeupdater.
  4. Under Conditions, select Time Tracking → Time Spent.
  5. Under Trigger actions, select HTTP request.
  6. In the form that opens, in the Address field, enter:
    https://functions.yandexcloud.net/<function_ID>?id={{issue.key}}
    
    Where https://functions.yandexcloud.net/<function_ID> is the function invocation link you saved when creating the function.
    Example:
    https://functions.yandexcloud.net/d4e94uav3108********?id={{issue.key}}
    
  7. Click Create.

Test out automatic data updates

Create issues

  1. Create a parent issue whose total time spent across all sub-issues will be calculated:
    1. On the Function Test queue page, click Create issue.
    2. In the form that opens, in the Issue name field, enter an issue name, e.g., Parent Task.
    3. Click Create.
  2. Create sub-issues:
    1. In the top right corner of the Parent Task issue page, select Add sub-issue in the Actions menu.
    2. In the form that opens, in the Issue name field, enter a sub-issue name, e.g., Subtask-1.
    3. In the same way, create another sub-issue or multiple sub-issues named Subtask-2, Subtask-3, and so on.

Enter time spent values for the sub-issues

  1. Go to the Subtask-1 sub-issue page and select Add time spent from the Actions menu in the top right corner.
  2. In the window that opens, specify any time value in the Time Spent field. For example, you can enter 1h25m.
  3. In the same way, add time spent values for the other sub-issues.

Check if the function works correctly

  1. Go to the Parent Task issue page.
  2. In the issue properties, make sure that the Time Spent field under Time Tracking includes the time you specified in the sub-issue.

How to delete the resources you created

To stop paying for the resources you created, delete the Cloud Functions function.