Date: 2026-04-10 Product: Atlassian Jira (Cloud + Data Center) Purpose: Evaluate Jira's API capabilities for Orcha integration
| Capability | Public API | Via iPaaS | Via Webhooks | Via Other | Verdict |
|---|---|---|---|---|---|
| Read projects, fields, users | YES | YES | N/A | CSV export | Available now |
| Read issues (JQL search) | YES | YES | N/A | - | Available now |
| Create issues (invoice push) | YES | YES | N/A | CSV import | Available now |
| Bulk create issues | YES (50/req) | Workato only | N/A | - | Available now |
| Update issues | YES | YES | N/A | - | Available now |
| Attach documents (PDF) | YES | YES | N/A | - | Available now |
| Trigger workflow transitions | YES | YES | N/A | Automation rules | Available now |
| Read status/lifecycle | YES | YES | YES | JQL polling | Available now |
| Write custom field values | YES | YES | N/A | - | Available now |
| Create custom fields/options | YES | Limited | N/A | - | Available now (admin perm) |
| User management | Cloud: Admin API | Limited | N/A | SCIM | Available (separate API) |
Overall assessment: Jira has a comprehensive, mature REST API with full read/write support for all Orcha integration needs. No vendor engagement required -- all capabilities are publicly documented and self-service.
| API | Base URL | Purpose |
|---|---|---|
| Platform REST API v3 | /rest/api/3/ |
Core: issues, projects, fields, workflows, users, search |
| Platform REST API v2 | /rest/api/2/ |
Same endpoints as v3, but plain text instead of ADF for rich text |
| Jira Software REST API | /rest/agile/1.0/ |
Agile: boards, sprints, epics, backlogs |
| Jira Service Management API | /rest/servicedeskapi/ |
ITSM: service desks, requests, customers, assets |
| Atlassian Admin API | api.atlassian.com/admin/v1/ |
Org-level: user provisioning, SCIM, policies (Enterprise) |
| Method | Cloud | Data Center | Recommended for Orcha |
|---|---|---|---|
| Basic Auth (email + API token) | Yes | N/A | Yes -- simplest for initial integration |
| OAuth 2.0 (3LO) | Yes | No | Yes -- for multi-tenant / programmatic webhooks |
| OAuth 1.0a | Deprecated | Yes | Only for DC customers |
| Connect JWT | Yes | No | Only if building Marketplace app |
| Forge | Yes | No | Only if building Marketplace app |
| Personal Access Tokens | No | Yes (8.14+) | For DC customers |
Three independent systems enforced simultaneously:
| System | Limits | Notes |
|---|---|---|
| Points-based hourly quota | Free: 65K pts/hr; Standard: 100K + 10/user; Premium: 130K + 20/user; Enterprise: 150K + 30/user (max 500K) | GET = 1pt, identity reads = 2pts, writes = 1pt |
| Burst rate (per-second) | GET/POST: 100 req/s; PUT/DELETE: 50 req/s | Token-bucket algorithm |
| Per-issue write | 20 writes / 2s; 100 writes / 30s | Per individual issue |
Response: HTTP 429 with Retry-After header. Orcha should implement exponential backoff.
developer.atlassian.com/cloud/jira/platform/rest/v3/intro/developer.atlassian.com/cloud/jira/software/rest/developer.atlassian.com/cloud/jira/platform/swagger-v3.v3.jsondeveloper.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/developer.atlassian.com/cloud/jira/platform/rate-limiting/Confidence: HIGH. Jira's REST API is comprehensively writable. Nearly every object supports full CRUD.
| Object | Create | Update | Delete | Notes |
|---|---|---|---|---|
| Issues | POST /issue |
PUT /issue/{key} |
DELETE /issue/{key} |
Bulk create: POST /issue/bulk (max 50) |
| Comments | POST /issue/{key}/comment |
PUT .../comment/{id} |
DELETE .../comment/{id} |
|
| Attachments | POST /issue/{key}/attachments |
N/A | DELETE /attachment/{id} |
Multipart, 1GB default limit |
| Worklogs | POST /issue/{key}/worklog |
PUT .../worklog/{id} |
DELETE .../worklog/{id} |
|
| Projects | POST /project |
PUT /project/{key} |
DELETE /project/{key} |
Requires admin |
| Sprints | POST /sprint (agile API) |
PUT /sprint/{id} |
DELETE /sprint/{id} |
|
| Versions | POST /version |
PUT /version/{id} |
DELETE /version/{id} |
|
| Components | POST /component |
PUT /component/{id} |
DELETE /component/{id} |
|
| Custom fields | POST /field |
PUT /field/{id} |
DELETE /field/{id} |
Admin only |
| Custom field options | POST /field/{id}/context/{ctx}/option |
PUT ... |
DELETE ... |
|
| Workflow transitions | POST /issue/{key}/transitions |
N/A | N/A | Drives status changes |
| Issue links | POST /issueLink |
N/A | DELETE /issueLink/{id} |
|
| Remote links | POST /issue/{key}/remotelink |
PUT ... |
DELETE ... |
|
| Filters | POST /filter |
PUT /filter/{id} |
DELETE /filter/{id} |
Main gap: No native bulk-update endpoint. Bulk updates require iterating individual PUT calls.
| Operation | Zapier | Make.com | Workato | Celigo | n8n |
|---|---|---|---|---|---|
| Create Issue | Yes | Yes | Yes | Yes | Yes |
| Update Issue | Yes | Yes | Yes | Yes | Yes |
| Delete Issue | No | Yes | Yes | No | Yes |
| Transition Issue | Yes | Yes | Yes | Yes | Yes |
| Add Comment | Yes | Yes | Yes | Yes | Yes |
| Add Attachment | Yes | Yes | Yes | Yes | Yes |
| Add Worklog | Yes | Yes | Yes | No | Yes |
| Create Sprint | Yes | Yes | Yes | No | No |
| Create Project | No | Yes | Yes | No | No |
| Create Version | No | No | Yes | No | Yes |
| Bulk Create | No | No | Yes | No | No |
| Upsert (create-or-update) | No | No | No | Yes | No |
| Generic API Call | No | Yes | Yes | Yes* | Yes |
| Webhook Triggers | Polling | Yes | Yes | No | Yes |
*Celigo via Universal Connector (HTTP)
Ranking by Jira write breadth: Workato > Make.com > n8n > Celigo > Zapier
Key finding: No undocumented capabilities revealed by iPaaS connectors. All iPaaS write operations map to documented Jira REST API endpoints. The connectors simplify access (field mapping, upsert logic, pagination) but do not expose hidden APIs.
| Channel | Available | Pros | Cons |
|---|---|---|---|
| Webhooks | Yes (all plans) | Real-time, JQL-filterable, field-filterable | Best-effort delivery; programmatic registration requires OAuth/Connect app |
| Jira Automation | Yes (all plans) | No-code, "Send web request" action can POST to Orcha | Monthly execution limits (Free: 100, Std: 500, Premium: 1000) |
| Atlassian Forge | Yes (Cloud) | Serverless, built-in auth, UI extension points | Node.js only, vendor lock-in, 50K invocations/month free |
| Atlassian Connect | Yes (Cloud) | Any stack, self-hosted, mature | More complex auth (JWT), must host infrastructure |
| CSV Import | Yes | Simple, no technical setup | Manual, no automation, import only |
| Unified APIs (Merge.dev, Klamp) | Jira is a connector | Normalized ticketing model | Extra abstraction layer, cost, only useful if multi-tool |
| SFTP | No | - | Not available |
fieldIdsFilter narrows to specific field changes (e.g., only status)API access is included in all Jira Cloud plans, including Free. There are no separate API licenses, per-call charges, or transaction packages.
| Aspect | Free | Standard (~$8.15/user/mo) | Premium (~$16/user/mo) | Enterprise (custom) |
|---|---|---|---|---|
| REST API access | Yes | Yes | Yes | Yes |
| Rate limits | Same burst limits | Higher hourly quota | Higher hourly quota | Highest hourly quota |
| Webhooks | Yes | Yes | Yes | Yes |
| OAuth 2.0 | Yes | Yes | Yes | Yes |
| Advanced Roadmaps API | No | No | Yes | Yes |
| Assets API | No | No | Yes | Yes |
| Audit log API | No | No | Yes | Yes |
| Org-level admin / SCIM | No | No | No | Yes |
| Requirement | Cost | Who Does It | Time |
|---|---|---|---|
| Jira Cloud instance (any plan) | Already have it | Customer | N/A |
| API token generation | $0 | Any Jira user | 30 seconds |
| Workflow configuration (approval statuses) | $0 | Jira admin | 30-60 min |
| Custom field setup (cost centers, etc.) | $0 | Jira admin (or Orcha via API) | 15-30 min |
| Webhook registration (if needed) | $0 | Jira admin (manual) | 5 min |
| Atlassian Guard (if SSO/SCIM needed) | ~$4/user/month | Org admin | Optional |
id.atlassian.com/manage-profile/security/api-tokensyourcompany.atlassian.net)| Orcha Need | Jira Endpoint | Method | Confidence | Notes |
|---|---|---|---|---|
| Sync cost centers as custom field options | /rest/api/3/field/{id}/context/{ctx}/option |
POST | Confirmed | Create select-list field, manage options via API |
| Create invoice issues | /rest/api/3/issue |
POST | Confirmed | Set project, type, summary, custom fields. Bulk: /issue/bulk (max 50) |
| Attach invoice PDF | /rest/api/3/issue/{key}/attachments |
POST | Confirmed | Multipart, requires X-Atlassian-Token: no-check header. 1GB limit. |
| Trigger approval (transition) | /rest/api/3/issue/{key}/transitions |
POST | Confirmed | Discover transition IDs via GET first. Can set fields during transition. |
| Read approval status | /rest/api/3/issue/{key} |
GET | Confirmed | fields.status.name, changelog for history |
| Receive status change events | Webhooks or JQL polling | - | Confirmed | Webhook: jira:issue_updated with fieldIdsFilter: ["status"]. Polling: JQL status changed after ... |
| Read projects/users/fields | /rest/api/3/project/search, /user/assignable/search, /field |
GET | Confirmed | For building mapping UI during setup |
| JQL search | /rest/api/3/search/jql |
GET/POST | Confirmed | Full JQL support, paginated (max 100/page) |
| Create sub-tasks | /rest/api/3/issue |
POST | Confirmed | Set issuetype to subtask type, add parent.key |
| Add comments | /rest/api/3/issue/{key}/comment |
POST | Confirmed | v3 uses ADF format for rich text |
1. SETUP (one-time)
GET /rest/api/3/project/search --> discover customer's projects
GET /rest/api/3/field --> discover custom fields
POST /rest/api/3/field --> create "Cost Center" select field (if needed)
POST /rest/api/3/field/{id}/context/{ctx}/option --> populate cost center options
2. INVOICE INGESTION
POST /rest/api/3/issue --> create issue with invoice metadata
POST /rest/api/3/issue/{key}/attachments --> attach invoice PDF
POST /rest/api/3/issue/{key}/comment --> add processing notes
3. APPROVAL FLOW
GET /rest/api/3/issue/{key}/transitions --> discover "Submit for Approval" transition ID
POST /rest/api/3/issue/{key}/transitions --> trigger transition to "Pending Approval"
-- wait for approval in Jira --
Webhook fires with status change to "Approved" or "Rejected"
-- OR --
GET /rest/api/3/search/jql?jql=project=AP AND status="Approved" AND updated>="-1h"
4. ONGOING SYNC
JQL polling: status changed after "{last_sync}" AND project = AP
-- OR --
Webhook: jira:issue_updated with fieldIdsFilter=["status"]
customfield_NNNNN -- IDs differ per Jira instance. Must discover via GET /field during setup and store the mapping.| Approach | Cost | Complexity | Control | Recommendation |
|---|---|---|---|---|
| Direct REST API (Basic Auth) | $0 | Low | Full | Recommended for MVP |
| Direct REST API (OAuth 2.0) | $0 | Medium | Full | Recommended for production (enables programmatic webhooks) |
| iPaaS middleware | $$$/ yr | Medium | Partial | Unnecessary -- Jira API is straightforward |
| Unified API (Merge.dev) | $$/ yr | Medium | Partial | Only if also integrating Asana/Linear/etc. |
| Forge/Connect app | Dev cost | High | Full | Only if building a Marketplace product |
Why: Jira's API is mature, well-documented, includes OpenAPI specs, and covers 100% of Orcha's needs. No iPaaS or middleware layer needed. API access is free on all plans with generous rate limits.
Phase 1 -- Read & Setup (Week 1-2)
Phase 2 -- Invoice Push (Week 2-3)
Phase 3 -- Approval Workflow (Week 3-4)
Phase 4 -- Ongoing Sync & Reconciliation (Week 4-5)
developer.atlassian.com/cloud/jira/platform/rest/v3/intro/developer.atlassian.com/cloud/jira/platform/rest/v2/intro/developer.atlassian.com/cloud/jira/software/rest/developer.atlassian.com/cloud/jira/service-desk/rest/developer.atlassian.com/server/jira/platform/rest/v10002/developer.atlassian.com/cloud/jira/platform/basic-auth-for-rest-apis/developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/developer.atlassian.com/cloud/jira/platform/rate-limiting/developer.atlassian.com/cloud/jira/platform/swagger-v3.v3.jsondeveloper.atlassian.com/cloud/jira/platform/changelog/postman.com/postman/atlassian-jira-api/overviewatlassian.com/software/jira/pricingatlassian.com/software/access/pricing