OVHserver/ATLASSIAN-AUTOMATION-API-ENDPOINTS.md
SamoilenkoVadym f59bdf5475 docs: complete Atlassian Cloud setup documentation - Weeks 1-5 status
COMPLETED:
- Week 1: 4 projects, 40+ custom fields, 10 dashboards (100%)
- Week 2: 4 Confluence spaces, 24 pages (100%)
- Week 4: Lead import script tested, 8 sample leads created (MARK-7 to MARK-14)
- Core API endpoints working: Issue creation, linking, Confluence pages

STATUS:
- API-automated: 68% complete
- Manual UI configuration: 25% (workflows, automation, gadgets documented)
- Awaiting data: 7% (Odoo contact export needed)

DELIVERABLES:
- ATLASSIAN-COMPLETE-SETUP-STATUS-FINAL.md: Full project status & next steps
- ATLASSIAN-MANUAL-CONFIGURATION-GUIDE.md: Step-by-step UI configuration
- WEEK-4-STATUS-REPORT-2025-12-04.md: Week 4 specific findings
- ATLASSIAN-API-ENDPOINTS-REQUIRED.md: All endpoint references
- import_leads_working.py: Ready for 79 real contacts import

NEXT: Export Odoo contacts, run bulk import, conduct team training

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 12:30:15 +00:00

10 KiB

Jira Automation REST API - Endpoints for AImpress Tasks

Based on: https://developer.atlassian.com/cloud/automation/rest/intro/#about

Status: Full API available for creating automation rules


WEEK 3: Create Automation Rules (15+ rules)

Overview

The Jira Automation REST API allows you to:

  • Create automation rules programmatically
  • Enable/disable rules
  • Update rule configurations
  • Search existing rules
  • Apply rules to different projects and scopes

All endpoints support both /rest/v1/ and /rest/latest/ versions.


Core Endpoints

1. Create Automation Rule

POST /rest/v1/rule

Request Body Structure:

{
  "name": "Auto-assign new issues to component lead",
  "description": "Automatically assigns new issues to the component lead",
  "enabled": true,
  "trigger": {
    "ruleType": "TriggerType",
    "parameters": {
      "eventType": "issue_created"
    }
  },
  "conditions": [
    {
      "ruleType": "ConditionType",
      "parameters": {
        "field": "project",
        "compareType": "equals",
        "value": "PROD"
      }
    }
  ],
  "actions": [
    {
      "ruleType": "ActionType",
      "parameters": {
        "assignee": "{{component.lead}}"
      }
    }
  ]
}

Returns: Rule object with ruleUuid


2. Get All Rules

GET /rest/v1/rule/summary

Query Parameters:

  • trigger - Filter by trigger type
  • state - Filter by enabled/disabled
  • scope - Filter by scope (project, global)

Response: List of rule summaries


3. Get Specific Rule

GET /rest/v1/rule/{ruleUuid}

Returns: Complete rule configuration


4. Update Rule

PUT /rest/v1/rule/{ruleUuid}

Request Body: Same structure as create, with updates


5. Enable/Disable Rule

PUT /rest/v1/rule/{ruleUuid}/state

Request Body:

{
  "enabled": true
}

6. Change Rule Scope

PUT /rest/v1/rule/{ruleUuid}/rule-scope

Request Body:

{
  "scope": {
    "resources": ["ari:cloud:jira:cloud:project/PROD"]
  }
}

Trigger Types

Issue Created

{
  "ruleType": "Issue_Created_Trigger",
  "parameters": {}
}

Issue Updated

{
  "ruleType": "Issue_Updated_Trigger",
  "parameters": {
    "field": "status"
  }
}

Custom Field Changed

{
  "ruleType": "Issue_Updated_Trigger",
  "parameters": {
    "field": "customfield_10111"
  }
}

Sprint Events

{
  "ruleType": "Sprint_Started_Trigger",
  "parameters": {}
}

Scheduled Events

{
  "ruleType": "Scheduled_Trigger",
  "parameters": {
    "scheduleType": "DAILY",
    "time": "09:00"
  }
}

Condition Types

Project Equals

{
  "ruleType": "Project_Condition",
  "parameters": {
    "field": "project",
    "value": "PROD"
  }
}

Issue Type Equals

{
  "ruleType": "Issue_Type_Condition",
  "parameters": {
    "field": "issuetype",
    "value": "Bug"
  }
}

Priority Equals

{
  "ruleType": "Priority_Condition",
  "parameters": {
    "field": "priority",
    "compareType": "in",
    "value": ["Highest", "High"]
  }
}

Custom Field Matches

{
  "ruleType": "Custom_Field_Condition",
  "parameters": {
    "field": "customfield_10111",
    "compareType": "equals",
    "value": "New"
  }
}

Status Changed To

{
  "ruleType": "Status_Changed_Condition",
  "parameters": {
    "statusAfter": "In Progress"
  }
}

Date/Time Condition

{
  "ruleType": "Date_Condition",
  "parameters": {
    "field": "duedate",
    "compareType": "before",
    "value": "now()"
  }
}

Action Types

Assign Issue

{
  "ruleType": "Assign_Action",
  "parameters": {
    "assignee": "{{component.lead}}"
  }
}

Transition Issue

{
  "ruleType": "Transition_Action",
  "parameters": {
    "status": "In Progress"
  }
}

Update Custom Field

{
  "ruleType": "Edit_Custom_Field_Action",
  "parameters": {
    "field": "customfield_10111",
    "value": "Contacted"
  }
}

Send Email Notification

{
  "ruleType": "Send_Email_Action",
  "parameters": {
    "recipients": ["{{issue.assignee.email}}", "team@example.com"],
    "subject": "Issue {{issue.key}} updated",
    "body": "Status changed to {{issue.status}}"
  }
}

Create Issue

{
  "ruleType": "Create_Issue_Action",
  "parameters": {
    "project": "OPS",
    "issueType": "Contract",
    "summary": "Contract for {{issue.summary}}",
    "description": "Created from {{issue.key}}"
  }
}

Add Comment

{
  "ruleType": "Add_Comment_Action",
  "parameters": {
    "comment": "Automatically assigned to {{assignee.name}}"
  }
}

Change Label

{
  "ruleType": "Edit_Labels_Action",
  "parameters": {
    "add": ["automated"],
    "remove": []
  }
}

Webhook

{
  "ruleType": "Webhook_Action",
  "parameters": {
    "url": "https://api.example.com/webhook",
    "headers": {
      "Authorization": "Bearer token"
    },
    "body": "{\"issue\": \"{{issue.key}}\"}"
  }
}

Example Rules for AImpress

Rule 1: Auto-assign new issues to component lead

POST /rest/v1/rule
{
  "name": "PROD: Auto-assign to component lead",
  "description": "Automatically assigns new issues to the component lead",
  "enabled": true,
  "trigger": {
    "ruleType": "Issue_Created_Trigger"
  },
  "conditions": [
    {
      "ruleType": "Project_Condition",
      "parameters": {
        "value": "PROD"
      }
    }
  ],
  "actions": [
    {
      "ruleType": "Assign_Action",
      "parameters": {
        "assignee": "{{component.lead}}"
      }
    }
  ]
}

Rule 2: Auto-assign hot leads to sales team

POST /rest/v1/rule
{
  "name": "MARK: Auto-assign hot leads",
  "description": "Assign high-priority leads to sales team",
  "enabled": true,
  "trigger": {
    "ruleType": "Issue_Created_Trigger"
  },
  "conditions": [
    {
      "ruleType": "Project_Condition",
      "parameters": {
        "value": "MARK"
      }
    },
    {
      "ruleType": "Priority_Condition",
      "parameters": {
        "compareType": "in",
        "value": ["Highest", "High"]
      }
    }
  ],
  "actions": [
    {
      "ruleType": "Assign_Action",
      "parameters": {
        "assignee": "p.gulyk@ai-impress.com"
      }
    },
    {
      "ruleType": "Send_Email_Action",
      "parameters": {
        "recipients": ["p.gulyk@ai-impress.com"],
        "subject": "Hot lead assigned: {{issue.summary}}",
        "body": "A high-priority lead has been assigned to you"
      }
    }
  ]
}

Rule 3: Email on deal won

POST /rest/v1/rule
{
  "name": "MARK: Email on deal won",
  "description": "Notify team when deal is won",
  "enabled": true,
  "trigger": {
    "ruleType": "Issue_Updated_Trigger",
    "parameters": {
      "field": "customfield_10111"
    }
  },
  "conditions": [
    {
      "ruleType": "Custom_Field_Condition",
      "parameters": {
        "field": "customfield_10111",
        "compareType": "equals",
        "value": "Won"
      }
    }
  ],
  "actions": [
    {
      "ruleType": "Send_Email_Action",
      "parameters": {
        "recipients": ["team@ai-impress.com"],
        "subject": "Deal Won: {{issue.summary}}",
        "body": "Opportunity {{issue.key}} status changed to Won"
      }
    }
  ]
}

Rule 4: Auto-escalate critical tickets

POST /rest/v1/rule
{
  "name": "SUPP: Auto-escalate unresolved critical tickets",
  "description": "Escalate critical tickets after 1 hour unresolved",
  "enabled": true,
  "trigger": {
    "ruleType": "Scheduled_Trigger",
    "parameters": {
      "scheduleType": "HOURLY"
    }
  },
  "conditions": [
    {
      "ruleType": "Project_Condition",
      "parameters": {
        "value": "SUPP"
      }
    },
    {
      "ruleType": "Priority_Condition",
      "parameters": {
        "compareType": "equals",
        "value": "Highest"
      }
    },
    {
      "ruleType": "Status_Changed_Condition",
      "parameters": {
        "statusAfter": "Not_Resolved"
      }
    }
  ],
  "actions": [
    {
      "ruleType": "Send_Email_Action",
      "parameters": {
        "recipients": ["o.maslovets@ai-impress.com"],
        "subject": "URGENT: Escalation needed on {{issue.key}}",
        "body": "Critical ticket unresolved for 1+ hour"
      }
    }
  ]
}

Rule 5: Auto-update invoice status to overdue

POST /rest/v1/rule
{
  "name": "OPS: Mark invoices overdue",
  "description": "Auto-update invoice status when due date passed",
  "enabled": true,
  "trigger": {
    "ruleType": "Scheduled_Trigger",
    "parameters": {
      "scheduleType": "DAILY",
      "time": "08:00"
    }
  },
  "conditions": [
    {
      "ruleType": "Project_Condition",
      "parameters": {
        "value": "OPS"
      }
    },
    {
      "ruleType": "Issue_Type_Condition",
      "parameters": {
        "value": "Invoice"
      }
    },
    {
      "ruleType": "Date_Condition",
      "parameters": {
        "field": "customfield_10132",
        "compareType": "before",
        "value": "now()"
      }
    }
  ],
  "actions": [
    {
      "ruleType": "Edit_Custom_Field_Action",
      "parameters": {
        "field": "customfield_10113",
        "value": "Overdue"
      }
    },
    {
      "ruleType": "Send_Email_Action",
      "parameters": {
        "recipients": ["team@ai-impress.com"],
        "subject": "Invoice {{issue.key}} is overdue",
        "body": "Invoice {{issue.summary}} is now overdue"
      }
    }
  ]
}

Search & Filter Rules

Search Rules by Trigger

GET /rest/v1/rule/summary?trigger=Issue_Created_Trigger

Search Rules by State

GET /rest/v1/rule/summary?state=enabled

Search Rules by Scope (Project)

GET /rest/v1/rule/summary?scope=ari:cloud:jira:cloud:project/PROD

Rate Limits

  • 100 requests per 10 seconds per user
  • Respect Retry-After headers

Authentication

All endpoints require Basic Auth:

Authorization: Basic $(echo -n "email:api_token" | base64)

Testing Rules

  1. Create rule with "enabled": false
  2. Test by manually triggering conditions
  3. Review audit logs
  4. Enable with PUT /rest/v1/rule/{ruleUuid}/state

Documentation: https://developer.atlassian.com/cloud/automation/rest/intro/#about

Key Limitations:

  • Some advanced conditions may require UI configuration
  • Webhook payloads need proper escaping
  • Test with limited scope before global rollout