REST API Guide(not yet released)

REST API Guide(not yet released)

WorklogPRO Cloud REST API Overview

The WorklogPRO Cloud REST API provides programmatic access to time tracking and administration data hosted in Jira Cloud.

It exposes the same core entities available in the app UI (worklogs, attributes, teams, periods, approvals, accounts, reports, rate tables, and schemas) via HTTP endpoints authenticated with OAuth 2.0.

This video walks you through everything end-to-end: enabling the REST API, setting up OAuth 2.0, obtaining an access token with Postman, and making your first request.

Note: Although this video demonstrates a different application of ours, the integration steps are identical. You can follow the same workflow and use it as a reference for your setup.

Watch the full walkthrough on YouTube: https://www.youtube.com/watch?v=qALE6-GyBL8


Prerequisites

Before making API calls, complete the following steps:

1. Enable Forge App REST API Access

(Site admin required)

In Jira:

  • Manage apps → Connected apps → WorklogPRO Cloud → View app details → App REST APIs

2. Create OAuth 2.0 (3LO) Integration

In Atlassian Developer Console:

  • Create a new OAuth 2.0 (3LO) app

  • Configure access for this Forge app

  • Request required scopes

For more details about the authentication process, refer to the Atlassian documentation: Access REST APIs exposed by a Forge app (Preview)


Required OAuth Scopes

Mandatory Scope

  • read:forge-app:jira

WorklogPRO Custom Scopes

Use only required ones:

Worklogs

  • read:worklogs:custom

  • write:work-log:custom

Admin Settings

  • read:admin-settings:custom

  • write:admin-setting:custom

Teams

  • read:teams:custom

  • write:team:custom

Rate Tables

  • read:rate-tables:custom

  • write:rate-table:custom

Reports

  • read:reports:custom

  • write:report:custom

Approvals

  • read:approvals:custom

  • write:approval:custom


Base URL

All API endpoints are served under:

https://api.atlassian.com/svc/jira/<cloud-id>/apps/<app-id>_<env-id>

You can find this URL under Manage apps → Connected apps → Configuration Management Toolkit Cloud → View app details → App REST APIs once the REST API is enabled. The URL only appears in this section after the REST API has been enabled.

image-20260420-072700.png

Path Parameters

  • cloud-id: Jira Cloud instance ID (from Accessible Resources API)

  • app-id: Forge App UUID

  • env-id: Forge environment ID (forge install list or Developer Console)


Full API reference

The complete OpenAPI specification (openapi.yaml) is attached to this Confluence page. Import it into Postman, Insomnia, or any OpenAPI-compatible tool to explore all available endpoints.


Recources

Worklogs

  • GET /v1/issuesWithWorklogs

  • POST /v1/{issueId}/worklog

  • GET /v1/{issueId}/worklog/{worklogId}

  • PUT /v1/{issueId}/worklog/{worklogId}

  • DELETE /v1/{issueId}/worklog/{worklogId}

Attributes

  • GET /v1/attributes

  • POST /v1/attribute

  • GET /v1/attribute/{attributeId}

  • PUT /v1/attribute/{attributeId}

  • DELETE /v1/attribute/{attributeId}

  • PUT /v1/attribute/{attributeId}/value

  • DELETE /v1/attribute/{attributeId}/value

Work Hours Schemas

  • GET /v1/workHoursSchemas

  • POST /v1/workHoursSchema

  • PUT /v1/workHoursSchema/{schemaId}

  • DELETE /v1/workHoursSchema/{schemaId}

  • PUT /v1/workHoursSchema/{schemaId}/user/{memberId}

  • DELETE /v1/workHoursSchema/{schemaId}/user/{memberId}

  • PUT /v1/workHoursSchema/{schemaId}/group/{memberId}

  • DELETE /v1/workHoursSchema/{schemaId}/group/{memberId}

Holiday Schemas

  • GET /v1/holidaySchemas

  • POST /v1/holidaySchema

  • PUT /v1/holidaySchema/{schemaId}

  • DELETE /v1/holidaySchema/{schemaId}

  • POST /v1/holidaySchema/{schemaId}/user/{memberId}

  • DELETE /v1/holidaySchema/{schemaId}/user/{memberId}

  • POST /v1/holidaySchema/{schemaId}/group/{memberId}

  • DELETE /v1/holidaySchema/{schemaId}/group/{memberId}

  • POST /v1/holidaySchema/{schemaId}/holiday

  • DELETE /v1/holidaySchema/{schemaId}/holiday/{holidayId}

Issue Settings

  • GET /v1/issuesWithSettings

  • POST /v1/issuesWithSettings

  • PUT /v1/issuesWithSettings

  • DELETE /v1/issuesWithSettings

Teams

  • GET /v1/teams

  • POST /v1/teams

  • GET /v1/teams/{teamId}

  • PUT /v1/teams/{teamId}

  • DELETE /v1/teams/{teamId}

  • POST /v1/teams/{teamId}/users/{userId}

  • DELETE /v1/teams/{teamId}/users/{userId}

  • POST /v1/teams/{teamId}/groups/{groupId}

  • DELETE /v1/teams/{teamId}/groups/{groupId}

Periods

  • GET /v1/periods

  • POST /v1/periods

  • PUT /v1/periods/{periodId}

  • DELETE /v1/periods/{periodId}

  • PUT /v1/periods/{periodId}/lock

  • PUT /v1/periods/{periodId}/unlock

  • PUT /v1/periods/{periodId}/extraTime

  • DELETE /v1/periods/{periodId}/extraTime

Accounts

  • GET /v1/accounts

  • POST /v1/accounts

  • GET /v1/accounts/{accountId}

  • PUT /v1/accounts/{accountId}

  • DELETE /v1/accounts/{accountId}

  • PUT /v1/accounts/{accountId}/move

Rate Tables

  • GET /v1/rateTables

  • POST /v1/rateTables

  • GET /v1/rateTables/{rateTableId}

  • PUT /v1/rateTables/{rateTableId}

  • DELETE /v1/rateTables/{rateTableId}

  • GET /v1/rateTables/{rateTableId}/rules

  • POST /v1/rateTables/{rateTableId}/rules

  • PUT /v1/rateTables/{rateTableId}/rules/{ruleId}

  • DELETE /v1/rateTables/{rateTableId}/rules/{ruleId}

Reports

  • GET /v1/reports

  • POST /v1/reports

  • GET /v1/reports/{reportId}

  • PUT /v1/reports/{reportId}

  • DELETE /v1/reports/{reportId}

Approvals

  • POST /v1/approvals/submit

  • POST /v1/approvals/submit/bulk

  • POST /v1/approvals/approve

  • POST /v1/approvals/approve/bulk

  • POST /v1/approvals/reject

  • POST /v1/approvals/reject/bulk

  • POST /v1/approvals/revoke

  • POST /v1/approvals/revoke/bulk

  • GET /v1/approvals/user/{userId}/period/{periodId}

  • GET /v1/approvals/period/{periodId}

  • GET /v1/approvals/project/{projectId}/period/{periodId}

  • GET /v1/approvals/team/{teamId}/period/{periodId}

  • GET /v1/approvals/history/{userId}/period/{periodId}


Making Requests

All requests must include Bearer token:

Authorization: Bearer <your-access-token>

Example 1: Get Issues With Worklogs

curl -X GET \ "https://api.atlassian.com/svc/jira/<cloud-id>/apps/<app-id>_<env-id>/v1/issuesWithWorklogs?startDate=2026-04-01&endDate=2026-04-30" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json"

Example 2: Submit Approval

curl -X POST \ "https://api.atlassian.com/svc/jira/<cloud-id>/apps/<app-id>_<env-id>/v1/approvals/submit" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "userId": "712020:abcd-1234", "periodId": "period-2026-04", "projectIds": ["10001", "10002"], "comment": "Please review." }'

Response Format

Success Response

{ "ok": true, "data": {} }