Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Microsoft Semantic kernel JiraPlugin OpenAPI

From Leeroopedia
Knowledge Sources
Domains OpenAPI, Jira_Integration
Last Updated 2026-02-11 00:00 GMT

Overview

Concrete Swagger 2.0 OpenAPI specification for the Atlassian JIRA REST API, used as a plugin resource in the Semantic Kernel Concepts samples for issue tracking integration.

Description

This file is a Swagger 2.0 JSON specification that describes a subset of the JIRA REST API for software development project and issue management. It uses basic authentication and targets https://{yourhost.yourdomain.com}/rest/api as the base path. The specification defines the following operations:

  • GET /issue/{issueKey} -- Retrieves a full issue object by its unique key, returning comprehensive fields including issue type, project, status, priority, assignee, reporter, creator, time tracking, progress, components, description, summary, resolution, and custom fields.
  • PUT /issue/{issueKey} -- Updates an existing JIRA issue with modified fields (summary, description, reporter, priority, labels, assignee, parent).
  • POST /issue/{issueKey}/comment -- Adds a comment to an existing JIRA issue.

The specification includes extensive model definitions:

  • FullIssue -- Complete issue representation with nested objects for issue type, project, status (with status category), priority, assignee, reporter, creator, resolution, progress, aggregate progress, components, and custom fields.
  • CreateIssueRequest / CreateIssueResponse -- Issue creation payloads with dynamic value lookups for issue types, reporters, priorities, and assignees.
  • UpdateIssueRequest -- Issue update payload.
  • Comment / CommentResponse -- Comment creation and response models.
  • Project / ProjectArray / ListProjects_ResponseV2 -- Project listing models.
  • User / UserList / Creator / Assignee / Reporter -- User-related models.

The specification also includes x-ms-dynamic-values annotations for dynamic dropdown population of issue types, users, and priorities in connector UIs.

Usage

This file is used by the Concepts sample project to demonstrate how Semantic Kernel can integrate with external issue tracking systems via OpenAPI. Developers use it to understand how to build JIRA-connected AI agents and plugins.

Code Reference

Source Location

Signature

{
  "swagger": "2.0",
  "info": {
    "version": "1.0.0",
    "title": "JIRA",
    "description": "JIRA is a software development tool for agile teams to plan,
      track, and release world-class software."
  },
  "host": "yourhost.yourdomain.com",
  "basePath": "/rest/api",
  "schemes": ["https"],
  "produces": ["application/json"],
  "paths": {
    "/issue/{issueKey}": {
      "get": {
        "summary": "Get issue by key",
        "operationId": "GetIssue",
        "parameters": [
          { "name": "issueKey", "in": "path", "required": true, "type": "string" }
        ]
      },
      "put": { "summary": "Update issue", "operationId": "UpdateIssue" }
    },
    "/issue/{issueKey}/comment": {
      "post": { "summary": "Add comment", "operationId": "AddComment" }
    }
  }
}

Import

// Loaded in the Concepts sample as an OpenAPI plugin:
await kernel.ImportPluginFromOpenApiAsync(
    "JiraPlugin",
    Path.Combine("Resources", "Plugins", "JiraPlugin", "openapi.json"),
    new OpenApiFunctionExecutionParameters
    {
        ServerUrlOverride = new Uri("https://your-jira-instance.atlassian.net/rest/api"),
        AuthCallback = async (request, cancellationToken) =>
        {
            request.Headers.Authorization =
                new AuthenticationHeaderValue("Basic", Convert.ToBase64String(
                    Encoding.UTF8.GetBytes($"{email}:{apiToken}")));
        }
    });

I/O Contract

Inputs

Name Type Required Description
issueKey string (path) yes Unique key of the JIRA issue (e.g., "PROJ-123").
body (UpdateIssue) UpdateIssueRequest (body) yes Fields to update: summary, description, reporter, priority, labels, assignee, parent.
body (AddComment) Comment (body) yes Comment body text to add to the issue.
body (CreateIssue) CreateIssueRequest (body) yes Issue creation payload with required fields: summary and issuetype.id.

Outputs

Name Type Description
FullIssue object Complete issue object with id, key, self URL, and nested fields (issue type, project, status, priority, assignee, reporter, creator, time tracking, progress, components, description, summary, resolution, custom fields).
CreateIssueResponse object Created issue with id and key.
CommentResponse object Created comment with id, body, and created date-time.
string string Empty success response for UpdateIssue.

Usage Examples

Getting an Issue by Key

var kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(deploymentName, endpoint, apiKey)
    .Build();

await kernel.ImportPluginFromOpenApiAsync("JiraPlugin",
    Path.Combine("Resources", "Plugins", "JiraPlugin", "openapi.json"));

// Retrieve an issue
var issue = await kernel.InvokeAsync("JiraPlugin", "GetIssue",
    new KernelArguments { ["issueKey"] = "SK-1234" });

Adding a Comment to an Issue

var result = await kernel.InvokeAsync("JiraPlugin", "AddComment",
    new KernelArguments
    {
        ["issueKey"] = "SK-1234",
        ["body"] = JsonSerializer.Serialize(new { body = "Analysis complete." })
    });

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment