When to Use
- Project metadata enrichment: Before sending a project status summary to a Slack channel or email, call
project/get to obtain the project's full name, lead contact, and description to populate the notification with context.
- Lead contact lookup: When creating an escalation notification,
project/get provides the project lead's name so the notification can be addressed to the correct person without hardcoding team leads in workflows.
- Project type validation: A workflow needs to confirm whether a project is of type "software" (supporting sprints) before attempting sprint-related operations.
project/get returns the type field for this check.
- URL generation for notifications: The
url field from project/get provides the project's Jira board URL, which can be embedded in Slack alerts and email notifications for direct navigation.
- Project configuration audit: A governance workflow calls
project/get on a list of projects to verify each has a description and a named lead, and flags those missing either field as governance gaps.
Configuration
Connection
| Field | Required | Description |
Host | Required | Jira instance base URL. Example: https://acmecorp.atlassian.net |
Email | Required | Atlassian account email. Example: automation@acmecorp.com |
ApiToken | Required | API token from Atlassian security settings. Store in Credentials Manager. |
Operation Fields
| Field | Required | Description |
ProjectKey | Required | The key of the project to retrieve. Example: OPS, DEV, SUPPORT. Case-insensitive. |
Sample Configuration
{
"resource": "project",
"operation": "get",
"Host": "https://acmecorp.atlassian.net",
"Email": "automation@acmecorp.com",
"ApiToken": "{{ $credentials.jiraApiToken }}",
"ProjectKey": "{{ $json.projectKey }}"
}
Validation Errors
| Error Code | Cause |
VAL_MISSING_PROJECT_KEY | ProjectKey is empty or null. |
PROJECT_NOT_FOUND | No project exists with the given key, or the authenticated user lacks access. |
AUTH_FAILED | Invalid credentials or expired API token. |
Output Fields
| Field | Type | Description |
status | string | "success" or "error" |
projectKey | string | The project key. Example: "OPS" |
projectId | string | Internal numeric project ID. |
name | string | Full project name. Example: "Operations" |
type | string | Project type. Values: "software", "business", "service_desk". |
description | string | Project description. May be null if not set. |
lead | string | Display name of the project lead. May be null. |
url | string | URL to the project's Jira board. Example: "https://acmecorp.atlassian.net/jira/software/projects/OPS/boards" |
resource | string | Always "project" |
operation | string | Always "get" |
Sample Output
{
"status": "success",
"projectKey": "OPS",
"projectId": "10001",
"name": "Operations",
"type": "software",
"description": "Production operations, incident management, and SRE tasks.",
"lead": "Sarah Chen",
"url": "https://acmecorp.atlassian.net/jira/software/projects/OPS/boards",
"resource": "project",
"operation": "get"
}
Expression Reference
| Expression | Type | Example Value | Use |
{{ $output.getProject.name }} | string | "Operations" | Populate notification subject with project name |
{{ $output.getProject.lead }} | string | "Sarah Chen" | Address escalation to project lead |
{{ $output.getProject.type }} | string | "software" | Gate sprint-specific operations on type check |
{{ $output.getProject.url }} | string | Board URL | Embed board link in Slack notification |
{{ $output.getProject.description }} | string | Project description | Include in project health report |
Node Policies & GuardRails
- Use for single known project keys: Use
project/get when you have a specific key. For discovery of multiple projects, use project/list.
- Null-check lead and description: These fields may be null for projects that have not been fully configured. Use null-coalescing expressions:
{{ $output.getProject.lead ?? "No lead assigned" }}.
- Project type gate for sprint operations: Only "software" type projects support sprints and boards. Always check
type === "software" before attempting sprint-related operations via the Jira API.
Workflow Example — Lead-Addressed Escalation Notification
// Step 1: Get the project details for context enrichment
{
"resource": "project",
"operation": "get",
"ProjectKey": "{{ $json.affectedProject }}"
}
// Step 2: Slack/postMessage
{
"channel": "#project-leads",
"text": ":warning: *{{ $output.getProject.name }}* ({{ $output.getProject.projectKey }}) has {{ $json.openP1Count }} open P1 issues.\n\nProject Lead: {{ $output.getProject.lead }}\nBoard: {{ $output.getProject.url }}"
}