OVHserver/opt/00-infrastructure/atlassian/scripts/07-create-projects-api.sh
SamoilenkoVadym 032d1fe23c feat: add Atlassian Cloud Jira configuration infrastructure
- Complete Atlassian Cloud setup with 4 projects (PROD, MARK, SUPP, OPS)
- 8 automation scripts for infrastructure provisioning
- Secure credential management via .env.atlassian
- API authentication verified and working
- Identified Jira Cloud API limitations for Phase 2
- Added comprehensive documentation and status reports
- PHASE-2 BLOCKER: Custom fields cannot be created via Cloud API (manual UI required)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 09:44:31 +00:00

105 lines
3.2 KiB
Bash
Executable file

#!/bin/bash
# Week 1 Day 2: Create Projects via API
# Using correct REST API v3 endpoint: POST /rest/api/3/project
# Reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/
source /tmp/atlassian-setup/credentials.env
echo "=== Creating Jira Projects via REST API v3 ==="
echo ""
# Function to create project
create_project() {
local key=$1
local name=$2
local project_type=$3
local template_key=$4
local description=$5
local lead_id=$6
echo "Creating project: $key - $name ($project_type)"
# Correct payload based on Atlassian example
local json_payload=$(cat <<JSONEOF
{
"key": "$key",
"name": "$name",
"projectTypeKey": "$project_type",
"projectTemplateKey": "$template_key",
"description": "$description"
}
JSONEOF
)
echo "Payload:"
echo "$json_payload" | jq .
echo ""
local response=$(curl -s -w "\n%{http_code}" -X POST \
"${ATLASSIAN_SITE_URL}/rest/api/3/project" \
-H "Authorization: Basic ${JIRA_AUTH}" \
-H "Content-Type: application/json" \
-d "$json_payload")
local http_code=$(echo "$response" | tail -n 1)
local body=$(echo "$response" | sed '$d')
echo "Response (HTTP $http_code):"
if [ "$http_code" = "201" ]; then
echo "$body" | jq .
echo "$key created successfully"
elif [ "$http_code" = "400" ]; then
echo "⚠ Bad Request (HTTP 400)"
echo "$body" | jq . 2>/dev/null || echo "$body"
elif [ "$http_code" = "403" ]; then
echo "⚠ Forbidden (HTTP 403) - Insufficient permissions"
echo "$body" | jq . 2>/dev/null || echo "$body"
else
echo "Response: $body"
fi
echo ""
}
echo "Template Keys Reference:"
echo " scrum: com.atlassian.jira-core-project-templates:jira-scrum-project"
echo " kanban: com.atlassian.jira-core-project-templates:jira-kanban-project"
echo " business: com.atlassian.jira-core-project-templates:jira-core-simplified-process-control"
echo " service-desk: com.atlassian.servicedesk.project-templates:it-help-desk"
echo ""
# Create projects
# Format: key, name, projectTypeKey, projectTemplateKey, description
create_project \
"PROD" \
"Product & Engineering" \
"software" \
"com.atlassian.jira-core-project-templates:jira-scrum-project" \
"Website development and client project delivery"
create_project \
"MARK" \
"Marketing & Sales" \
"software" \
"com.atlassian.jira-core-project-templates:jira-kanban-project" \
"Sales pipeline, leads, clients, and marketing campaigns"
create_project \
"SUPP" \
"Customer Support" \
"service_management" \
"com.atlassian.servicedesk.project-templates:it-help-desk" \
"Client tickets, technical support, and escalations"
create_project \
"OPS" \
"Operations" \
"business" \
"com.atlassian.jira-core-project-templates:jira-core-simplified-process-control" \
"Finance, contracts, HR, and compliance"
echo "=== Project Creation Complete ==="
echo ""
echo "Next steps:"
echo "1. Verify projects created: /opt/00-infrastructure/atlassian/atlassian-setup.sh check"
echo "2. Run phase 2 to create custom fields: ./scripts/04-create-custom-fields.sh"