Skip to content

Commit d6a8ac1

Browse files
SamMorrowDrumsCopilotgithub-actions[bot]
authored
Type granular issue MCP inputs and protocol-gated outputs (#3394)
* feat(repos): complete typed repository tool outputs Migrate the remaining 17 repository tools to concrete inputs and outputs. Preserve existing content, mutations, scopes, filtering, and protocol gating; add wire and schema conformance coverage. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore(repos): exclude unrelated snapshot formatting drift Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * refactor(repos): compact typed repository outputs Replace raw REST output schemas with compact repository DTOs, retain one canonical snapshot per tool, and align modern JSON text with structured output while pinning legacy content. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * feat(issues): add typed consolidated issue tool contracts Preserve raw helper APIs and exact legacy text while exposing concrete output unions for modern protocols. Retain explicit awaiting statuses and real null responses without exposing SDK-generated error fallbacks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: regenerate license files Auto-generated by license-check workflow * refactor(issues): minimize consolidated typed outputs Project compact method-discriminated DTOs from API responses while preserving the separate legacy text formatter and explicit app-awaiting status. Cache strict schemas and keep only canonical snapshots. Strengthen null-member presence, schema size, and lockdown projection regressions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(issues): keep union property schemas portable Preserve forbidden variant properties as annotated schema objects rather than boolean schemas emitted by jsonschema-go. Cover Inspector's input paths and IFC labels on every issue-read method across protocols. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * test(issues): cover strict sub-issue output variants Reject unknown methods, states, field types, opaque values and API URL properties while covering nullable and empty method data. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * test(issues): pin compact comment user redaction Pin unchanged legacy profile/avatar fields separately from compact modern user projections and assert identical lockdown filtering and sanitization across protocols. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(issues): restore main-identical advertised input schema Remove added custom-field union constraints and sentinel enums from the advertised issue-write input. Preserve runtime exactly-one validation and private strict-schema tests. All three scoped input schemas compare exactly equal to main. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * fix(issues): restore protocol output parity Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * chore: regenerate license files Auto-generated by license-check workflow * refactor(issues): minimize granular structured outputs Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> # Conflicts: # pkg/github/__toolsnaps__/add_sub_issue.snap # pkg/github/__toolsnaps__/remove_sub_issue.snap # pkg/github/__toolsnaps__/reprioritize_sub_issue.snap # pkg/github/granular_issue_types.go # pkg/github/issues_granular.go # pkg/github/typed_granular_issue_outputs_test.go # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # # interactive rebase in progress; onto 1973eee # Last command done (1 command done): # pick 5b8f9d19 # refactor(issues): minimize granular structured outputs # No commands remaining. # You are currently rebasing. # # Changes to be committed: # modified: pkg/github/__toolsnaps__/add_issue_comment_reaction.snap # modified: pkg/github/__toolsnaps__/add_issue_reaction.snap # modified: pkg/github/__toolsnaps__/add_sub_issue.snap # modified: pkg/github/__toolsnaps__/create_issue.snap # modified: pkg/github/__toolsnaps__/hide_issue_comment.snap # modified: pkg/github/__toolsnaps__/remove_issue_comment_reaction.snap # modified: pkg/github/__toolsnaps__/remove_issue_reaction.snap # modified: pkg/github/__toolsnaps__/remove_sub_issue.snap # modified: pkg/github/__toolsnaps__/reprioritize_sub_issue.snap # modified: pkg/github/__toolsnaps__/set_issue_fields.snap # modified: pkg/github/__toolsnaps__/unhide_issue_comment.snap # modified: pkg/github/__toolsnaps__/update_issue_assignees.snap # modified: pkg/github/__toolsnaps__/update_issue_body.snap # modified: pkg/github/__toolsnaps__/update_issue_labels.snap # modified: pkg/github/__toolsnaps__/update_issue_milestone.snap # modified: pkg/github/__toolsnaps__/update_issue_state.snap # modified: pkg/github/__toolsnaps__/update_issue_title.snap # modified: pkg/github/__toolsnaps__/update_issue_type.snap # modified: pkg/github/comment_minimize_test.go # new file: pkg/github/granular_issue_types.go # modified: pkg/github/granular_tools_test.go # modified: pkg/github/issues_granular.go # new file: pkg/github/typed_granular_issue_outputs_test.go # --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent b628491 commit d6a8ac1

23 files changed

Lines changed: 2829 additions & 722 deletions

‎pkg/github/__toolsnaps__/add_issue_comment_reaction.snap‎

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@
77
"title": "Add Reaction to Issue or Pull Request Comment"
88
},
99
"description": "Add a reaction to an issue or pull request comment.",
10+
"icons": [
11+
{
12+
"mimeType": "image/png",
13+
"src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAC2UlEQVRIicWVMUyTaRjHf/+vVUpOJOdilOYoUvVreq2CDmLOwdlAS5xMbrrhBifjYG7QjYuJw108nZx1huLgYlw0QshxChUK2koxHHcuCmgsFfieG0or3kGPSoz/8X3f5/97nvfN8z7wmaVqm9FodFfR/EnMugy5giCAwYwgI9Ff9Hl9L9Lp1zUBgsGO+rqGwnlhF4CdwBSyAUwvS1G220zHBSFgHtmVxYWvfp2ZGSj8LyAcjgfZphTQZtAr7OdsZvSP9RIJR+LtQhcNusF+d1aUfPp05M8NAavmg8AOk3cmN56+s1Hpa7U/cviUYbcw3jgex9ZCKoBgsKM+0PDuAdBq2He5zOiTzZiXtc+NxRw598GeLRcWTuTz+UUAp3ygrqFwHmgzeWdqNQd4PpFOy/gedNQfaDz3UQXRaHRX0fNPGdzNZUZO12q+VuHIoV7g5Hu/1/IinX7tABTNnwR2SvRsxRzAzOsBGuuWfAkoX5FZFzCVHR95tFVAbiI9DEwj6wLwl5YVMTRYLTDsxjuRrgGYYz/kxkbvbXRWMOBB24cKYI9ks1X8hXQDaAaa5XG9WjImZgV71wI+m8qAv8y0t1pSmP0ITANTmHO2qqvRZDALlTdgHKyjWkx2YvQ2cHtTacMxYBhWK5DoF4TCkXj7Jg02VKsbOwI0Y+qvALZrOQXMC13cKkDSJWBuJUCqAhgbG3uF7IpBcn/k8KlPNQ+78U5QQuhy/vHjuQoAYPndwi9gw4bd2ufGYrWatxz8No50ExhaKsz9Vl6vAPL5/KKzoiTGG0fOg1oqCbvxTp/juw/M+zynu/yTwjoD58CBQ02ez/pAR4E+M69ntf3/o1Y3dqR050oAQz7P6Z6cfPRRw647MkOhUMAfaDyH+AloBKYNPRT292rQHoMOSp09J3TZlt5ezWazxX97VR3638RiX9ct+RImSyBcrDT0ETMyMp4ptRIgVX7QL6J/ALSUEwJ5rdg2AAAAAElFTkSuQmCC",
14+
"theme": "light"
15+
},
16+
{
17+
"mimeType": "image/png",
18+
"src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABxElEQVRIibWVvW4TURCFv0vlNEDcIHAkKAERJOIKSjoUArwBPwUFFaKIIngAJARCPIgdh4cgRBYt6ZIAEYEqdhpEw0fhCbkKa68dxyNtsfNzzpnZu3NhwpYGBdUqcA+4A1wEZiK0DawD74FWSml3JAJ1CngGLAIngU1gFfgZKWeAG8AFoAu8At6mlH6VtqTOqJ/UP2pDnRuQO6c27VlbrQ0Dvq121Fulag7q5qPmW18SdSqUd9Qrw4Jn9bNR21YrRQkvYixDKy/AuB3jWjocqKpdtXFU8AxrOTqZzp2PgvnaMRDUA+tB7mypG+OCZ3hbahPgRPguAR9LihaicEu9WcKxClzOi/fU1wPAk7rjgX0uEfNG3cs7mJjtE+wA5/olpZQEHgNf6K2NJyW4NeD7v7c4WptjSc0svlMjdzyM2fbdOyOA7x/T+7mzGj9H8xgIWuquevpw4HmsivkxwBdC/WJRsBKLqqPOHgH8aqybtcJlF0m1WLndUToJ5V31q9r3NOYk7Wh1Wa0PyK3HzA3l/4H3uzIrwFNgCThF7/x/AH5EylngOnAe6AAvgXcppd9DEWRE08DdeIou/RVgJaXUGYQzUfsL+zmwV7BtIq0AAAAASUVORK5CYII=",
19+
"theme": "dark"
20+
}
21+
],
1022
"inputSchema": {
1123
"properties": {
1224
"comment_id": {
@@ -30,11 +42,13 @@
3042
},
3143
"owner": {
3244
"description": "Repository owner (username or organization)",
33-
"type": "string"
45+
"type": "string",
46+
"x-mcp-header": "owner"
3447
},
3548
"repo": {
3649
"description": "Repository name",
37-
"type": "string"
50+
"type": "string",
51+
"x-mcp-header": "repo"
3852
}
3953
},
4054
"required": [
@@ -45,5 +59,24 @@
4559
],
4660
"type": "object"
4761
},
48-
"name": "add_issue_comment_reaction"
62+
"name": "add_issue_comment_reaction",
63+
"outputSchema": {
64+
"additionalProperties": false,
65+
"properties": {
66+
"id": {
67+
"type": "string"
68+
},
69+
"url": {
70+
"type": "string"
71+
}
72+
},
73+
"required": [
74+
"id",
75+
"url"
76+
],
77+
"type": [
78+
"null",
79+
"object"
80+
]
81+
}
4982
}

‎pkg/github/__toolsnaps__/add_issue_reaction.snap‎

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@
77
"title": "Add Reaction to Issue or Pull Request"
88
},
99
"description": "Add a reaction to an issue or pull request.",
10+
"icons": [
11+
{
12+
"mimeType": "image/png",
13+
"src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAC2UlEQVRIicWVMUyTaRjHf/+vVUpOJOdilOYoUvVreq2CDmLOwdlAS5xMbrrhBifjYG7QjYuJw108nZx1huLgYlw0QshxChUK2koxHHcuCmgsFfieG0or3kGPSoz/8X3f5/97nvfN8z7wmaVqm9FodFfR/EnMugy5giCAwYwgI9Ff9Hl9L9Lp1zUBgsGO+rqGwnlhF4CdwBSyAUwvS1G220zHBSFgHtmVxYWvfp2ZGSj8LyAcjgfZphTQZtAr7OdsZvSP9RIJR+LtQhcNusF+d1aUfPp05M8NAavmg8AOk3cmN56+s1Hpa7U/cviUYbcw3jgex9ZCKoBgsKM+0PDuAdBq2He5zOiTzZiXtc+NxRw598GeLRcWTuTz+UUAp3ygrqFwHmgzeWdqNQd4PpFOy/gedNQfaDz3UQXRaHRX0fNPGdzNZUZO12q+VuHIoV7g5Hu/1/IinX7tABTNnwR2SvRsxRzAzOsBGuuWfAkoX5FZFzCVHR95tFVAbiI9DEwj6wLwl5YVMTRYLTDsxjuRrgGYYz/kxkbvbXRWMOBB24cKYI9ks1X8hXQDaAaa5XG9WjImZgV71wI+m8qAv8y0t1pSmP0ITANTmHO2qqvRZDALlTdgHKyjWkx2YvQ2cHtTacMxYBhWK5DoF4TCkXj7Jg02VKsbOwI0Y+qvALZrOQXMC13cKkDSJWBuJUCqAhgbG3uF7IpBcn/k8KlPNQ+78U5QQuhy/vHjuQoAYPndwi9gw4bd2ufGYrWatxz8No50ExhaKsz9Vl6vAPL5/KKzoiTGG0fOg1oqCbvxTp/juw/M+zynu/yTwjoD58CBQ02ez/pAR4E+M69ntf3/o1Y3dqR050oAQz7P6Z6cfPRRw647MkOhUMAfaDyH+AloBKYNPRT292rQHoMOSp09J3TZlt5ezWazxX97VR3638RiX9ct+RImSyBcrDT0ETMyMp4ptRIgVX7QL6J/ALSUEwJ5rdg2AAAAAElFTkSuQmCC",
14+
"theme": "light"
15+
},
16+
{
17+
"mimeType": "image/png",
18+
"src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABxElEQVRIibWVvW4TURCFv0vlNEDcIHAkKAERJOIKSjoUArwBPwUFFaKIIngAJARCPIgdh4cgRBYt6ZIAEYEqdhpEw0fhCbkKa68dxyNtsfNzzpnZu3NhwpYGBdUqcA+4A1wEZiK0DawD74FWSml3JAJ1CngGLAIngU1gFfgZKWeAG8AFoAu8At6mlH6VtqTOqJ/UP2pDnRuQO6c27VlbrQ0Dvq121Fulag7q5qPmW18SdSqUd9Qrw4Jn9bNR21YrRQkvYixDKy/AuB3jWjocqKpdtXFU8AxrOTqZzp2PgvnaMRDUA+tB7mypG+OCZ3hbahPgRPguAR9LihaicEu9WcKxClzOi/fU1wPAk7rjgX0uEfNG3cs7mJjtE+wA5/olpZQEHgNf6K2NJyW4NeD7v7c4WptjSc0svlMjdzyM2fbdOyOA7x/T+7mzGj9H8xgIWuquevpw4HmsivkxwBdC/WJRsBKLqqPOHgH8aqybtcJlF0m1WLndUToJ5V31q9r3NOYk7Wh1Wa0PyK3HzA3l/4H3uzIrwFNgCThF7/x/AH5EylngOnAe6AAvgXcppd9DEWRE08DdeIou/RVgJaXUGYQzUfsL+zmwV7BtIq0AAAAASUVORK5CYII=",
19+
"theme": "dark"
20+
}
21+
],
1022
"inputSchema": {
1123
"properties": {
1224
"content": {
@@ -30,11 +42,13 @@
3042
},
3143
"owner": {
3244
"description": "Repository owner (username or organization)",
33-
"type": "string"
45+
"type": "string",
46+
"x-mcp-header": "owner"
3447
},
3548
"repo": {
3649
"description": "Repository name",
37-
"type": "string"
50+
"type": "string",
51+
"x-mcp-header": "repo"
3852
}
3953
},
4054
"required": [
@@ -45,5 +59,24 @@
4559
],
4660
"type": "object"
4761
},
48-
"name": "add_issue_reaction"
62+
"name": "add_issue_reaction",
63+
"outputSchema": {
64+
"additionalProperties": false,
65+
"properties": {
66+
"id": {
67+
"type": "string"
68+
},
69+
"url": {
70+
"type": "string"
71+
}
72+
},
73+
"required": [
74+
"id",
75+
"url"
76+
],
77+
"type": [
78+
"null",
79+
"object"
80+
]
81+
}
4982
}

‎pkg/github/__toolsnaps__/add_sub_issue.snap‎

Lines changed: 229 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@
77
"title": "Add Sub-Issue"
88
},
99
"description": "Add a sub-issue to a parent issue.",
10+
"icons": [
11+
{
12+
"mimeType": "image/png",
13+
"src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAC2UlEQVRIicWVMUyTaRjHf/+vVUpOJOdilOYoUvVreq2CDmLOwdlAS5xMbrrhBifjYG7QjYuJw108nZx1huLgYlw0QshxChUK2koxHHcuCmgsFfieG0or3kGPSoz/8X3f5/97nvfN8z7wmaVqm9FodFfR/EnMugy5giCAwYwgI9Ff9Hl9L9Lp1zUBgsGO+rqGwnlhF4CdwBSyAUwvS1G220zHBSFgHtmVxYWvfp2ZGSj8LyAcjgfZphTQZtAr7OdsZvSP9RIJR+LtQhcNusF+d1aUfPp05M8NAavmg8AOk3cmN56+s1Hpa7U/cviUYbcw3jgex9ZCKoBgsKM+0PDuAdBq2He5zOiTzZiXtc+NxRw598GeLRcWTuTz+UUAp3ygrqFwHmgzeWdqNQd4PpFOy/gedNQfaDz3UQXRaHRX0fNPGdzNZUZO12q+VuHIoV7g5Hu/1/IinX7tABTNnwR2SvRsxRzAzOsBGuuWfAkoX5FZFzCVHR95tFVAbiI9DEwj6wLwl5YVMTRYLTDsxjuRrgGYYz/kxkbvbXRWMOBB24cKYI9ks1X8hXQDaAaa5XG9WjImZgV71wI+m8qAv8y0t1pSmP0ITANTmHO2qqvRZDALlTdgHKyjWkx2YvQ2cHtTacMxYBhWK5DoF4TCkXj7Jg02VKsbOwI0Y+qvALZrOQXMC13cKkDSJWBuJUCqAhgbG3uF7IpBcn/k8KlPNQ+78U5QQuhy/vHjuQoAYPndwi9gw4bd2ufGYrWatxz8No50ExhaKsz9Vl6vAPL5/KKzoiTGG0fOg1oqCbvxTp/juw/M+zynu/yTwjoD58CBQ02ez/pAR4E+M69ntf3/o1Y3dqR050oAQz7P6Z6cfPRRw647MkOhUMAfaDyH+AloBKYNPRT292rQHoMOSp09J3TZlt5ezWazxX97VR3638RiX9ct+RImSyBcrDT0ETMyMp4ptRIgVX7QL6J/ALSUEwJ5rdg2AAAAAElFTkSuQmCC",
14+
"theme": "light"
15+
},
16+
{
17+
"mimeType": "image/png",
18+
"src": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAABxElEQVRIibWVvW4TURCFv0vlNEDcIHAkKAERJOIKSjoUArwBPwUFFaKIIngAJARCPIgdh4cgRBYt6ZIAEYEqdhpEw0fhCbkKa68dxyNtsfNzzpnZu3NhwpYGBdUqcA+4A1wEZiK0DawD74FWSml3JAJ1CngGLAIngU1gFfgZKWeAG8AFoAu8At6mlH6VtqTOqJ/UP2pDnRuQO6c27VlbrQ0Dvq121Fulag7q5qPmW18SdSqUd9Qrw4Jn9bNR21YrRQkvYixDKy/AuB3jWjocqKpdtXFU8AxrOTqZzp2PgvnaMRDUA+tB7mypG+OCZ3hbahPgRPguAR9LihaicEu9WcKxClzOi/fU1wPAk7rjgX0uEfNG3cs7mJjtE+wA5/olpZQEHgNf6K2NJyW4NeD7v7c4WptjSc0svlMjdzyM2fbdOyOA7x/T+7mzGj9H8xgIWuquevpw4HmsivkxwBdC/WJRsBKLqqPOHgH8aqybtcJlF0m1WLndUToJ5V31q9r3NOYk7Wh1Wa0PyK3HzA3l/4H3uzIrwFNgCThF7/x/AH5EylngOnAe6AAvgXcppd9DEWRE08DdeIou/RVgJaXUGYQzUfsL+zmwV7BtIq0AAAAASUVORK5CYII=",
19+
"theme": "dark"
20+
}
21+
],
1022
"inputSchema": {
1123
"properties": {
1224
"issue_number": {
@@ -16,15 +28,17 @@
1628
},
1729
"owner": {
1830
"description": "Repository owner (username or organization)",
19-
"type": "string"
31+
"type": "string",
32+
"x-mcp-header": "owner"
2033
},
2134
"replace_parent": {
2235
"description": "If true, reparent the sub-issue if it already has a parent",
2336
"type": "boolean"
2437
},
2538
"repo": {
2639
"description": "Repository name",
27-
"type": "string"
40+
"type": "string",
41+
"x-mcp-header": "repo"
2842
},
2943
"sub_issue_id": {
3044
"description": "The ID of the sub-issue to add. ID is not the same as issue number",
@@ -39,5 +53,217 @@
3953
],
4054
"type": "object"
4155
},
42-
"name": "add_sub_issue"
56+
"name": "add_sub_issue",
57+
"outputSchema": {
58+
"additionalProperties": false,
59+
"properties": {
60+
"issue": {
61+
"additionalProperties": false,
62+
"properties": {
63+
"assignees": {
64+
"items": {
65+
"type": "string"
66+
},
67+
"type": [
68+
"null",
69+
"array"
70+
]
71+
},
72+
"body": {
73+
"type": [
74+
"null",
75+
"string"
76+
]
77+
},
78+
"closed_at": {
79+
"description": "Closure time (RFC 3339), when closed.",
80+
"type": "string"
81+
},
82+
"comments": {
83+
"description": "Number of comments.",
84+
"type": [
85+
"null",
86+
"integer"
87+
]
88+
},
89+
"created_at": {
90+
"description": "Creation time (RFC 3339).",
91+
"type": "string"
92+
},
93+
"field_values": {
94+
"items": {
95+
"additionalProperties": false,
96+
"properties": {
97+
"data_type": {
98+
"description": "REST issue field type.",
99+
"enum": [
100+
"text",
101+
"number",
102+
"date",
103+
"single_select"
104+
],
105+
"type": "string"
106+
},
107+
"issue_field_id": {
108+
"type": "integer"
109+
},
110+
"value": {
111+
"type": [
112+
"string",
113+
"number",
114+
"boolean",
115+
"null"
116+
]
117+
}
118+
},
119+
"required": [
120+
"issue_field_id",
121+
"data_type",
122+
"value"
123+
],
124+
"type": [
125+
"null",
126+
"object"
127+
]
128+
},
129+
"type": [
130+
"null",
131+
"array"
132+
]
133+
},
134+
"html_url": {
135+
"description": "Human-readable issue link.",
136+
"type": [
137+
"null",
138+
"string"
139+
]
140+
},
141+
"id": {
142+
"type": [
143+
"null",
144+
"integer"
145+
]
146+
},
147+
"issue_type": {
148+
"type": "string"
149+
},
150+
"labels": {
151+
"items": {
152+
"type": "string"
153+
},
154+
"type": [
155+
"null",
156+
"array"
157+
]
158+
},
159+
"milestone": {
160+
"type": "string"
161+
},
162+
"number": {
163+
"type": [
164+
"null",
165+
"integer"
166+
]
167+
},
168+
"state": {
169+
"description": "Issue state (lowercase REST value).",
170+
"enum": [
171+
"open",
172+
"closed"
173+
],
174+
"type": [
175+
"null",
176+
"string"
177+
]
178+
},
179+
"state_reason": {
180+
"enum": [
181+
"completed",
182+
"not_planned",
183+
"reopened",
184+
"duplicate"
185+
],
186+
"type": [
187+
"null",
188+
"string"
189+
]
190+
},
191+
"sub_issues_summary": {
192+
"additionalProperties": false,
193+
"properties": {
194+
"completed": {
195+
"description": "Number of completed sub-issues.",
196+
"type": "integer"
197+
},
198+
"percent_completed": {
199+
"description": "Completed sub-issues as a percentage (0-100).",
200+
"type": "integer"
201+
},
202+
"total": {
203+
"description": "Total number of sub-issues.",
204+
"type": "integer"
205+
}
206+
},
207+
"required": [
208+
"total",
209+
"completed",
210+
"percent_completed"
211+
],
212+
"type": [
213+
"null",
214+
"object"
215+
]
216+
},
217+
"title": {
218+
"type": [
219+
"null",
220+
"string"
221+
]
222+
},
223+
"updated_at": {
224+
"description": "Last update time (RFC 3339).",
225+
"type": "string"
226+
},
227+
"user": {
228+
"additionalProperties": false,
229+
"properties": {
230+
"id": {
231+
"type": "integer"
232+
},
233+
"login": {
234+
"type": "string"
235+
}
236+
},
237+
"required": [
238+
"login"
239+
],
240+
"type": [
241+
"null",
242+
"object"
243+
]
244+
}
245+
},
246+
"required": [
247+
"assignees"
248+
],
249+
"type": [
250+
"object",
251+
"null"
252+
]
253+
},
254+
"method": {
255+
"enum": [
256+
"add",
257+
"remove",
258+
"reprioritize"
259+
],
260+
"type": "string"
261+
}
262+
},
263+
"required": [
264+
"method",
265+
"issue"
266+
],
267+
"type": "object"
268+
}
43269
}

0 commit comments

Comments
 (0)