A TypeScript example demonstrating how to use the Jira Service Management REST API with scoped API tokens.
- Lists your JSM service desks
- Fetches available request types
- Creates a new service request
- Reads request details
- Adds a comment to the request
- Node.js 18+
- An Atlassian Cloud account with Jira Service Management
- A scoped API token
git clone https://github.com/dot-fun/jira-service-management-api-demo.git
cd jira-service-management-api-demo
npm install- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click Create API token
- Select these scopes:
read:servicedesk-requestwrite:servicedesk-request
- Copy the token (it's only shown once)
curl https://yoursite.atlassian.net/_edge/tenant_infoThis returns: {"cloudId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
cp .env.example .envEdit .env with your values:
JIRA_EMAIL=your-email@example.com
JIRA_API_KEY=ATATT3x...your-token
JIRA_SITE_URL=yoursite.atlassian.net
JIRA_CLOUD_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
npm run demoOutput:
============================================================
🚀 Jira Service Management API Demo
============================================================
📋 [read:servicedesk-request] Fetching service desks...
Found 2 service desk(s):
- DEMO: Demo service space (ID: 2)
- PROJ: My Project (ID: 1)
📝 [read:servicedesk-request] Fetching request types...
✨ [write:servicedesk-request] Creating new request...
✅ Created: PROJ-123
💬 [write:servicedesk-request] Adding comment...
✅ Comment added
============================================================
✅ Demo Complete!
============================================================
This demo uses the Jira Service Management Cloud REST API.
Key points for scoped API tokens:
- Use
api.atlassian.comgateway, not direct site URL - URL format:
https://api.atlassian.com/ex/jira/{cloudId}/rest/servicedeskapi/... - Auth: Basic auth with
email:token(Base64 encoded)
MIT