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:customwrite:work-log:custom
Admin Settings
read:admin-settings:customwrite:admin-setting:custom
Teams
read:teams:customwrite:team:custom
Rate Tables
read:rate-tables:customwrite:rate-table:custom
Reports
read:reports:customwrite:report:custom
Approvals
read:approvals:customwrite: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.
Path Parameters
cloud-id: Jira Cloud instance ID (from Accessible Resources API)
app-id: Forge App UUID
env-id: Forge environment ID (
forge install listor 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
GET/v1/issuesWithWorklogsPOST/v1/{issueId}/worklogGET/v1/{issueId}/worklog/{worklogId}PUT/v1/{issueId}/worklog/{worklogId}DELETE/v1/{issueId}/worklog/{worklogId}
GET/v1/attributesPOST/v1/attributeGET/v1/attribute/{attributeId}PUT/v1/attribute/{attributeId}DELETE/v1/attribute/{attributeId}PUT/v1/attribute/{attributeId}/valueDELETE/v1/attribute/{attributeId}/value
GET/v1/workHoursSchemasPOST/v1/workHoursSchemaPUT/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}
GET/v1/holidaySchemasPOST/v1/holidaySchemaPUT/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}/holidayDELETE/v1/holidaySchema/{schemaId}/holiday/{holidayId}
GET/v1/issuesWithSettingsPOST/v1/issuesWithSettingsPUT/v1/issuesWithSettingsDELETE/v1/issuesWithSettings
GET/v1/teamsPOST/v1/teamsGET/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}
GET/v1/periodsPOST/v1/periodsPUT/v1/periods/{periodId}DELETE/v1/periods/{periodId}PUT/v1/periods/{periodId}/lockPUT/v1/periods/{periodId}/unlockPUT/v1/periods/{periodId}/extraTimeDELETE/v1/periods/{periodId}/extraTime
GET/v1/accountsPOST/v1/accountsGET/v1/accounts/{accountId}PUT/v1/accounts/{accountId}DELETE/v1/accounts/{accountId}PUT/v1/accounts/{accountId}/move
GET/v1/rateTablesPOST/v1/rateTablesGET/v1/rateTables/{rateTableId}PUT/v1/rateTables/{rateTableId}DELETE/v1/rateTables/{rateTableId}GET/v1/rateTables/{rateTableId}/rulesPOST/v1/rateTables/{rateTableId}/rulesPUT/v1/rateTables/{rateTableId}/rules/{ruleId}DELETE/v1/rateTables/{rateTableId}/rules/{ruleId}
GET/v1/reportsPOST/v1/reportsGET/v1/reports/{reportId}PUT/v1/reports/{reportId}DELETE/v1/reports/{reportId}
POST/v1/approvals/submitPOST/v1/approvals/submit/bulkPOST/v1/approvals/approvePOST/v1/approvals/approve/bulkPOST/v1/approvals/rejectPOST/v1/approvals/reject/bulkPOST/v1/approvals/revokePOST/v1/approvals/revoke/bulkGET/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": {}
}