diff --git a/pages/toolkits/productivity/jira.mdx b/pages/toolkits/productivity/jira.mdx index c4b8e621..9387bf88 100644 --- a/pages/toolkits/productivity/jira.mdx +++ b/pages/toolkits/productivity/jira.mdx @@ -11,7 +11,7 @@ import ToolFooter from "@/components/ToolFooter"; author="Arcade" codeLink="https://github.com/ArcadeAI/arcade-ai/tree/main/toolkits/jira" authType="OAuth2" - versions={["1.0.0"]} + versions={["2.2.0"]} /> @@ -23,6 +23,7 @@ The Jira toolkit provides a comprehensive set of tools for interacting with Jira - Manage issue labels and attachments, including adding and removing them. - Transition issues between different statuses and manage comments on issues. - Browse and list available projects, priorities, and users within Jira. +- Browse and list information of available boards and sprints within a Jira cloud. This toolkit streamlines the process of issue management, making it easier to integrate Jira functionalities into applications and workflows. @@ -60,6 +61,7 @@ This toolkit streamlines the process of issue management, making it easier to in ["Jira.AddLabelsToIssue", "Add labels to an existing Jira issue."], ["Jira.RemoveLabelsFromIssue", "Remove labels from an existing Jira issue."], ["Jira.UpdateIssue", "Update an existing Jira issue."], + ["Jira.ListSprintsForBoards", "Retrieve sprints from Jira boards with filtering options for planning and tracking purposes."], ["Jira.ListLabels", "Get the existing labels (tags) in the user's Jira instance."], ["Jira.ListUsers", "Browse users in Jira."], ["Jira.GetUserById", "Get user information by their ID."], @@ -76,6 +78,7 @@ This toolkit streamlines the process of issue management, making it easier to in ["Jira.ListProjects", "Browse projects available in Jira."], ["Jira.SearchProjects", "Get the details of all Jira projects."], ["Jira.GetProjectById", "Get the details of a Jira project by its ID or key."], + ["Jira.GetBoards", "Get Jira boards, with the option to filter by a list of board names or IDs (accepts a mix of both). Supports 'offset' and 'limit' parameters."], ["Jira.GetPriorityById", "Get the details of a priority by its ID."], ["Jira.ListPrioritySchemes", "Browse the priority schemes available in Jira."], ["Jira.ListPrioritiesAssociatedWithAPriorityScheme", "Browse the priorities associated with a priority scheme."], @@ -401,6 +404,35 @@ Update an existing Jira issue. - **atlassian_cloud_id** (`string`, optional) The ID of the Atlassian Cloud to use (defaults to None). If not provided and the user has a single cloud authorized, the tool will use that. Otherwise, an error will be raised. +## Jira.ListSprintsForBoards + +
+ + +Retrieve sprints from Jira boards with filtering options for planning and tracking purposes. + +**Parameters** + +- **board_identifiers_list** (`array[string]`, optional) List of board names or numeric IDs (as strings) to retrieve sprints from. Include all mentioned boards in a single list for best performance. Optional, defaults to None. +- **max_sprints_per_board** (`integer`, optional) Maximum sprints per board (1-50). Latest sprints first. Optional, defaults to 50. +- **offset** (`integer`, optional) Number of sprints to skip per board for pagination. Optional, defaults to 0. +- **state** (`Enum` [SprintState](/toolkits/productivity/jira/reference#SprintState), optional) Filter by sprint state using SprintState enum value. Available options: SprintState.FUTURE (future sprints), SprintState.ACTIVE (active sprints), SprintState.CLOSED (closed sprints), SprintState.FUTURE_AND_ACTIVE (future + active), SprintState.FUTURE_AND_CLOSED (future + closed), SprintState.ACTIVE_AND_CLOSED (active + closed), SprintState.ALL (all states). Optional, defaults to None (all states). +- **start_date** (`string`, optional) Start date filter in YYYY-MM-DD format. Can combine with end_date. Optional, defaults to None. +- **end_date** (`string`, optional) End date filter in YYYY-MM-DD format. Can combine with start_date. Optional, defaults to None. +- **specific_date** (`string`, optional) Specific date in YYYY-MM-DD to find sprints active on that date. Cannot combine with start_date/end_date. Optional, defaults to None. +- **atlassian_cloud_id** (`string`, optional) Atlassian Cloud ID to use. Optional, defaults to None (uses single authorized cloud). + + ## Jira.ListLabels
@@ -784,6 +816,31 @@ Get the details of a Jira project by its ID or key. - **atlassian_cloud_id** (`string`, optional) The ID of the Atlassian Cloud to use (defaults to None). If not provided and the user has a single cloud authorized, the tool will use that. Otherwise, an error will be raised. +## Jira.GetBoards + +
+ + +Retrieve Jira boards either by specifying their names or IDs, or get all + +**Parameters** + +- **board_identifiers_list** (`array[string]`, optional) List of board names or numeric IDs (as strings) to retrieve using pagination. Include all mentioned boards in a single list for best performance. Default None retrieves all boards. Maximum 50 boards returned per call. +- **limit** (`integer`, optional) Maximum number of boards to return (1-50). Defaults to max that is 50. +- **offset** (`integer`, optional) Number of boards to skip for pagination. Must be 0 or greater. Defaults to 0. +- **atlassian_cloud_id** (`string`, optional) Atlassian Cloud ID to use. Defaults to None (uses single authorized cloud). + + ## Jira.GetPriorityById
diff --git a/pages/toolkits/productivity/jira/reference.mdx b/pages/toolkits/productivity/jira/reference.mdx index 2ee71bc9..addebc4f 100644 --- a/pages/toolkits/productivity/jira/reference.mdx +++ b/pages/toolkits/productivity/jira/reference.mdx @@ -2,6 +2,18 @@ Below is a reference of enumerations used by some tools in the Jira toolkit: +## SprintState + +Sprint states are used in the `Jira.ListSprints` tool to filter sprints. The following enumeration values represent the possible states supported by the Jira API, either individually or in combination: + +- **FUTURE**: `future` +- **ACTIVE**: `active` +- **CLOSED**: `closed` +- **FUTURE_AND_ACTIVE**: `future_and_active` +- **FUTURE_AND_CLOSED**: `future_and_closed` +- **ACTIVE_AND_CLOSED**: `active_and_closed` +- **ALL**: `all` + ## PrioritySchemeOrderBy - **NAME_ASCENDING**: `name ascending` diff --git a/public/examples/integrations/toolkits/jira/get_boards_example_call_tool.js b/public/examples/integrations/toolkits/jira/get_boards_example_call_tool.js new file mode 100644 index 00000000..dcca35dc --- /dev/null +++ b/public/examples/integrations/toolkits/jira/get_boards_example_call_tool.js @@ -0,0 +1,33 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable + +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "Jira.GetBoards"; + +// Start the authorization process +const authResponse = await client.tools.authorize({tool_name: TOOL_NAME}); + +if (authResponse.status !== "completed") { + console.log(`Click this link to authorize: ${authResponse.url}`); +} + +// Wait for the authorization to complete +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + "board_identifiers_list": [ + "123", + "Project Board" + ], + "limit": 10, + "offset": 0 +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/toolkits/jira/get_boards_example_call_tool.py b/public/examples/integrations/toolkits/jira/get_boards_example_call_tool.py new file mode 100644 index 00000000..d70afcf7 --- /dev/null +++ b/public/examples/integrations/toolkits/jira/get_boards_example_call_tool.py @@ -0,0 +1,26 @@ +import json +from arcadepy import Arcade + +client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable + +USER_ID = "{arcade_user_id}" +TOOL_NAME = "Jira.GetBoards" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME) + +if auth_response.status != "completed": + print(f"Click this link to authorize: {auth_response.url}") + +# Wait for the authorization to complete +client.auth.wait_for_completion(auth_response) + +tool_input = { + 'board_identifiers_list': ['123', 'Project Board'], 'limit': 10, 'offset': 0 +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2)) diff --git a/public/examples/integrations/toolkits/jira/list_sprints_for_boards_example_call_tool.js b/public/examples/integrations/toolkits/jira/list_sprints_for_boards_example_call_tool.js new file mode 100644 index 00000000..ee69ca41 --- /dev/null +++ b/public/examples/integrations/toolkits/jira/list_sprints_for_boards_example_call_tool.js @@ -0,0 +1,35 @@ +import { Arcade } from "@arcadeai/arcadejs"; + +const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable + +const USER_ID = "{arcade_user_id}"; +const TOOL_NAME = "Jira.ListSprintsForBoards"; + +// Start the authorization process +const authResponse = await client.tools.authorize({tool_name: TOOL_NAME}); + +if (authResponse.status !== "completed") { + console.log(`Click this link to authorize: ${authResponse.url}`); +} + +// Wait for the authorization to complete +await client.auth.waitForCompletion(authResponse); + +const toolInput = { + "board_identifiers_list": [ + "123", + "456" + ], + "max_sprints_per_board": 10, + "state": "active", + "start_date": "2023-01-01", + "end_date": "2023-12-31" +}; + +const response = await client.tools.execute({ + tool_name: TOOL_NAME, + input: toolInput, + user_id: USER_ID, +}); + +console.log(JSON.stringify(response.output.value, null, 2)); diff --git a/public/examples/integrations/toolkits/jira/list_sprints_for_boards_example_call_tool.py b/public/examples/integrations/toolkits/jira/list_sprints_for_boards_example_call_tool.py new file mode 100644 index 00000000..4f919ede --- /dev/null +++ b/public/examples/integrations/toolkits/jira/list_sprints_for_boards_example_call_tool.py @@ -0,0 +1,30 @@ +import json +from arcadepy import Arcade + +client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable + +USER_ID = "{arcade_user_id}" +TOOL_NAME = "Jira.ListSprintsForBoards" + +auth_response = client.tools.authorize(tool_name=TOOL_NAME) + +if auth_response.status != "completed": + print(f"Click this link to authorize: {auth_response.url}") + +# Wait for the authorization to complete +client.auth.wait_for_completion(auth_response) + +tool_input = { + 'board_identifiers_list': ['123', '456'], + 'max_sprints_per_board': 10, + 'state': 'active', + 'start_date': '2023-01-01', + 'end_date': '2023-12-31' +} + +response = client.tools.execute( + tool_name=TOOL_NAME, + input=tool_input, + user_id=USER_ID, +) +print(json.dumps(response.output.value, indent=2))