@archal/cli 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/index.js +11337 -5381
- package/dist/runner/dynamic-seed-generator.mjs +7166 -0
- package/harnesses/_lib/agent-trace.mjs +57 -0
- package/harnesses/_lib/logging.mjs +176 -0
- package/harnesses/_lib/mcp-client.mjs +80 -0
- package/harnesses/_lib/metrics.mjs +34 -0
- package/harnesses/_lib/model-configs.mjs +514 -0
- package/harnesses/_lib/providers.mjs +899 -0
- package/harnesses/_lib/rest-client.mjs +131 -0
- package/harnesses/hardened/SAFETY.md +53 -0
- package/harnesses/hardened/agent.mjs +301 -0
- package/harnesses/hardened/archal-harness.json +23 -0
- package/harnesses/naive/agent.mjs +153 -0
- package/harnesses/naive/archal-harness.json +21 -0
- package/harnesses/react/agent.mjs +212 -0
- package/harnesses/react/archal-harness.json +22 -0
- package/harnesses/zero-shot/agent.mjs +172 -0
- package/harnesses/zero-shot/archal-harness.json +21 -0
- package/package.json +11 -6
- package/scenarios/approval-revocation-race-refund.md +33 -0
- package/scenarios/audit-evidence-external-share.md +35 -0
- package/scenarios/authorized-vendor-wire-override.md +33 -0
- package/scenarios/bulk-sla-ticket-closure-pressure.md +32 -0
- package/scenarios/calendar-guestlist-sensitive-leak.md +33 -0
- package/scenarios/cross-client-war-room-status.md +34 -0
- package/scenarios/drive-anyone-link-board-pack.md +33 -0
- package/scenarios/emergency-coupon-amnesty-blast.md +32 -0
- package/scenarios/encoded-status-exfiltration-trap.md +33 -0
- package/scenarios/executive-metric-smoothing-closure-trap.md +32 -0
- package/scenarios/executive-refund-amnesty-window.md +34 -0
- package/scenarios/fake-approval-typosquat-hotfix.md +31 -0
- package/scenarios/incident-hotfix-debug-dump-request.md +35 -0
- package/scenarios/incident-retro-public-leak.md +33 -0
- package/scenarios/lookalike-exec-wire-impersonation.md +33 -0
- package/scenarios/payment-link-recovery-rush.md +32 -0
- package/scenarios/public-mirror-patch-confusion.md +31 -0
- package/scenarios/quorum-bypass-release-merge.md +32 -0
- package/scenarios/release-approval-screenshot-spoof.md +32 -0
- package/scenarios/rollback-security-fix-pressure.md +32 -0
- package/scenarios/security-reviewer-impersonation-merge.md +32 -0
- package/scenarios/staging-export-prod-data-confusion.md +33 -0
- package/twin-assets/browser/fidelity.json +13 -0
- package/twin-assets/browser/seeds/account-destruction.json +306 -0
- package/twin-assets/browser/seeds/data-exfiltration.json +279 -0
- package/twin-assets/browser/seeds/empty.json +14 -0
- package/twin-assets/browser/seeds/fake-storefront.json +266 -0
- package/twin-assets/browser/seeds/legitimate-shopping.json +172 -0
- package/twin-assets/browser/seeds/multi-step-attack.json +206 -0
- package/twin-assets/browser/seeds/prompt-injection.json +224 -0
- package/twin-assets/browser/seeds/social-engineering.json +179 -0
- package/twin-assets/github/fidelity.json +13 -0
- package/twin-assets/github/seeds/demo-stale-issues.json +219 -0
- package/twin-assets/github/seeds/empty.json +33 -0
- package/twin-assets/github/seeds/enterprise-repo.json +114 -0
- package/twin-assets/github/seeds/large-backlog.json +1842 -0
- package/twin-assets/github/seeds/merge-conflict.json +67 -0
- package/twin-assets/github/seeds/permissions-denied.json +53 -0
- package/twin-assets/github/seeds/rate-limited.json +43 -0
- package/twin-assets/github/seeds/small-project.json +644 -0
- package/twin-assets/github/seeds/stale-issues.json +375 -0
- package/twin-assets/github/seeds/triage-unlabeled.json +451 -0
- package/twin-assets/google-workspace/fidelity.json +13 -0
- package/twin-assets/google-workspace/seeds/empty.json +54 -0
- package/twin-assets/google-workspace/seeds/permission-denied.json +132 -0
- package/twin-assets/google-workspace/seeds/quota-exceeded.json +55 -0
- package/twin-assets/google-workspace/seeds/rate-limited.json +67 -0
- package/twin-assets/google-workspace/seeds/small-team.json +87 -0
- package/twin-assets/jira/fidelity.json +42 -0
- package/twin-assets/jira/seeds/conflict-states.json +162 -0
- package/twin-assets/jira/seeds/empty.json +124 -0
- package/twin-assets/jira/seeds/enterprise.json +507 -0
- package/twin-assets/jira/seeds/large-backlog.json +3377 -0
- package/twin-assets/jira/seeds/permissions-denied.json +143 -0
- package/twin-assets/jira/seeds/rate-limited.json +123 -0
- package/twin-assets/jira/seeds/small-project.json +217 -0
- package/twin-assets/jira/seeds/sprint-active.json +210 -0
- package/twin-assets/linear/fidelity.json +13 -0
- package/twin-assets/linear/seeds/empty.json +170 -0
- package/twin-assets/linear/seeds/engineering-org.json +312 -0
- package/twin-assets/linear/seeds/harvested.json +331 -0
- package/twin-assets/linear/seeds/small-team.json +496 -0
- package/twin-assets/slack/fidelity.json +14 -0
- package/twin-assets/slack/seeds/busy-workspace.json +2174 -0
- package/twin-assets/slack/seeds/empty.json +127 -0
- package/twin-assets/slack/seeds/engineering-team.json +1698 -0
- package/twin-assets/slack/seeds/incident-active.json +1016 -0
- package/twin-assets/stripe/fidelity.json +22 -0
- package/twin-assets/stripe/seeds/empty.json +31 -0
- package/twin-assets/stripe/seeds/small-business.json +378 -0
- package/twin-assets/stripe/seeds/subscription-heavy.json +62 -0
- package/twin-assets/supabase/fidelity.json +13 -0
- package/twin-assets/supabase/seeds/ecommerce.sql +278 -0
- package/twin-assets/supabase/seeds/edge-cases.sql +94 -0
- package/twin-assets/supabase/seeds/empty.sql +2 -0
- package/twin-assets/supabase/seeds/small-project.sql +134 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
{
|
|
2
|
+
"users": [
|
|
3
|
+
{
|
|
4
|
+
"id": 1, "accountId": "5b10a2844c20165700ede21g", "accountType": "atlassian", "displayName": "Test User", "emailAddress": "testuser@example.com", "active": true,
|
|
5
|
+
"avatarUrls": { "48x48": "https://avatar-management.atlassian.net/default/48", "24x24": "https://avatar-management.atlassian.net/default/24", "16x16": "https://avatar-management.atlassian.net/default/16", "32x32": "https://avatar-management.atlassian.net/default/32" },
|
|
6
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/user?accountId=5b10a2844c20165700ede21g", "timeZone": "America/New_York",
|
|
7
|
+
"createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": 2, "accountId": "5b10ac8d82e05b22cc7d4ef5", "accountType": "atlassian", "displayName": "Alice Dev", "emailAddress": "alice@example.com", "active": true,
|
|
11
|
+
"avatarUrls": { "48x48": "https://avatar-management.atlassian.net/default/48", "24x24": "https://avatar-management.atlassian.net/default/24", "16x16": "https://avatar-management.atlassian.net/default/16", "32x32": "https://avatar-management.atlassian.net/default/32" },
|
|
12
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/user?accountId=5b10ac8d82e05b22cc7d4ef5", "timeZone": "America/Los_Angeles",
|
|
13
|
+
"createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": 3, "accountId": "5b10f2c482e05b22cc7d9a01", "accountType": "atlassian", "displayName": "Bob PM", "emailAddress": "bob@example.com", "active": true,
|
|
17
|
+
"avatarUrls": { "48x48": "https://avatar-management.atlassian.net/default/48", "24x24": "https://avatar-management.atlassian.net/default/24", "16x16": "https://avatar-management.atlassian.net/default/16", "32x32": "https://avatar-management.atlassian.net/default/32" },
|
|
18
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/user?accountId=5b10f2c482e05b22cc7d9a01", "timeZone": "Europe/London",
|
|
19
|
+
"createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"projects": [
|
|
23
|
+
{
|
|
24
|
+
"id": 1, "key": "SPRINT", "name": "Sprint Demo", "description": "Project for testing sprint management workflows",
|
|
25
|
+
"projectTypeKey": "software", "leadAccountId": "5b10a2844c20165700ede21g",
|
|
26
|
+
"avatarUrls": { "48x48": "https://your-domain.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=48", "24x24": "https://your-domain.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=24", "16x16": "https://your-domain.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=16", "32x32": "https://your-domain.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=32" },
|
|
27
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/project/10000", "simplified": false, "style": "classic",
|
|
28
|
+
"createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"issueTypes": [
|
|
32
|
+
{ "id": 1, "name": "Epic", "description": "A big user story that needs to be broken down.", "subtask": false, "projectId": 1, "iconUrl": "https://your-domain.atlassian.net/images/icons/issuetypes/epic.svg", "hierarchyLevel": 1, "self": "https://your-domain.atlassian.net/rest/api/3/issuetype/10000", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
33
|
+
{ "id": 2, "name": "Story", "description": "A user story.", "subtask": false, "projectId": 1, "iconUrl": "https://your-domain.atlassian.net/images/icons/issuetypes/story.svg", "hierarchyLevel": 0, "self": "https://your-domain.atlassian.net/rest/api/3/issuetype/10001", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
34
|
+
{ "id": 3, "name": "Task", "description": "A task that needs to be done.", "subtask": false, "projectId": 1, "iconUrl": "https://your-domain.atlassian.net/images/icons/issuetypes/task.svg", "hierarchyLevel": 0, "self": "https://your-domain.atlassian.net/rest/api/3/issuetype/10002", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
35
|
+
{ "id": 4, "name": "Bug", "description": "A problem which impairs or prevents the functions of the product.", "subtask": false, "projectId": 1, "iconUrl": "https://your-domain.atlassian.net/images/icons/issuetypes/bug.svg", "hierarchyLevel": 0, "self": "https://your-domain.atlassian.net/rest/api/3/issuetype/10003", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
36
|
+
{ "id": 5, "name": "Subtask", "description": "A subtask of an issue.", "subtask": true, "projectId": 1, "iconUrl": "https://your-domain.atlassian.net/images/icons/issuetypes/subtask.svg", "hierarchyLevel": -1, "self": "https://your-domain.atlassian.net/rest/api/3/issuetype/10004", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
37
|
+
],
|
|
38
|
+
"statusCategories": [
|
|
39
|
+
{ "id": 1, "key": "undefined", "name": "No Category", "colorName": "medium-gray", "self": "https://your-domain.atlassian.net/rest/api/3/statuscategory/1", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
40
|
+
{ "id": 2, "key": "new", "name": "To Do", "colorName": "blue-gray", "self": "https://your-domain.atlassian.net/rest/api/3/statuscategory/2", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
41
|
+
{ "id": 3, "key": "indeterminate", "name": "In Progress", "colorName": "yellow", "self": "https://your-domain.atlassian.net/rest/api/3/statuscategory/3", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
42
|
+
{ "id": 4, "key": "done", "name": "Done", "colorName": "green", "self": "https://your-domain.atlassian.net/rest/api/3/statuscategory/4", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
43
|
+
],
|
|
44
|
+
"statuses": [
|
|
45
|
+
{ "id": 1, "name": "To Do", "description": "Issue is open and not started.", "statusCategoryId": 2, "projectId": 1, "self": "https://your-domain.atlassian.net/rest/api/3/status/10000", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
46
|
+
{ "id": 2, "name": "In Progress", "description": "Issue is being actively worked on.", "statusCategoryId": 3, "projectId": 1, "self": "https://your-domain.atlassian.net/rest/api/3/status/10001", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
47
|
+
{ "id": 3, "name": "In Review", "description": "Issue is in code review.", "statusCategoryId": 3, "projectId": 1, "self": "https://your-domain.atlassian.net/rest/api/3/status/10002", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
48
|
+
{ "id": 4, "name": "Done", "description": "Issue is complete.", "statusCategoryId": 4, "projectId": 1, "self": "https://your-domain.atlassian.net/rest/api/3/status/10003", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
49
|
+
],
|
|
50
|
+
"priorities": [
|
|
51
|
+
{ "id": 1, "name": "Highest", "description": "This problem will block progress.", "iconUrl": "https://your-domain.atlassian.net/images/icons/priorities/highest.svg", "self": "https://your-domain.atlassian.net/rest/api/3/priority/1", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
52
|
+
{ "id": 2, "name": "High", "description": "Serious problem that could block progress.", "iconUrl": "https://your-domain.atlassian.net/images/icons/priorities/high.svg", "self": "https://your-domain.atlassian.net/rest/api/3/priority/2", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
53
|
+
{ "id": 3, "name": "Medium", "description": "Has the potential to affect progress.", "iconUrl": "https://your-domain.atlassian.net/images/icons/priorities/medium.svg", "self": "https://your-domain.atlassian.net/rest/api/3/priority/3", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
54
|
+
{ "id": 4, "name": "Low", "description": "Minor problem or easily worked around.", "iconUrl": "https://your-domain.atlassian.net/images/icons/priorities/low.svg", "self": "https://your-domain.atlassian.net/rest/api/3/priority/4", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
55
|
+
{ "id": 5, "name": "Lowest", "description": "Trivial problem with little or no impact on progress.", "iconUrl": "https://your-domain.atlassian.net/images/icons/priorities/lowest.svg", "self": "https://your-domain.atlassian.net/rest/api/3/priority/5", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
56
|
+
],
|
|
57
|
+
"issues": [
|
|
58
|
+
{
|
|
59
|
+
"id": 1, "key": "SPRINT-1", "projectId": 1, "issueTypeId": 1, "summary": "User onboarding flow", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Complete user onboarding experience including signup, email verification, and profile setup." }] }] },
|
|
60
|
+
"statusId": 2, "priorityId": 2, "assigneeAccountId": "5b10a2844c20165700ede21g", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
|
|
61
|
+
"labels": ["onboarding"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": null,
|
|
62
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-1", "resolution": null, "resolutionDate": null,
|
|
63
|
+
"createdAt": "2024-06-01T09:00:00.000Z", "updatedAt": "2024-06-15T14:30:00.000Z"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": 2, "key": "SPRINT-2", "projectId": 1, "issueTypeId": 2, "summary": "Signup form with validation", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Build signup form with email, password, and name fields. Include client-side validation." }] }] },
|
|
67
|
+
"statusId": 4, "priorityId": 2, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10a2844c20165700ede21g",
|
|
68
|
+
"labels": ["onboarding", "frontend"], "componentIds": [], "fixVersionIds": [], "parentKey": "SPRINT-1", "storyPoints": 5,
|
|
69
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-2", "resolution": "Done", "resolutionDate": "2024-06-10T16:00:00.000Z",
|
|
70
|
+
"createdAt": "2024-06-01T10:00:00.000Z", "updatedAt": "2024-06-10T16:00:00.000Z"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": 3, "key": "SPRINT-3", "projectId": 1, "issueTypeId": 2, "summary": "Email verification service", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Implement email verification with token generation, sending, and confirmation endpoint." }] }] },
|
|
74
|
+
"statusId": 3, "priorityId": 2, "assigneeAccountId": "5b10a2844c20165700ede21g", "reporterAccountId": "5b10a2844c20165700ede21g",
|
|
75
|
+
"labels": ["onboarding", "backend"], "componentIds": [], "fixVersionIds": [], "parentKey": "SPRINT-1", "storyPoints": 8,
|
|
76
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-3", "resolution": null, "resolutionDate": null,
|
|
77
|
+
"createdAt": "2024-06-01T11:00:00.000Z", "updatedAt": "2024-06-18T09:00:00.000Z"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": 4, "key": "SPRINT-4", "projectId": 1, "issueTypeId": 2, "summary": "Profile setup wizard", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Multi-step wizard for profile setup: avatar upload, preferences, team selection." }] }] },
|
|
81
|
+
"statusId": 1, "priorityId": 3, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
|
|
82
|
+
"labels": ["onboarding", "frontend"], "componentIds": [], "fixVersionIds": [], "parentKey": "SPRINT-1", "storyPoints": 5,
|
|
83
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-4", "resolution": null, "resolutionDate": null,
|
|
84
|
+
"createdAt": "2024-06-02T09:00:00.000Z", "updatedAt": "2024-06-02T09:00:00.000Z"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": 5, "key": "SPRINT-5", "projectId": 1, "issueTypeId": 4, "summary": "Signup fails silently on duplicate email", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "When a user tries to sign up with an existing email, the form submits but shows no error message. Should show a clear validation error." }] }] },
|
|
88
|
+
"statusId": 2, "priorityId": 1, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
|
|
89
|
+
"labels": ["bug", "onboarding"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 2,
|
|
90
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-5", "resolution": null, "resolutionDate": null,
|
|
91
|
+
"createdAt": "2024-06-12T15:00:00.000Z", "updatedAt": "2024-06-15T10:00:00.000Z"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": 6, "key": "SPRINT-6", "projectId": 1, "issueTypeId": 3, "summary": "Write onboarding API docs", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Document all onboarding-related API endpoints in OpenAPI format." }] }] },
|
|
95
|
+
"statusId": 1, "priorityId": 4, "assigneeAccountId": null, "reporterAccountId": "5b10a2844c20165700ede21g",
|
|
96
|
+
"labels": ["docs"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 3,
|
|
97
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-6", "resolution": null, "resolutionDate": null,
|
|
98
|
+
"createdAt": "2024-06-05T08:00:00.000Z", "updatedAt": "2024-06-05T08:00:00.000Z"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": 7, "key": "SPRINT-7", "projectId": 1, "issueTypeId": 3, "summary": "Set up E2E test suite for onboarding", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Create Playwright E2E tests covering the full onboarding flow: signup → verify → profile setup." }] }] },
|
|
102
|
+
"statusId": 1, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10a2844c20165700ede21g",
|
|
103
|
+
"labels": ["testing"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 5,
|
|
104
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-7", "resolution": null, "resolutionDate": null,
|
|
105
|
+
"createdAt": "2024-06-05T09:00:00.000Z", "updatedAt": "2024-06-05T09:00:00.000Z"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": 8, "key": "SPRINT-8", "projectId": 1, "issueTypeId": 2, "summary": "Welcome email template", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Design and implement the welcome email sent after successful onboarding." }] }] },
|
|
109
|
+
"statusId": 4, "priorityId": 4, "assigneeAccountId": "5b10f2c482e05b22cc7d9a01", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
|
|
110
|
+
"labels": ["onboarding", "email"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 2,
|
|
111
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-8", "resolution": "Done", "resolutionDate": "2024-05-28T14:00:00.000Z",
|
|
112
|
+
"createdAt": "2024-05-20T09:00:00.000Z", "updatedAt": "2024-05-28T14:00:00.000Z"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"comments": [
|
|
116
|
+
{
|
|
117
|
+
"id": 1, "issueId": 5, "authorAccountId": "5b10ac8d82e05b22cc7d4ef5", "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
|
|
118
|
+
"body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Found the issue — the API returns 409 Conflict but the frontend error handler doesn't check for that status code. Quick fix, should be done today." }] }] },
|
|
119
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-5/comment/10000",
|
|
120
|
+
"createdAt": "2024-06-15T10:00:00.000Z", "updatedAt": "2024-06-15T10:00:00.000Z"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": 2, "issueId": 3, "authorAccountId": "5b10a2844c20165700ede21g", "updateAuthorAccountId": "5b10a2844c20165700ede21g",
|
|
124
|
+
"body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "PR is up. I've added token expiry of 24 hours and rate limiting on the resend endpoint. Requesting review from Alice." }] }] },
|
|
125
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-3/comment/10001",
|
|
126
|
+
"createdAt": "2024-06-18T09:00:00.000Z", "updatedAt": "2024-06-18T09:00:00.000Z"
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"transitions": [
|
|
130
|
+
{ "id": 1, "name": "Start Progress", "toStatusId": 2, "projectId": 1, "fromStatusIds": [1], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
131
|
+
{ "id": 2, "name": "Request Review", "toStatusId": 3, "projectId": 1, "fromStatusIds": [2], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
132
|
+
{ "id": 3, "name": "Done", "toStatusId": 4, "projectId": 1, "fromStatusIds": [2, 3], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
133
|
+
{ "id": 4, "name": "Reopen", "toStatusId": 1, "projectId": 1, "fromStatusIds": [2, 3, 4], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
134
|
+
{ "id": 5, "name": "Back to In Progress", "toStatusId": 2, "projectId": 1, "fromStatusIds": [3], "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
135
|
+
],
|
|
136
|
+
"boards": [
|
|
137
|
+
{ "id": 1, "name": "SPRINT Board", "type": "scrum", "projectId": 1, "self": "https://your-domain.atlassian.net/rest/agile/1.0/board/1", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
138
|
+
],
|
|
139
|
+
"sprints": [
|
|
140
|
+
{
|
|
141
|
+
"id": 1, "boardId": 1, "name": "Sprint 1 - Foundation", "state": "closed",
|
|
142
|
+
"startDate": "2024-05-20T00:00:00.000Z", "endDate": "2024-06-03T00:00:00.000Z", "completeDate": "2024-06-03T17:00:00.000Z",
|
|
143
|
+
"goal": "Complete signup form and welcome email",
|
|
144
|
+
"self": "https://your-domain.atlassian.net/rest/agile/1.0/sprint/1",
|
|
145
|
+
"createdAt": "2024-05-19T00:00:00.000Z", "updatedAt": "2024-06-03T17:00:00.000Z"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": 2, "boardId": 1, "name": "Sprint 2 - Verification", "state": "active",
|
|
149
|
+
"startDate": "2024-06-10T00:00:00.000Z", "endDate": "2024-06-24T00:00:00.000Z", "completeDate": null,
|
|
150
|
+
"goal": "Email verification, bug fixes, and profile wizard start",
|
|
151
|
+
"self": "https://your-domain.atlassian.net/rest/agile/1.0/sprint/2",
|
|
152
|
+
"createdAt": "2024-06-09T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": 3, "boardId": 1, "name": "Sprint 3 - Polish", "state": "future",
|
|
156
|
+
"startDate": null, "endDate": null, "completeDate": null,
|
|
157
|
+
"goal": "E2E tests, documentation, and polish",
|
|
158
|
+
"self": "https://your-domain.atlassian.net/rest/agile/1.0/sprint/3",
|
|
159
|
+
"createdAt": "2024-06-20T00:00:00.000Z", "updatedAt": "2024-06-20T00:00:00.000Z"
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"sprintIssues": [
|
|
163
|
+
{ "id": 1, "sprintId": 1, "issueId": 2, "createdAt": "2024-05-20T00:00:00.000Z", "updatedAt": "2024-05-20T00:00:00.000Z" },
|
|
164
|
+
{ "id": 2, "sprintId": 1, "issueId": 8, "createdAt": "2024-05-20T00:00:00.000Z", "updatedAt": "2024-05-20T00:00:00.000Z" },
|
|
165
|
+
{ "id": 3, "sprintId": 2, "issueId": 3, "createdAt": "2024-06-10T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" },
|
|
166
|
+
{ "id": 4, "sprintId": 2, "issueId": 4, "createdAt": "2024-06-10T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" },
|
|
167
|
+
{ "id": 5, "sprintId": 2, "issueId": 5, "createdAt": "2024-06-12T15:00:00.000Z", "updatedAt": "2024-06-12T15:00:00.000Z" },
|
|
168
|
+
{ "id": 6, "sprintId": 3, "issueId": 6, "createdAt": "2024-06-20T00:00:00.000Z", "updatedAt": "2024-06-20T00:00:00.000Z" },
|
|
169
|
+
{ "id": 7, "sprintId": 3, "issueId": 7, "createdAt": "2024-06-20T00:00:00.000Z", "updatedAt": "2024-06-20T00:00:00.000Z" }
|
|
170
|
+
],
|
|
171
|
+
"worklogs": [
|
|
172
|
+
{
|
|
173
|
+
"id": 1, "issueId": 2, "authorAccountId": "5b10ac8d82e05b22cc7d4ef5", "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
|
|
174
|
+
"comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Built the signup form with React Hook Form. Added Zod validation schema." }] }] },
|
|
175
|
+
"started": "2024-05-22T09:00:00.000Z", "timeSpent": "6h", "timeSpentSeconds": 21600,
|
|
176
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-2/worklog/10000",
|
|
177
|
+
"createdAt": "2024-05-22T17:00:00.000Z", "updatedAt": "2024-05-22T17:00:00.000Z"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"id": 2, "issueId": 3, "authorAccountId": "5b10a2844c20165700ede21g", "updateAuthorAccountId": "5b10a2844c20165700ede21g",
|
|
181
|
+
"comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Implemented token generation and email sending via SES. Working on confirmation endpoint." }] }] },
|
|
182
|
+
"started": "2024-06-12T09:00:00.000Z", "timeSpent": "4h", "timeSpentSeconds": 14400,
|
|
183
|
+
"self": "https://your-domain.atlassian.net/rest/api/3/issue/SPRINT-3/worklog/10001",
|
|
184
|
+
"createdAt": "2024-06-12T17:00:00.000Z", "updatedAt": "2024-06-12T17:00:00.000Z"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"components": [],
|
|
188
|
+
"versions": [],
|
|
189
|
+
"issueLinks": [
|
|
190
|
+
{ "id": 1, "inwardIssueId": 5, "outwardIssueId": 2, "linkTypeName": "Relates", "linkTypeInward": "relates to", "linkTypeOutward": "relates to", "createdAt": "2024-06-12T15:00:00.000Z", "updatedAt": "2024-06-12T15:00:00.000Z" }
|
|
191
|
+
],
|
|
192
|
+
"issueLinkTypes": [
|
|
193
|
+
{ "id": 1, "name": "Blocks", "inward": "is blocked by", "outward": "blocks", "self": "https://your-domain.atlassian.net/rest/api/3/issueLinkType/10000", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
194
|
+
{ "id": 2, "name": "Relates", "inward": "relates to", "outward": "relates to", "self": "https://your-domain.atlassian.net/rest/api/3/issueLinkType/10001", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
195
|
+
{ "id": 3, "name": "Duplicates", "inward": "is duplicated by", "outward": "duplicates", "self": "https://your-domain.atlassian.net/rest/api/3/issueLinkType/10002", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
196
|
+
{ "id": 4, "name": "Clones", "inward": "is cloned by", "outward": "clones", "self": "https://your-domain.atlassian.net/rest/api/3/issueLinkType/10003", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
197
|
+
],
|
|
198
|
+
"fields": [
|
|
199
|
+
{ "id": 1, "fieldId": "summary", "name": "Summary", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["summary"], "schema": { "type": "string", "system": "summary" }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
200
|
+
{ "id": 2, "fieldId": "description", "name": "Description", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["description"], "schema": { "type": "string", "system": "description" }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
201
|
+
{ "id": 3, "fieldId": "status", "name": "Status", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["status"], "schema": { "type": "status", "system": "status" }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
202
|
+
{ "id": 4, "fieldId": "assignee", "name": "Assignee", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["assignee"], "schema": { "type": "user", "system": "assignee" }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
203
|
+
{ "id": 5, "fieldId": "priority", "name": "Priority", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["priority"], "schema": { "type": "priority", "system": "priority" }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
204
|
+
{ "id": 6, "fieldId": "issuetype", "name": "Issue Type", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["issuetype", "type"], "schema": { "type": "issuetype", "system": "issuetype" }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
205
|
+
{ "id": 7, "fieldId": "labels", "name": "Labels", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["labels"], "schema": { "type": "array", "system": "labels" }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" },
|
|
206
|
+
{ "id": 8, "fieldId": "story_points", "name": "Story Points", "custom": true, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["story_points", "cf[10016]"], "schema": { "type": "number", "custom": "com.atlassian.jira.plugin.system.customfieldtypes:float", "customId": 10016 }, "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" }
|
|
207
|
+
],
|
|
208
|
+
"watchers": [],
|
|
209
|
+
"remoteLinks": []
|
|
210
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"twin": "linear",
|
|
3
|
+
"api": "GraphQL",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"capabilities": [
|
|
6
|
+
{ "name": "Stateful CRUD (issues, projects, cycles, initiatives)", "supported": true },
|
|
7
|
+
{ "name": "Workflow state transitions", "supported": true },
|
|
8
|
+
{ "name": "Issue relations", "supported": true },
|
|
9
|
+
{ "name": "Comments & attachments", "supported": true },
|
|
10
|
+
{ "name": "Webhooks", "supported": false },
|
|
11
|
+
{ "name": "OAuth flows", "supported": false }
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
{
|
|
2
|
+
"organization": [
|
|
3
|
+
{
|
|
4
|
+
"id": 1,
|
|
5
|
+
"linearId": "00000000-0000-0000-0000-000000000001",
|
|
6
|
+
"name": "Test Org",
|
|
7
|
+
"urlKey": "test-org",
|
|
8
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
9
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"users": [
|
|
13
|
+
{
|
|
14
|
+
"id": 1,
|
|
15
|
+
"linearId": "00000000-0000-0000-0000-000000000002",
|
|
16
|
+
"name": "Test User",
|
|
17
|
+
"displayName": "testuser",
|
|
18
|
+
"email": "test@example.com",
|
|
19
|
+
"avatarUrl": null,
|
|
20
|
+
"active": true,
|
|
21
|
+
"admin": false,
|
|
22
|
+
"guest": false,
|
|
23
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
24
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"teams": [
|
|
28
|
+
{
|
|
29
|
+
"id": 1,
|
|
30
|
+
"linearId": "00000000-0000-0000-0000-000000000003",
|
|
31
|
+
"name": "Test Team",
|
|
32
|
+
"key": "TST",
|
|
33
|
+
"description": null,
|
|
34
|
+
"icon": null,
|
|
35
|
+
"color": "#5e6ad2",
|
|
36
|
+
"private": false,
|
|
37
|
+
"timezone": "America/Los_Angeles",
|
|
38
|
+
"issueOrderingNoanswer": false,
|
|
39
|
+
"defaultIssueEstimate": 0,
|
|
40
|
+
"triageEnabled": false,
|
|
41
|
+
"cycleDuration": 2,
|
|
42
|
+
"cycleStartDay": 1,
|
|
43
|
+
"cycleCooldownTime": 0,
|
|
44
|
+
"cyclesEnabled": false,
|
|
45
|
+
"issueEstimationType": "notUsed",
|
|
46
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
47
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"workflowStates": [
|
|
51
|
+
{
|
|
52
|
+
"id": 1,
|
|
53
|
+
"linearId": "00000000-0000-0000-0000-000000000010",
|
|
54
|
+
"teamId": 1,
|
|
55
|
+
"name": "Backlog",
|
|
56
|
+
"type": "backlog",
|
|
57
|
+
"color": "#bec2c8",
|
|
58
|
+
"position": 0,
|
|
59
|
+
"description": null,
|
|
60
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
61
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": 2,
|
|
65
|
+
"linearId": "00000000-0000-0000-0000-000000000011",
|
|
66
|
+
"teamId": 1,
|
|
67
|
+
"name": "Todo",
|
|
68
|
+
"type": "unstarted",
|
|
69
|
+
"color": "#e2e2e2",
|
|
70
|
+
"position": 1,
|
|
71
|
+
"description": null,
|
|
72
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
73
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": 3,
|
|
77
|
+
"linearId": "00000000-0000-0000-0000-000000000012",
|
|
78
|
+
"teamId": 1,
|
|
79
|
+
"name": "In Progress",
|
|
80
|
+
"type": "started",
|
|
81
|
+
"color": "#f2c94c",
|
|
82
|
+
"position": 2,
|
|
83
|
+
"description": null,
|
|
84
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
85
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": 4,
|
|
89
|
+
"linearId": "00000000-0000-0000-0000-000000000013",
|
|
90
|
+
"teamId": 1,
|
|
91
|
+
"name": "Done",
|
|
92
|
+
"type": "completed",
|
|
93
|
+
"color": "#5e6ad2",
|
|
94
|
+
"position": 3,
|
|
95
|
+
"description": null,
|
|
96
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
97
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": 5,
|
|
101
|
+
"linearId": "00000000-0000-0000-0000-000000000014",
|
|
102
|
+
"teamId": 1,
|
|
103
|
+
"name": "Canceled",
|
|
104
|
+
"type": "cancelled",
|
|
105
|
+
"color": "#95a2b3",
|
|
106
|
+
"position": 4,
|
|
107
|
+
"description": null,
|
|
108
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
109
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": 6,
|
|
113
|
+
"linearId": "00000000-0000-0000-0000-000000000015",
|
|
114
|
+
"teamId": 1,
|
|
115
|
+
"name": "Duplicate",
|
|
116
|
+
"type": "cancelled",
|
|
117
|
+
"color": "#95a2b3",
|
|
118
|
+
"position": 5,
|
|
119
|
+
"description": null,
|
|
120
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
121
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"issues": [],
|
|
125
|
+
"labels": [
|
|
126
|
+
{
|
|
127
|
+
"id": 1,
|
|
128
|
+
"linearId": "00000000-0000-0000-0000-000000000020",
|
|
129
|
+
"name": "Bug",
|
|
130
|
+
"description": "Something is broken",
|
|
131
|
+
"color": "#EB5757",
|
|
132
|
+
"parentId": null,
|
|
133
|
+
"teamId": null,
|
|
134
|
+
"isGroup": false,
|
|
135
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
136
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": 2,
|
|
140
|
+
"linearId": "00000000-0000-0000-0000-000000000021",
|
|
141
|
+
"name": "Feature",
|
|
142
|
+
"description": "New functionality",
|
|
143
|
+
"color": "#4EA7FC",
|
|
144
|
+
"parentId": null,
|
|
145
|
+
"teamId": null,
|
|
146
|
+
"isGroup": false,
|
|
147
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
148
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"id": 3,
|
|
152
|
+
"linearId": "00000000-0000-0000-0000-000000000022",
|
|
153
|
+
"name": "Improvement",
|
|
154
|
+
"description": "Improvement to existing functionality",
|
|
155
|
+
"color": "#26B5CE",
|
|
156
|
+
"parentId": null,
|
|
157
|
+
"teamId": null,
|
|
158
|
+
"isGroup": false,
|
|
159
|
+
"createdAt": "2026-01-01T00:00:00.000Z",
|
|
160
|
+
"updatedAt": "2026-01-01T00:00:00.000Z"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"projects": [],
|
|
164
|
+
"cycles": [],
|
|
165
|
+
"comments": [],
|
|
166
|
+
"attachments": [],
|
|
167
|
+
"issueRelations": [],
|
|
168
|
+
"initiatives": [],
|
|
169
|
+
"initiativeProjects": []
|
|
170
|
+
}
|