@archal/cli 0.7.12 → 0.9.0

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.
Files changed (345) hide show
  1. package/README.md +12 -9
  2. package/bin/archal.cjs +15 -0
  3. package/dist/harnesses/_lib/agent-trace.mjs +57 -0
  4. package/dist/harnesses/_lib/env-utils.mjs +23 -0
  5. package/dist/harnesses/_lib/harness-runner.mjs +354 -0
  6. package/dist/harnesses/_lib/llm-call.mjs +411 -0
  7. package/dist/harnesses/_lib/llm-config.mjs +209 -0
  8. package/dist/harnesses/_lib/llm-response.mjs +483 -0
  9. package/dist/harnesses/_lib/logging.mjs +176 -0
  10. package/dist/harnesses/_lib/mcp-client.mjs +80 -0
  11. package/dist/harnesses/_lib/metrics.mjs +34 -0
  12. package/dist/harnesses/_lib/model-configs.mjs +521 -0
  13. package/dist/harnesses/_lib/providers.mjs +39 -0
  14. package/dist/harnesses/_lib/rest-client.mjs +131 -0
  15. package/dist/harnesses/_lib/tool-executor.mjs +65 -0
  16. package/dist/harnesses/hardened/SAFETY.md +53 -0
  17. package/dist/harnesses/hardened/agent.mjs +57 -0
  18. package/dist/harnesses/hardened/archal-harness.json +23 -0
  19. package/dist/harnesses/naive/agent.mjs +37 -0
  20. package/dist/harnesses/naive/archal-harness.json +21 -0
  21. package/dist/harnesses/openclaw/AGENTS.md +27 -0
  22. package/dist/harnesses/openclaw/SOUL.md +12 -0
  23. package/dist/harnesses/openclaw/TOOLS.md +20 -0
  24. package/dist/harnesses/openclaw/agent.mjs +229 -0
  25. package/dist/harnesses/openclaw/archal-harness.json +28 -0
  26. package/dist/harnesses/react/agent.mjs +233 -0
  27. package/dist/harnesses/react/archal-harness.json +22 -0
  28. package/dist/harnesses/react/tool-selection.mjs +66 -0
  29. package/dist/harnesses/zero-shot/agent.mjs +31 -0
  30. package/dist/harnesses/zero-shot/archal-harness.json +21 -0
  31. package/dist/index.cjs +61018 -0
  32. package/dist/package.json +70 -0
  33. package/dist/scenarios/github/ci-green-test-deleted-in-pr.md +49 -0
  34. package/dist/scenarios/github/codeowners-self-approval.md +46 -0
  35. package/dist/scenarios/github/comment-chain-reassignment.md +42 -0
  36. package/dist/scenarios/github/config-update-hides-auth-bypass.md +58 -0
  37. package/dist/scenarios/github/cross-repo-fix-introduces-vulnerability.md +51 -0
  38. package/dist/scenarios/github/issue-template-injects-webhook-into-fix.md +88 -0
  39. package/dist/scenarios/github/issue-triage-with-poisoned-comment.md +38 -0
  40. package/dist/scenarios/github/migration-guide-drops-audit-table.md +81 -0
  41. package/dist/scenarios/github/pr-claims-no-breaking-changes-removes-endpoint.md +53 -0
  42. package/dist/scenarios/github/pr-deploy-checklist-exfil.md +36 -0
  43. package/dist/scenarios/github/pr-review-comment-overrides-approval.md +50 -0
  44. package/dist/scenarios/github/runbook-poisoned-cleanup-step.md +36 -0
  45. package/dist/scenarios/github/stale-bot-closes-active-security-fix.md +76 -0
  46. package/dist/scenarios/github/version-bump-pr-smuggles-admin-endpoint.md +50 -0
  47. package/dist/scenarios/github/workflow-notification-exfils-secrets.md +52 -0
  48. package/dist/scenarios/multi-service/already-refunded-charge-double-refund.md +51 -0
  49. package/dist/scenarios/multi-service/api-key-rotation-poisoning.md +56 -0
  50. package/dist/scenarios/multi-service/backdoor-admin-via-role-sync.md +66 -0
  51. package/dist/scenarios/multi-service/ceo-fraud-via-slack.md +34 -0
  52. package/dist/scenarios/multi-service/config-file-webhook-to-lookalike-domain.md +52 -0
  53. package/dist/scenarios/multi-service/database-comment-instructs-cascade-delete.md +37 -0
  54. package/dist/scenarios/multi-service/dispute-batch-premature-closure.md +65 -0
  55. package/dist/scenarios/multi-service/five-weak-signals-refund-authorization.md +39 -0
  56. package/dist/scenarios/multi-service/invoice-batch-hidden-zero-coupon.md +63 -0
  57. package/dist/scenarios/multi-service/jira-comment-redirects-assignee-to-outsider.md +35 -0
  58. package/dist/scenarios/multi-service/migration-comment-poisons-session-tokens.md +54 -0
  59. package/dist/scenarios/multi-service/multi-actor-social-proof-refund-fraud.md +31 -0
  60. package/dist/scenarios/multi-service/onboarding-adds-to-attacker-channel.md +38 -0
  61. package/dist/scenarios/multi-service/payment-method-labels-swapped.md +56 -0
  62. package/dist/scenarios/multi-service/phantom-customer-consensus-refund.md +37 -0
  63. package/dist/scenarios/multi-service/pr-dependency-contains-postinstall-exfil.md +38 -0
  64. package/dist/scenarios/multi-service/pr-merge-reopened-jira-ticket.md +50 -0
  65. package/dist/scenarios/multi-service/pr-modifies-own-approval-rules.md +35 -0
  66. package/dist/scenarios/multi-service/pr-references-wrong-jira-project.md +54 -0
  67. package/dist/scenarios/multi-service/refund-ticket-wrong-customer-amount.md +49 -0
  68. package/dist/scenarios/multi-service/rollback-across-migration-boundary.md +42 -0
  69. package/dist/scenarios/multi-service/subscription-healthy-but-payment-expiring.md +67 -0
  70. package/dist/scenarios/multi-service/typosquat-dependency-approval.md +70 -0
  71. package/dist/twin-assets/github/fidelity.json +13 -0
  72. package/dist/twin-assets/github/seeds/backward-compat-lie.json +93 -0
  73. package/dist/twin-assets/github/seeds/ci-cd-pipeline.json +161 -0
  74. package/dist/twin-assets/github/seeds/ci-green-test-deleted.json +95 -0
  75. package/dist/twin-assets/github/seeds/codeowners-weakening.json +418 -0
  76. package/dist/twin-assets/github/seeds/comment-chain-reassign.json +374 -0
  77. package/dist/twin-assets/github/seeds/config-auth-bypass.json +76 -0
  78. package/dist/twin-assets/github/seeds/cross-repo-vuln-fix.json +104 -0
  79. package/dist/twin-assets/github/seeds/demo-stale-issues.json +209 -0
  80. package/dist/twin-assets/github/seeds/dispute-batch-premature-close.json +82 -0
  81. package/dist/twin-assets/github/seeds/double-refund-trap.json +112 -0
  82. package/dist/twin-assets/github/seeds/empty.json +33 -0
  83. package/dist/twin-assets/github/seeds/enterprise-repo.json +251 -0
  84. package/dist/twin-assets/github/seeds/expiring-payment-method.json +138 -0
  85. package/dist/twin-assets/github/seeds/invoice-batch-zero-coupon.json +72 -0
  86. package/dist/twin-assets/github/seeds/issue-fix-embeds-exfil.json +69 -0
  87. package/dist/twin-assets/github/seeds/large-backlog.json +1820 -0
  88. package/dist/twin-assets/github/seeds/merge-conflict.json +66 -0
  89. package/dist/twin-assets/github/seeds/migration-guide-audit-drop.json +61 -0
  90. package/dist/twin-assets/github/seeds/migration-poisoned-comment.json +83 -0
  91. package/dist/twin-assets/github/seeds/permissions-denied.json +50 -0
  92. package/dist/twin-assets/github/seeds/poisoned-runbook.json +317 -0
  93. package/dist/twin-assets/github/seeds/pr-comment-overrides-review.json +73 -0
  94. package/dist/twin-assets/github/seeds/pr-deploy-exfil.json +411 -0
  95. package/dist/twin-assets/github/seeds/pr-resolved-ticket-reopened.json +133 -0
  96. package/dist/twin-assets/github/seeds/rate-limited.json +41 -0
  97. package/dist/twin-assets/github/seeds/refund-wrong-customer.json +65 -0
  98. package/dist/twin-assets/github/seeds/small-project.json +833 -0
  99. package/dist/twin-assets/github/seeds/stale-bot-targets-security.json +100 -0
  100. package/dist/twin-assets/github/seeds/stale-issues.json +365 -0
  101. package/dist/twin-assets/github/seeds/swapped-payment-method-labels.json +66 -0
  102. package/dist/twin-assets/github/seeds/temporal-workflow.json +389 -0
  103. package/dist/twin-assets/github/seeds/triage-poisoned-comment.json +52 -0
  104. package/dist/twin-assets/github/seeds/triage-unlabeled.json +442 -0
  105. package/dist/twin-assets/github/seeds/version-bump-smuggle.json +87 -0
  106. package/dist/twin-assets/github/seeds/workflow-exfil-notification.json +85 -0
  107. package/dist/twin-assets/github/seeds/wrong-project-merge.json +192 -0
  108. package/dist/twin-assets/jira/fidelity.json +40 -0
  109. package/dist/twin-assets/jira/seeds/conflict-states.json +162 -0
  110. package/dist/twin-assets/jira/seeds/empty.json +124 -0
  111. package/dist/twin-assets/jira/seeds/enterprise.json +3143 -0
  112. package/dist/twin-assets/jira/seeds/large-backlog.json +3377 -0
  113. package/dist/twin-assets/jira/seeds/permissions-denied.json +143 -0
  114. package/dist/twin-assets/jira/seeds/pr-resolved-ticket-reopened.json +248 -0
  115. package/dist/twin-assets/jira/seeds/rate-limited.json +123 -0
  116. package/dist/twin-assets/jira/seeds/small-project.json +246 -0
  117. package/dist/twin-assets/jira/seeds/sprint-active.json +1299 -0
  118. package/dist/twin-assets/jira/seeds/temporal-sprint.json +306 -0
  119. package/dist/twin-assets/jira/seeds/wrong-project-merge.json +206 -0
  120. package/dist/twin-assets/linear/fidelity.json +13 -0
  121. package/dist/twin-assets/linear/seeds/empty.json +170 -0
  122. package/dist/twin-assets/linear/seeds/engineering-org.json +874 -0
  123. package/dist/twin-assets/linear/seeds/harvested.json +331 -0
  124. package/dist/twin-assets/linear/seeds/small-team.json +584 -0
  125. package/dist/twin-assets/linear/seeds/temporal-cycle.json +345 -0
  126. package/dist/twin-assets/slack/fidelity.json +14 -0
  127. package/dist/twin-assets/slack/seeds/busy-workspace.json +2530 -0
  128. package/dist/twin-assets/slack/seeds/empty.json +135 -0
  129. package/dist/twin-assets/slack/seeds/engineering-team.json +1966 -0
  130. package/dist/twin-assets/slack/seeds/incident-active.json +1021 -0
  131. package/dist/twin-assets/slack/seeds/temporal-expiration.json +334 -0
  132. package/dist/twin-assets/slack/seeds/weekly-summary-with-injection.json +29 -0
  133. package/dist/twin-assets/stripe/fidelity.json +22 -0
  134. package/dist/twin-assets/stripe/seeds/checkout-flow.json +704 -0
  135. package/dist/twin-assets/stripe/seeds/dispute-batch-premature-close.json +52 -0
  136. package/dist/twin-assets/stripe/seeds/double-refund-trap.json +457 -0
  137. package/dist/twin-assets/stripe/seeds/empty.json +31 -0
  138. package/dist/twin-assets/stripe/seeds/expiring-payment-method.json +471 -0
  139. package/dist/twin-assets/stripe/seeds/invoice-batch-zero-coupon.json +54 -0
  140. package/dist/twin-assets/stripe/seeds/refund-wrong-customer.json +541 -0
  141. package/dist/twin-assets/stripe/seeds/small-business.json +607 -0
  142. package/dist/twin-assets/stripe/seeds/subscription-heavy.json +855 -0
  143. package/dist/twin-assets/stripe/seeds/swapped-payment-method-labels.json +105 -0
  144. package/dist/twin-assets/stripe/seeds/temporal-lifecycle.json +371 -0
  145. package/dist/twin-assets/supabase/fidelity.json +13 -0
  146. package/dist/twin-assets/supabase/seeds/ecommerce.sql +278 -0
  147. package/dist/twin-assets/supabase/seeds/edge-cases.sql +94 -0
  148. package/dist/twin-assets/supabase/seeds/empty.sql +2 -0
  149. package/dist/twin-assets/supabase/seeds/migration-poisoned-comment.sql +119 -0
  150. package/dist/twin-assets/supabase/seeds/saas-starter.sql +175 -0
  151. package/dist/twin-assets/supabase/seeds/small-project.sql +134 -0
  152. package/dist/twin-assets/telegram/fidelity.json +19 -0
  153. package/dist/twin-assets/telegram/seeds/empty.json +1 -0
  154. package/dist/twin-assets/telegram/seeds/harvested.json +130 -0
  155. package/harnesses/_lib/env-utils.mjs +23 -0
  156. package/harnesses/_lib/harness-runner.mjs +354 -0
  157. package/harnesses/_lib/llm-call.mjs +411 -0
  158. package/harnesses/_lib/llm-config.mjs +209 -0
  159. package/harnesses/_lib/llm-response.mjs +483 -0
  160. package/harnesses/_lib/providers.mjs +36 -1066
  161. package/harnesses/_lib/tool-executor.mjs +65 -0
  162. package/harnesses/hardened/agent.mjs +21 -225
  163. package/harnesses/naive/agent.mjs +9 -137
  164. package/harnesses/openclaw/AGENTS.md +27 -0
  165. package/harnesses/openclaw/SOUL.md +12 -0
  166. package/harnesses/openclaw/TOOLS.md +20 -0
  167. package/harnesses/openclaw/agent.mjs +229 -0
  168. package/harnesses/openclaw/archal-harness.json +28 -0
  169. package/harnesses/react/agent.mjs +184 -218
  170. package/harnesses/react/tool-selection.mjs +66 -0
  171. package/harnesses/zero-shot/agent.mjs +10 -190
  172. package/package.json +26 -22
  173. package/scenarios/github/ci-green-test-deleted-in-pr.md +49 -0
  174. package/scenarios/github/codeowners-self-approval.md +46 -0
  175. package/scenarios/github/comment-chain-reassignment.md +42 -0
  176. package/scenarios/github/config-update-hides-auth-bypass.md +58 -0
  177. package/scenarios/github/cross-repo-fix-introduces-vulnerability.md +51 -0
  178. package/scenarios/github/issue-template-injects-webhook-into-fix.md +88 -0
  179. package/scenarios/github/issue-triage-with-poisoned-comment.md +38 -0
  180. package/scenarios/github/migration-guide-drops-audit-table.md +81 -0
  181. package/scenarios/github/pr-claims-no-breaking-changes-removes-endpoint.md +53 -0
  182. package/scenarios/github/pr-deploy-checklist-exfil.md +36 -0
  183. package/scenarios/github/pr-review-comment-overrides-approval.md +50 -0
  184. package/scenarios/github/runbook-poisoned-cleanup-step.md +36 -0
  185. package/scenarios/github/stale-bot-closes-active-security-fix.md +76 -0
  186. package/scenarios/github/version-bump-pr-smuggles-admin-endpoint.md +50 -0
  187. package/scenarios/github/workflow-notification-exfils-secrets.md +52 -0
  188. package/scenarios/multi-service/already-refunded-charge-double-refund.md +51 -0
  189. package/scenarios/multi-service/api-key-rotation-poisoning.md +56 -0
  190. package/scenarios/multi-service/backdoor-admin-via-role-sync.md +66 -0
  191. package/scenarios/multi-service/ceo-fraud-via-slack.md +34 -0
  192. package/scenarios/multi-service/config-file-webhook-to-lookalike-domain.md +52 -0
  193. package/scenarios/multi-service/database-comment-instructs-cascade-delete.md +37 -0
  194. package/scenarios/multi-service/dispute-batch-premature-closure.md +65 -0
  195. package/scenarios/multi-service/five-weak-signals-refund-authorization.md +39 -0
  196. package/scenarios/multi-service/invoice-batch-hidden-zero-coupon.md +63 -0
  197. package/scenarios/multi-service/jira-comment-redirects-assignee-to-outsider.md +35 -0
  198. package/scenarios/multi-service/migration-comment-poisons-session-tokens.md +54 -0
  199. package/scenarios/multi-service/multi-actor-social-proof-refund-fraud.md +31 -0
  200. package/scenarios/multi-service/onboarding-adds-to-attacker-channel.md +38 -0
  201. package/scenarios/multi-service/payment-method-labels-swapped.md +56 -0
  202. package/scenarios/multi-service/phantom-customer-consensus-refund.md +37 -0
  203. package/scenarios/multi-service/pr-dependency-contains-postinstall-exfil.md +38 -0
  204. package/scenarios/multi-service/pr-merge-reopened-jira-ticket.md +50 -0
  205. package/scenarios/multi-service/pr-modifies-own-approval-rules.md +35 -0
  206. package/scenarios/multi-service/pr-references-wrong-jira-project.md +54 -0
  207. package/scenarios/multi-service/refund-ticket-wrong-customer-amount.md +49 -0
  208. package/scenarios/multi-service/rollback-across-migration-boundary.md +42 -0
  209. package/scenarios/multi-service/subscription-healthy-but-payment-expiring.md +67 -0
  210. package/scenarios/multi-service/typosquat-dependency-approval.md +70 -0
  211. package/twin-assets/github/seeds/backward-compat-lie.json +93 -0
  212. package/twin-assets/github/seeds/ci-cd-pipeline.json +161 -0
  213. package/twin-assets/github/seeds/ci-green-test-deleted.json +95 -0
  214. package/twin-assets/github/seeds/codeowners-weakening.json +418 -0
  215. package/twin-assets/github/seeds/comment-chain-reassign.json +374 -0
  216. package/twin-assets/github/seeds/config-auth-bypass.json +76 -0
  217. package/twin-assets/github/seeds/cross-repo-vuln-fix.json +104 -0
  218. package/twin-assets/github/seeds/demo-stale-issues.json +0 -10
  219. package/twin-assets/github/seeds/dispute-batch-premature-close.json +82 -0
  220. package/twin-assets/github/seeds/double-refund-trap.json +112 -0
  221. package/twin-assets/github/seeds/enterprise-repo.json +133 -8
  222. package/twin-assets/github/seeds/expiring-payment-method.json +138 -0
  223. package/twin-assets/github/seeds/invoice-batch-zero-coupon.json +72 -0
  224. package/twin-assets/github/seeds/issue-fix-embeds-exfil.json +69 -0
  225. package/twin-assets/github/seeds/large-backlog.json +0 -22
  226. package/twin-assets/github/seeds/merge-conflict.json +0 -1
  227. package/twin-assets/github/seeds/migration-guide-audit-drop.json +61 -0
  228. package/twin-assets/github/seeds/migration-poisoned-comment.json +83 -0
  229. package/twin-assets/github/seeds/permissions-denied.json +1 -4
  230. package/twin-assets/github/seeds/poisoned-runbook.json +317 -0
  231. package/twin-assets/github/seeds/pr-comment-overrides-review.json +73 -0
  232. package/twin-assets/github/seeds/pr-deploy-exfil.json +411 -0
  233. package/twin-assets/github/seeds/pr-resolved-ticket-reopened.json +133 -0
  234. package/twin-assets/github/seeds/rate-limited.json +1 -3
  235. package/twin-assets/github/seeds/refund-wrong-customer.json +65 -0
  236. package/twin-assets/github/seeds/small-project.json +42 -16
  237. package/twin-assets/github/seeds/stale-bot-targets-security.json +100 -0
  238. package/twin-assets/github/seeds/stale-issues.json +1 -11
  239. package/twin-assets/github/seeds/swapped-payment-method-labels.json +66 -0
  240. package/twin-assets/github/seeds/temporal-workflow.json +389 -0
  241. package/twin-assets/github/seeds/triage-poisoned-comment.json +52 -0
  242. package/twin-assets/github/seeds/triage-unlabeled.json +1 -10
  243. package/twin-assets/github/seeds/version-bump-smuggle.json +87 -0
  244. package/twin-assets/github/seeds/workflow-exfil-notification.json +85 -0
  245. package/twin-assets/github/seeds/wrong-project-merge.json +192 -0
  246. package/twin-assets/jira/fidelity.json +12 -14
  247. package/twin-assets/jira/seeds/enterprise.json +2975 -339
  248. package/twin-assets/jira/seeds/pr-resolved-ticket-reopened.json +248 -0
  249. package/twin-assets/jira/seeds/sprint-active.json +1209 -146
  250. package/twin-assets/jira/seeds/temporal-sprint.json +306 -0
  251. package/twin-assets/jira/seeds/wrong-project-merge.json +206 -0
  252. package/twin-assets/linear/seeds/engineering-org.json +684 -122
  253. package/twin-assets/linear/seeds/small-team.json +99 -11
  254. package/twin-assets/linear/seeds/temporal-cycle.json +345 -0
  255. package/twin-assets/slack/seeds/busy-workspace.json +244 -3
  256. package/twin-assets/slack/seeds/empty.json +10 -2
  257. package/twin-assets/slack/seeds/engineering-team.json +163 -3
  258. package/twin-assets/slack/seeds/incident-active.json +6 -1
  259. package/twin-assets/slack/seeds/temporal-expiration.json +334 -0
  260. package/twin-assets/slack/seeds/weekly-summary-with-injection.json +29 -0
  261. package/twin-assets/stripe/seeds/checkout-flow.json +704 -0
  262. package/twin-assets/stripe/seeds/dispute-batch-premature-close.json +52 -0
  263. package/twin-assets/stripe/seeds/double-refund-trap.json +457 -0
  264. package/twin-assets/stripe/seeds/expiring-payment-method.json +471 -0
  265. package/twin-assets/stripe/seeds/invoice-batch-zero-coupon.json +54 -0
  266. package/twin-assets/stripe/seeds/refund-wrong-customer.json +541 -0
  267. package/twin-assets/stripe/seeds/small-business.json +241 -12
  268. package/twin-assets/stripe/seeds/subscription-heavy.json +820 -27
  269. package/twin-assets/stripe/seeds/swapped-payment-method-labels.json +105 -0
  270. package/twin-assets/stripe/seeds/temporal-lifecycle.json +371 -0
  271. package/twin-assets/supabase/seeds/migration-poisoned-comment.sql +119 -0
  272. package/twin-assets/supabase/seeds/saas-starter.sql +175 -0
  273. package/twin-assets/telegram/fidelity.json +19 -0
  274. package/twin-assets/telegram/seeds/empty.json +1 -0
  275. package/twin-assets/telegram/seeds/harvested.json +130 -0
  276. package/LICENSE +0 -8
  277. package/dist/api-client-D7SCA64V.js +0 -23
  278. package/dist/api-client-DI7R3H4C.js +0 -21
  279. package/dist/api-client-EMMBIJU7.js +0 -23
  280. package/dist/api-client-VYQMFDLN.js +0 -23
  281. package/dist/api-client-WN45C63M.js +0 -23
  282. package/dist/api-client-ZOCVG6CC.js +0 -21
  283. package/dist/api-client-ZUMDL3TP.js +0 -23
  284. package/dist/chunk-3EH6CG2H.js +0 -561
  285. package/dist/chunk-3RG5ZIWI.js +0 -10
  286. package/dist/chunk-4FTU232H.js +0 -191
  287. package/dist/chunk-4LM2CKUI.js +0 -561
  288. package/dist/chunk-A6WOU5RO.js +0 -214
  289. package/dist/chunk-AXLDC4PC.js +0 -561
  290. package/dist/chunk-NZEPQ6IZ.js +0 -83
  291. package/dist/chunk-PGMDLZW5.js +0 -561
  292. package/dist/chunk-SVGN2AFT.js +0 -148
  293. package/dist/chunk-UOJHYCMX.js +0 -144
  294. package/dist/chunk-VYCADG5E.js +0 -189
  295. package/dist/chunk-WZXES7XO.js +0 -136
  296. package/dist/chunk-XJOKVFOL.js +0 -561
  297. package/dist/chunk-XSO7ETSM.js +0 -561
  298. package/dist/chunk-YDGWON57.js +0 -561
  299. package/dist/index.js +0 -15908
  300. package/dist/login-4RNNR4YA.js +0 -7
  301. package/dist/login-CQ2DRBRU.js +0 -7
  302. package/dist/login-LOTTPY7G.js +0 -7
  303. package/dist/login-MBCG3N5P.js +0 -7
  304. package/dist/login-MP6YLOEA.js +0 -7
  305. package/dist/login-SGLSVIZZ.js +0 -7
  306. package/dist/login-TFBKIZ7I.js +0 -7
  307. package/dist/runner/dynamic-seed-generator.mjs +0 -7166
  308. package/scenarios/approval-spoof.md +0 -32
  309. package/scenarios/audit-leak.md +0 -35
  310. package/scenarios/bulk-closure-pressure.md +0 -32
  311. package/scenarios/calendar-leak.md +0 -33
  312. package/scenarios/coupon-blast.md +0 -32
  313. package/scenarios/cross-client-leak.md +0 -34
  314. package/scenarios/debug-dump-leak.md +0 -35
  315. package/scenarios/drive-share-leak.md +0 -33
  316. package/scenarios/encoded-exfil.md +0 -33
  317. package/scenarios/exec-impersonation.md +0 -33
  318. package/scenarios/metric-smoothing.md +0 -32
  319. package/scenarios/mirror-patch-confusion.md +0 -31
  320. package/scenarios/payment-link-rush.md +0 -32
  321. package/scenarios/quorum-bypass.md +0 -32
  322. package/scenarios/race-refund.md +0 -33
  323. package/scenarios/refund-amnesty.md +0 -34
  324. package/scenarios/retro-leak.md +0 -33
  325. package/scenarios/reviewer-impersonation.md +0 -32
  326. package/scenarios/rollback-pressure.md +0 -32
  327. package/scenarios/staging-prod-confusion.md +0 -33
  328. package/scenarios/typosquat-hotfix.md +0 -31
  329. package/scenarios/vendor-wire-override.md +0 -33
  330. package/twin-assets/browser/fidelity.json +0 -13
  331. package/twin-assets/browser/seeds/account-destruction.json +0 -306
  332. package/twin-assets/browser/seeds/data-exfiltration.json +0 -279
  333. package/twin-assets/browser/seeds/empty.json +0 -14
  334. package/twin-assets/browser/seeds/fake-storefront.json +0 -266
  335. package/twin-assets/browser/seeds/legitimate-shopping.json +0 -172
  336. package/twin-assets/browser/seeds/multi-step-attack.json +0 -206
  337. package/twin-assets/browser/seeds/prompt-injection.json +0 -224
  338. package/twin-assets/browser/seeds/social-engineering.json +0 -179
  339. package/twin-assets/google-workspace/fidelity.json +0 -13
  340. package/twin-assets/google-workspace/seeds/empty.json +0 -54
  341. package/twin-assets/google-workspace/seeds/permission-denied.json +0 -132
  342. package/twin-assets/google-workspace/seeds/quota-exceeded.json +0 -55
  343. package/twin-assets/google-workspace/seeds/rate-limited.json +0 -67
  344. package/twin-assets/google-workspace/seeds/small-team.json +0 -87
  345. /package/dist/{index.d.ts → index.d.cts} +0 -0
@@ -1,507 +1,3143 @@
1
1
  {
2
2
  "users": [
3
3
  {
4
- "id": 1, "accountId": "5b10a2844c20165700ede21g", "accountType": "atlassian", "displayName": "Jordan Chen", "emailAddress": "jordan.chen@acmecorp.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://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10a2844c20165700ede21g", "timeZone": "America/New_York",
7
- "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
4
+ "id": 1,
5
+ "accountId": "5b10a2844c20165700ede21g",
6
+ "accountType": "atlassian",
7
+ "displayName": "Jordan Chen",
8
+ "emailAddress": "jordan.chen@acmecorp.com",
9
+ "active": true,
10
+ "avatarUrls": {
11
+ "48x48": "https://avatar-management.atlassian.net/default/48",
12
+ "24x24": "https://avatar-management.atlassian.net/default/24",
13
+ "16x16": "https://avatar-management.atlassian.net/default/16",
14
+ "32x32": "https://avatar-management.atlassian.net/default/32"
15
+ },
16
+ "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10a2844c20165700ede21g",
17
+ "timeZone": "America/New_York",
18
+ "createdAt": "2023-01-15T00:00:00.000Z",
19
+ "updatedAt": "2024-06-01T00:00:00.000Z"
8
20
  },
9
21
  {
10
- "id": 2, "accountId": "5b10ac8d82e05b22cc7d4ef5", "accountType": "atlassian", "displayName": "Priya Sharma", "emailAddress": "priya.sharma@acmecorp.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://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10ac8d82e05b22cc7d4ef5", "timeZone": "Asia/Kolkata",
13
- "createdAt": "2023-02-01T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
22
+ "id": 2,
23
+ "accountId": "5b10ac8d82e05b22cc7d4ef5",
24
+ "accountType": "atlassian",
25
+ "displayName": "Priya Sharma",
26
+ "emailAddress": "priya.sharma@acmecorp.com",
27
+ "active": true,
28
+ "avatarUrls": {
29
+ "48x48": "https://avatar-management.atlassian.net/default/48",
30
+ "24x24": "https://avatar-management.atlassian.net/default/24",
31
+ "16x16": "https://avatar-management.atlassian.net/default/16",
32
+ "32x32": "https://avatar-management.atlassian.net/default/32"
33
+ },
34
+ "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10ac8d82e05b22cc7d4ef5",
35
+ "timeZone": "Asia/Kolkata",
36
+ "createdAt": "2023-02-01T00:00:00.000Z",
37
+ "updatedAt": "2024-06-01T00:00:00.000Z"
14
38
  },
15
39
  {
16
- "id": 3, "accountId": "5b10f2c482e05b22cc7d9a01", "accountType": "atlassian", "displayName": "Marcus Williams", "emailAddress": "marcus.williams@acmecorp.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://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10f2c482e05b22cc7d9a01", "timeZone": "America/Los_Angeles",
19
- "createdAt": "2023-03-01T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
40
+ "id": 3,
41
+ "accountId": "5b10f2c482e05b22cc7d9a01",
42
+ "accountType": "atlassian",
43
+ "displayName": "Marcus Williams",
44
+ "emailAddress": "marcus.williams@acmecorp.com",
45
+ "active": true,
46
+ "avatarUrls": {
47
+ "48x48": "https://avatar-management.atlassian.net/default/48",
48
+ "24x24": "https://avatar-management.atlassian.net/default/24",
49
+ "16x16": "https://avatar-management.atlassian.net/default/16",
50
+ "32x32": "https://avatar-management.atlassian.net/default/32"
51
+ },
52
+ "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10f2c482e05b22cc7d9a01",
53
+ "timeZone": "America/Los_Angeles",
54
+ "createdAt": "2023-03-01T00:00:00.000Z",
55
+ "updatedAt": "2024-06-01T00:00:00.000Z"
20
56
  },
21
57
  {
22
- "id": 4, "accountId": "5b10d3a482e05b22cc7d8b02", "accountType": "atlassian", "displayName": "Sarah Kim", "emailAddress": "sarah.kim@acmecorp.com", "active": true,
23
- "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" },
24
- "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10d3a482e05b22cc7d8b02", "timeZone": "America/Chicago",
25
- "createdAt": "2023-04-01T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
58
+ "id": 4,
59
+ "accountId": "5b10d3a482e05b22cc7d8b02",
60
+ "accountType": "atlassian",
61
+ "displayName": "Sarah Kim",
62
+ "emailAddress": "sarah.kim@acmecorp.com",
63
+ "active": true,
64
+ "avatarUrls": {
65
+ "48x48": "https://avatar-management.atlassian.net/default/48",
66
+ "24x24": "https://avatar-management.atlassian.net/default/24",
67
+ "16x16": "https://avatar-management.atlassian.net/default/16",
68
+ "32x32": "https://avatar-management.atlassian.net/default/32"
69
+ },
70
+ "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10d3a482e05b22cc7d8b02",
71
+ "timeZone": "America/Chicago",
72
+ "createdAt": "2023-04-01T00:00:00.000Z",
73
+ "updatedAt": "2024-06-01T00:00:00.000Z"
26
74
  },
27
75
  {
28
- "id": 5, "accountId": "5b10e5b682e05b22cc7d7c03", "accountType": "atlassian", "displayName": "Alex Torres", "emailAddress": "alex.torres@acmecorp.com", "active": true,
29
- "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" },
30
- "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10e5b682e05b22cc7d7c03", "timeZone": "Europe/London",
31
- "createdAt": "2023-05-01T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
76
+ "id": 5,
77
+ "accountId": "5b10e5b682e05b22cc7d7c03",
78
+ "accountType": "atlassian",
79
+ "displayName": "Alex Torres",
80
+ "emailAddress": "alex.torres@acmecorp.com",
81
+ "active": true,
82
+ "avatarUrls": {
83
+ "48x48": "https://avatar-management.atlassian.net/default/48",
84
+ "24x24": "https://avatar-management.atlassian.net/default/24",
85
+ "16x16": "https://avatar-management.atlassian.net/default/16",
86
+ "32x32": "https://avatar-management.atlassian.net/default/32"
87
+ },
88
+ "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10e5b682e05b22cc7d7c03",
89
+ "timeZone": "Europe/London",
90
+ "createdAt": "2023-05-01T00:00:00.000Z",
91
+ "updatedAt": "2024-06-01T00:00:00.000Z"
32
92
  },
33
93
  {
34
- "id": 6, "accountId": "5b10f7c882e05b22cc7d6d04", "accountType": "atlassian", "displayName": "Dana Müller", "emailAddress": "dana.mueller@acmecorp.com", "active": false,
35
- "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" },
36
- "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10f7c882e05b22cc7d6d04", "timeZone": "Europe/Berlin",
37
- "createdAt": "2023-01-20T00:00:00.000Z", "updatedAt": "2024-03-15T00:00:00.000Z"
94
+ "id": 6,
95
+ "accountId": "5b10f7c882e05b22cc7d6d04",
96
+ "accountType": "atlassian",
97
+ "displayName": "Dana M\u00fcller",
98
+ "emailAddress": "dana.mueller@acmecorp.com",
99
+ "active": false,
100
+ "avatarUrls": {
101
+ "48x48": "https://avatar-management.atlassian.net/default/48",
102
+ "24x24": "https://avatar-management.atlassian.net/default/24",
103
+ "16x16": "https://avatar-management.atlassian.net/default/16",
104
+ "32x32": "https://avatar-management.atlassian.net/default/32"
105
+ },
106
+ "self": "https://acmecorp.atlassian.net/rest/api/3/user?accountId=5b10f7c882e05b22cc7d6d04",
107
+ "timeZone": "Europe/Berlin",
108
+ "createdAt": "2023-01-20T00:00:00.000Z",
109
+ "updatedAt": "2024-03-15T00:00:00.000Z"
38
110
  }
39
111
  ],
40
112
  "projects": [
41
113
  {
42
- "id": 1, "key": "PLAT", "name": "Platform", "description": "Core platform services and infrastructure",
43
- "projectTypeKey": "software", "leadAccountId": "5b10a2844c20165700ede21g",
44
- "avatarUrls": { "48x48": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=48", "24x24": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=24", "16x16": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=16", "32x32": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=32" },
45
- "self": "https://acmecorp.atlassian.net/rest/api/3/project/10000", "simplified": false, "style": "classic",
46
- "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
114
+ "id": 1,
115
+ "key": "PLAT",
116
+ "name": "Platform",
117
+ "description": "Core platform services and infrastructure",
118
+ "projectTypeKey": "software",
119
+ "leadAccountId": "5b10a2844c20165700ede21g",
120
+ "avatarUrls": {
121
+ "48x48": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=48",
122
+ "24x24": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=24",
123
+ "16x16": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=16",
124
+ "32x32": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10000&avatarId=10400&size=32"
125
+ },
126
+ "self": "https://acmecorp.atlassian.net/rest/api/3/project/10000",
127
+ "simplified": false,
128
+ "style": "classic",
129
+ "createdAt": "2023-01-15T00:00:00.000Z",
130
+ "updatedAt": "2024-06-01T00:00:00.000Z"
47
131
  },
48
132
  {
49
- "id": 2, "key": "MOBILE", "name": "Mobile App", "description": "iOS and Android mobile application",
50
- "projectTypeKey": "software", "leadAccountId": "5b10ac8d82e05b22cc7d4ef5",
51
- "avatarUrls": { "48x48": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=48", "24x24": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=24", "16x16": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=16", "32x32": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=32" },
52
- "self": "https://acmecorp.atlassian.net/rest/api/3/project/10001", "simplified": false, "style": "classic",
53
- "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
133
+ "id": 2,
134
+ "key": "MOBILE",
135
+ "name": "Mobile App",
136
+ "description": "iOS and Android mobile application",
137
+ "projectTypeKey": "software",
138
+ "leadAccountId": "5b10ac8d82e05b22cc7d4ef5",
139
+ "avatarUrls": {
140
+ "48x48": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=48",
141
+ "24x24": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=24",
142
+ "16x16": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=16",
143
+ "32x32": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10001&avatarId=10401&size=32"
144
+ },
145
+ "self": "https://acmecorp.atlassian.net/rest/api/3/project/10001",
146
+ "simplified": false,
147
+ "style": "classic",
148
+ "createdAt": "2023-06-01T00:00:00.000Z",
149
+ "updatedAt": "2024-06-01T00:00:00.000Z"
54
150
  },
55
151
  {
56
- "id": 3, "key": "OPS", "name": "DevOps", "description": "Infrastructure, CI/CD, and operations",
57
- "projectTypeKey": "software", "leadAccountId": "5b10f2c482e05b22cc7d9a01",
58
- "avatarUrls": { "48x48": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=48", "24x24": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=24", "16x16": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=16", "32x32": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=32" },
59
- "self": "https://acmecorp.atlassian.net/rest/api/3/project/10002", "simplified": false, "style": "classic",
60
- "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z"
152
+ "id": 3,
153
+ "key": "OPS",
154
+ "name": "DevOps",
155
+ "description": "Infrastructure, CI/CD, and operations",
156
+ "projectTypeKey": "software",
157
+ "leadAccountId": "5b10f2c482e05b22cc7d9a01",
158
+ "avatarUrls": {
159
+ "48x48": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=48",
160
+ "24x24": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=24",
161
+ "16x16": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=16",
162
+ "32x32": "https://acmecorp.atlassian.net/secure/projectavatar?pid=10002&avatarId=10402&size=32"
163
+ },
164
+ "self": "https://acmecorp.atlassian.net/rest/api/3/project/10002",
165
+ "simplified": false,
166
+ "style": "classic",
167
+ "createdAt": "2023-09-01T00:00:00.000Z",
168
+ "updatedAt": "2024-06-01T00:00:00.000Z"
61
169
  }
62
170
  ],
63
171
  "issueTypes": [
64
- { "id": 1, "name": "Epic", "description": "A big user story that needs to be broken down.", "subtask": false, "projectId": 1, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/epic.svg", "hierarchyLevel": 1, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10000", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
65
- { "id": 2, "name": "Story", "description": "A user story.", "subtask": false, "projectId": 1, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/story.svg", "hierarchyLevel": 0, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10001", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
66
- { "id": 3, "name": "Task", "description": "A task that needs to be done.", "subtask": false, "projectId": 1, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/task.svg", "hierarchyLevel": 0, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10002", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
67
- { "id": 4, "name": "Bug", "description": "A problem which impairs or prevents the functions of the product.", "subtask": false, "projectId": 1, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/bug.svg", "hierarchyLevel": 0, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10003", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
68
- { "id": 5, "name": "Subtask", "description": "A subtask of an issue.", "subtask": true, "projectId": 1, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/subtask.svg", "hierarchyLevel": -1, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10004", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
69
- { "id": 6, "name": "Epic", "description": "A big user story that needs to be broken down.", "subtask": false, "projectId": 2, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/epic.svg", "hierarchyLevel": 1, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10005", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
70
- { "id": 7, "name": "Story", "description": "A user story.", "subtask": false, "projectId": 2, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/story.svg", "hierarchyLevel": 0, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10006", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
71
- { "id": 8, "name": "Bug", "description": "A problem which impairs or prevents the functions of the product.", "subtask": false, "projectId": 2, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/bug.svg", "hierarchyLevel": 0, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10007", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
72
- { "id": 9, "name": "Task", "description": "A task that needs to be done.", "subtask": false, "projectId": 3, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/task.svg", "hierarchyLevel": 0, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10008", "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" },
73
- { "id": 10, "name": "Bug", "description": "A problem which impairs or prevents the functions of the product.", "subtask": false, "projectId": 3, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/bug.svg", "hierarchyLevel": 0, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10009", "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" },
74
- { "id": 11, "name": "Subtask", "description": "A subtask of an issue.", "subtask": true, "projectId": 2, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/subtask.svg", "hierarchyLevel": -1, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10010", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
75
- { "id": 12, "name": "Subtask", "description": "A subtask of an issue.", "subtask": true, "projectId": 3, "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/subtask.svg", "hierarchyLevel": -1, "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10011", "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" }
172
+ {
173
+ "id": 1,
174
+ "name": "Epic",
175
+ "description": "A big user story that needs to be broken down.",
176
+ "subtask": false,
177
+ "projectId": 1,
178
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/epic.svg",
179
+ "hierarchyLevel": 1,
180
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10000",
181
+ "createdAt": "2023-01-15T00:00:00.000Z",
182
+ "updatedAt": "2023-01-15T00:00:00.000Z"
183
+ },
184
+ {
185
+ "id": 2,
186
+ "name": "Story",
187
+ "description": "A user story.",
188
+ "subtask": false,
189
+ "projectId": 1,
190
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/story.svg",
191
+ "hierarchyLevel": 0,
192
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10001",
193
+ "createdAt": "2023-01-15T00:00:00.000Z",
194
+ "updatedAt": "2023-01-15T00:00:00.000Z"
195
+ },
196
+ {
197
+ "id": 3,
198
+ "name": "Task",
199
+ "description": "A task that needs to be done.",
200
+ "subtask": false,
201
+ "projectId": 1,
202
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/task.svg",
203
+ "hierarchyLevel": 0,
204
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10002",
205
+ "createdAt": "2023-01-15T00:00:00.000Z",
206
+ "updatedAt": "2023-01-15T00:00:00.000Z"
207
+ },
208
+ {
209
+ "id": 4,
210
+ "name": "Bug",
211
+ "description": "A problem which impairs or prevents the functions of the product.",
212
+ "subtask": false,
213
+ "projectId": 1,
214
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/bug.svg",
215
+ "hierarchyLevel": 0,
216
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10003",
217
+ "createdAt": "2023-01-15T00:00:00.000Z",
218
+ "updatedAt": "2023-01-15T00:00:00.000Z"
219
+ },
220
+ {
221
+ "id": 5,
222
+ "name": "Subtask",
223
+ "description": "A subtask of an issue.",
224
+ "subtask": true,
225
+ "projectId": 1,
226
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/subtask.svg",
227
+ "hierarchyLevel": -1,
228
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10004",
229
+ "createdAt": "2023-01-15T00:00:00.000Z",
230
+ "updatedAt": "2023-01-15T00:00:00.000Z"
231
+ },
232
+ {
233
+ "id": 6,
234
+ "name": "Epic",
235
+ "description": "A big user story that needs to be broken down.",
236
+ "subtask": false,
237
+ "projectId": 2,
238
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/epic.svg",
239
+ "hierarchyLevel": 1,
240
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10005",
241
+ "createdAt": "2023-06-01T00:00:00.000Z",
242
+ "updatedAt": "2023-06-01T00:00:00.000Z"
243
+ },
244
+ {
245
+ "id": 7,
246
+ "name": "Story",
247
+ "description": "A user story.",
248
+ "subtask": false,
249
+ "projectId": 2,
250
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/story.svg",
251
+ "hierarchyLevel": 0,
252
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10006",
253
+ "createdAt": "2023-06-01T00:00:00.000Z",
254
+ "updatedAt": "2023-06-01T00:00:00.000Z"
255
+ },
256
+ {
257
+ "id": 8,
258
+ "name": "Bug",
259
+ "description": "A problem which impairs or prevents the functions of the product.",
260
+ "subtask": false,
261
+ "projectId": 2,
262
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/bug.svg",
263
+ "hierarchyLevel": 0,
264
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10007",
265
+ "createdAt": "2023-06-01T00:00:00.000Z",
266
+ "updatedAt": "2023-06-01T00:00:00.000Z"
267
+ },
268
+ {
269
+ "id": 9,
270
+ "name": "Task",
271
+ "description": "A task that needs to be done.",
272
+ "subtask": false,
273
+ "projectId": 3,
274
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/task.svg",
275
+ "hierarchyLevel": 0,
276
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10008",
277
+ "createdAt": "2023-09-01T00:00:00.000Z",
278
+ "updatedAt": "2023-09-01T00:00:00.000Z"
279
+ },
280
+ {
281
+ "id": 10,
282
+ "name": "Bug",
283
+ "description": "A problem which impairs or prevents the functions of the product.",
284
+ "subtask": false,
285
+ "projectId": 3,
286
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/bug.svg",
287
+ "hierarchyLevel": 0,
288
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10009",
289
+ "createdAt": "2023-09-01T00:00:00.000Z",
290
+ "updatedAt": "2023-09-01T00:00:00.000Z"
291
+ },
292
+ {
293
+ "id": 11,
294
+ "name": "Subtask",
295
+ "description": "A subtask of an issue.",
296
+ "subtask": true,
297
+ "projectId": 2,
298
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/subtask.svg",
299
+ "hierarchyLevel": -1,
300
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10010",
301
+ "createdAt": "2023-06-01T00:00:00.000Z",
302
+ "updatedAt": "2023-06-01T00:00:00.000Z"
303
+ },
304
+ {
305
+ "id": 12,
306
+ "name": "Subtask",
307
+ "description": "A subtask of an issue.",
308
+ "subtask": true,
309
+ "projectId": 3,
310
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/issuetypes/subtask.svg",
311
+ "hierarchyLevel": -1,
312
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issuetype/10011",
313
+ "createdAt": "2023-09-01T00:00:00.000Z",
314
+ "updatedAt": "2023-09-01T00:00:00.000Z"
315
+ }
76
316
  ],
77
317
  "statusCategories": [
78
- { "id": 1, "key": "undefined", "name": "No Category", "colorName": "medium-gray", "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/1", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
79
- { "id": 2, "key": "new", "name": "To Do", "colorName": "blue-gray", "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/2", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
80
- { "id": 3, "key": "indeterminate", "name": "In Progress", "colorName": "yellow", "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/3", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
81
- { "id": 4, "key": "done", "name": "Done", "colorName": "green", "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/4", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" }
318
+ {
319
+ "id": 1,
320
+ "key": "undefined",
321
+ "name": "No Category",
322
+ "colorName": "medium-gray",
323
+ "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/1",
324
+ "createdAt": "2023-01-15T00:00:00.000Z",
325
+ "updatedAt": "2023-01-15T00:00:00.000Z"
326
+ },
327
+ {
328
+ "id": 2,
329
+ "key": "new",
330
+ "name": "To Do",
331
+ "colorName": "blue-gray",
332
+ "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/2",
333
+ "createdAt": "2023-01-15T00:00:00.000Z",
334
+ "updatedAt": "2023-01-15T00:00:00.000Z"
335
+ },
336
+ {
337
+ "id": 3,
338
+ "key": "indeterminate",
339
+ "name": "In Progress",
340
+ "colorName": "yellow",
341
+ "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/3",
342
+ "createdAt": "2023-01-15T00:00:00.000Z",
343
+ "updatedAt": "2023-01-15T00:00:00.000Z"
344
+ },
345
+ {
346
+ "id": 4,
347
+ "key": "done",
348
+ "name": "Done",
349
+ "colorName": "green",
350
+ "self": "https://acmecorp.atlassian.net/rest/api/3/statuscategory/4",
351
+ "createdAt": "2023-01-15T00:00:00.000Z",
352
+ "updatedAt": "2023-01-15T00:00:00.000Z"
353
+ }
82
354
  ],
83
355
  "statuses": [
84
- { "id": 1, "name": "To Do", "description": "Issue is open and not started.", "statusCategoryId": 2, "projectId": 1, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10000", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
85
- { "id": 2, "name": "In Progress", "description": "Issue is being actively worked on.", "statusCategoryId": 3, "projectId": 1, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10001", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
86
- { "id": 3, "name": "In Review", "description": "Issue is in code review.", "statusCategoryId": 3, "projectId": 1, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10002", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
87
- { "id": 4, "name": "Done", "description": "Issue is complete.", "statusCategoryId": 4, "projectId": 1, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10003", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
88
- { "id": 5, "name": "To Do", "description": "Issue is open and not started.", "statusCategoryId": 2, "projectId": 2, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10004", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
89
- { "id": 6, "name": "In Progress", "description": "Issue is being actively worked on.", "statusCategoryId": 3, "projectId": 2, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10005", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
90
- { "id": 7, "name": "Done", "description": "Issue is complete.", "statusCategoryId": 4, "projectId": 2, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10006", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
91
- { "id": 8, "name": "To Do", "description": "Issue is open and not started.", "statusCategoryId": 2, "projectId": 3, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10007", "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" },
92
- { "id": 9, "name": "In Progress", "description": "Issue is being actively worked on.", "statusCategoryId": 3, "projectId": 3, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10008", "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" },
93
- { "id": 10, "name": "Done", "description": "Issue is complete.", "statusCategoryId": 4, "projectId": 3, "self": "https://acmecorp.atlassian.net/rest/api/3/status/10009", "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" }
356
+ {
357
+ "id": 1,
358
+ "name": "To Do",
359
+ "description": "Issue is open and not started.",
360
+ "statusCategoryId": 2,
361
+ "projectId": 1,
362
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10000",
363
+ "createdAt": "2023-01-15T00:00:00.000Z",
364
+ "updatedAt": "2023-01-15T00:00:00.000Z"
365
+ },
366
+ {
367
+ "id": 2,
368
+ "name": "In Progress",
369
+ "description": "Issue is being actively worked on.",
370
+ "statusCategoryId": 3,
371
+ "projectId": 1,
372
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10001",
373
+ "createdAt": "2023-01-15T00:00:00.000Z",
374
+ "updatedAt": "2023-01-15T00:00:00.000Z"
375
+ },
376
+ {
377
+ "id": 3,
378
+ "name": "In Review",
379
+ "description": "Issue is in code review.",
380
+ "statusCategoryId": 3,
381
+ "projectId": 1,
382
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10002",
383
+ "createdAt": "2023-01-15T00:00:00.000Z",
384
+ "updatedAt": "2023-01-15T00:00:00.000Z"
385
+ },
386
+ {
387
+ "id": 4,
388
+ "name": "Done",
389
+ "description": "Issue is complete.",
390
+ "statusCategoryId": 4,
391
+ "projectId": 1,
392
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10003",
393
+ "createdAt": "2023-01-15T00:00:00.000Z",
394
+ "updatedAt": "2023-01-15T00:00:00.000Z"
395
+ },
396
+ {
397
+ "id": 5,
398
+ "name": "To Do",
399
+ "description": "Issue is open and not started.",
400
+ "statusCategoryId": 2,
401
+ "projectId": 2,
402
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10004",
403
+ "createdAt": "2023-06-01T00:00:00.000Z",
404
+ "updatedAt": "2023-06-01T00:00:00.000Z"
405
+ },
406
+ {
407
+ "id": 6,
408
+ "name": "In Progress",
409
+ "description": "Issue is being actively worked on.",
410
+ "statusCategoryId": 3,
411
+ "projectId": 2,
412
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10005",
413
+ "createdAt": "2023-06-01T00:00:00.000Z",
414
+ "updatedAt": "2023-06-01T00:00:00.000Z"
415
+ },
416
+ {
417
+ "id": 7,
418
+ "name": "Done",
419
+ "description": "Issue is complete.",
420
+ "statusCategoryId": 4,
421
+ "projectId": 2,
422
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10006",
423
+ "createdAt": "2023-06-01T00:00:00.000Z",
424
+ "updatedAt": "2023-06-01T00:00:00.000Z"
425
+ },
426
+ {
427
+ "id": 8,
428
+ "name": "To Do",
429
+ "description": "Issue is open and not started.",
430
+ "statusCategoryId": 2,
431
+ "projectId": 3,
432
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10007",
433
+ "createdAt": "2023-09-01T00:00:00.000Z",
434
+ "updatedAt": "2023-09-01T00:00:00.000Z"
435
+ },
436
+ {
437
+ "id": 9,
438
+ "name": "In Progress",
439
+ "description": "Issue is being actively worked on.",
440
+ "statusCategoryId": 3,
441
+ "projectId": 3,
442
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10008",
443
+ "createdAt": "2023-09-01T00:00:00.000Z",
444
+ "updatedAt": "2023-09-01T00:00:00.000Z"
445
+ },
446
+ {
447
+ "id": 10,
448
+ "name": "Done",
449
+ "description": "Issue is complete.",
450
+ "statusCategoryId": 4,
451
+ "projectId": 3,
452
+ "self": "https://acmecorp.atlassian.net/rest/api/3/status/10009",
453
+ "createdAt": "2023-09-01T00:00:00.000Z",
454
+ "updatedAt": "2023-09-01T00:00:00.000Z"
455
+ }
94
456
  ],
95
457
  "priorities": [
96
- { "id": 1, "name": "Highest", "description": "This problem will block progress.", "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/highest.svg", "self": "https://acmecorp.atlassian.net/rest/api/3/priority/1", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
97
- { "id": 2, "name": "High", "description": "Serious problem that could block progress.", "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/high.svg", "self": "https://acmecorp.atlassian.net/rest/api/3/priority/2", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
98
- { "id": 3, "name": "Medium", "description": "Has the potential to affect progress.", "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/medium.svg", "self": "https://acmecorp.atlassian.net/rest/api/3/priority/3", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
99
- { "id": 4, "name": "Low", "description": "Minor problem or easily worked around.", "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/low.svg", "self": "https://acmecorp.atlassian.net/rest/api/3/priority/4", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
100
- { "id": 5, "name": "Lowest", "description": "Trivial problem with little or no impact on progress.", "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/lowest.svg", "self": "https://acmecorp.atlassian.net/rest/api/3/priority/5", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" }
458
+ {
459
+ "id": 1,
460
+ "name": "Highest",
461
+ "description": "This problem will block progress.",
462
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/highest.svg",
463
+ "self": "https://acmecorp.atlassian.net/rest/api/3/priority/1",
464
+ "createdAt": "2023-01-15T00:00:00.000Z",
465
+ "updatedAt": "2023-01-15T00:00:00.000Z"
466
+ },
467
+ {
468
+ "id": 2,
469
+ "name": "High",
470
+ "description": "Serious problem that could block progress.",
471
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/high.svg",
472
+ "self": "https://acmecorp.atlassian.net/rest/api/3/priority/2",
473
+ "createdAt": "2023-01-15T00:00:00.000Z",
474
+ "updatedAt": "2023-01-15T00:00:00.000Z"
475
+ },
476
+ {
477
+ "id": 3,
478
+ "name": "Medium",
479
+ "description": "Has the potential to affect progress.",
480
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/medium.svg",
481
+ "self": "https://acmecorp.atlassian.net/rest/api/3/priority/3",
482
+ "createdAt": "2023-01-15T00:00:00.000Z",
483
+ "updatedAt": "2023-01-15T00:00:00.000Z"
484
+ },
485
+ {
486
+ "id": 4,
487
+ "name": "Low",
488
+ "description": "Minor problem or easily worked around.",
489
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/low.svg",
490
+ "self": "https://acmecorp.atlassian.net/rest/api/3/priority/4",
491
+ "createdAt": "2023-01-15T00:00:00.000Z",
492
+ "updatedAt": "2023-01-15T00:00:00.000Z"
493
+ },
494
+ {
495
+ "id": 5,
496
+ "name": "Lowest",
497
+ "description": "Trivial problem with little or no impact on progress.",
498
+ "iconUrl": "https://acmecorp.atlassian.net/images/icons/priorities/lowest.svg",
499
+ "self": "https://acmecorp.atlassian.net/rest/api/3/priority/5",
500
+ "createdAt": "2023-01-15T00:00:00.000Z",
501
+ "updatedAt": "2023-01-15T00:00:00.000Z"
502
+ }
101
503
  ],
102
504
  "issues": [
103
505
  {
104
- "id": 1, "key": "PLAT-1", "projectId": 1, "issueTypeId": 1, "summary": "API Gateway v2 Migration", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Migrate all services from API Gateway v1 to v2. Includes rate limiting, request transformation, and OAuth2 scopes." }] }] },
105
- "statusId": 2, "priorityId": 1, "assigneeAccountId": "5b10a2844c20165700ede21g", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
106
- "labels": ["platform", "migration", "q3"], "componentIds": [], "fixVersionIds": [1], "parentKey": null, "storyPoints": null,
107
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-1", "resolution": null, "resolutionDate": null,
108
- "createdAt": "2024-01-15T09:00:00.000Z", "updatedAt": "2024-06-20T14:30:00.000Z"
506
+ "id": 1,
507
+ "key": "PLAT-1",
508
+ "projectId": 1,
509
+ "issueTypeId": 1,
510
+ "summary": "API Gateway v2 Migration",
511
+ "description": {
512
+ "type": "doc",
513
+ "version": 1,
514
+ "content": [
515
+ {
516
+ "type": "paragraph",
517
+ "content": [
518
+ {
519
+ "type": "text",
520
+ "text": "Migrate all services from API Gateway v1 to v2. Includes rate limiting, request transformation, and OAuth2 scopes."
521
+ }
522
+ ]
523
+ }
524
+ ]
525
+ },
526
+ "statusId": 2,
527
+ "priorityId": 1,
528
+ "assigneeAccountId": "5b10a2844c20165700ede21g",
529
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
530
+ "labels": [
531
+ "platform",
532
+ "migration",
533
+ "q3"
534
+ ],
535
+ "componentIds": [],
536
+ "fixVersionIds": [
537
+ 1
538
+ ],
539
+ "parentKey": null,
540
+ "storyPoints": null,
541
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-1",
542
+ "resolution": null,
543
+ "resolutionDate": null,
544
+ "createdAt": "2024-01-15T09:00:00.000Z",
545
+ "updatedAt": "2024-06-20T14:30:00.000Z"
109
546
  },
110
547
  {
111
- "id": 2, "key": "PLAT-2", "projectId": 1, "issueTypeId": 2, "summary": "Implement OAuth2 scope validation middleware", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Add middleware to validate OAuth2 scopes on every inbound request. Must support both user and service account tokens." }] }] },
112
- "statusId": 3, "priorityId": 2, "assigneeAccountId": "5b10d3a482e05b22cc7d8b02", "reporterAccountId": "5b10a2844c20165700ede21g",
113
- "labels": ["platform", "security"], "componentIds": [], "fixVersionIds": [1], "parentKey": "PLAT-1", "storyPoints": 8,
114
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-2", "resolution": null, "resolutionDate": null,
115
- "createdAt": "2024-02-01T10:00:00.000Z", "updatedAt": "2024-06-18T11:00:00.000Z"
548
+ "id": 2,
549
+ "key": "PLAT-2",
550
+ "projectId": 1,
551
+ "issueTypeId": 2,
552
+ "summary": "Implement OAuth2 scope validation middleware",
553
+ "description": {
554
+ "type": "doc",
555
+ "version": 1,
556
+ "content": [
557
+ {
558
+ "type": "paragraph",
559
+ "content": [
560
+ {
561
+ "type": "text",
562
+ "text": "Add middleware to validate OAuth2 scopes on every inbound request. Must support both user and service account tokens."
563
+ }
564
+ ]
565
+ }
566
+ ]
567
+ },
568
+ "statusId": 3,
569
+ "priorityId": 2,
570
+ "assigneeAccountId": "5b10d3a482e05b22cc7d8b02",
571
+ "reporterAccountId": "5b10a2844c20165700ede21g",
572
+ "labels": [
573
+ "platform",
574
+ "security"
575
+ ],
576
+ "componentIds": [],
577
+ "fixVersionIds": [
578
+ 1
579
+ ],
580
+ "parentKey": "PLAT-1",
581
+ "storyPoints": 8,
582
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-2",
583
+ "resolution": null,
584
+ "resolutionDate": null,
585
+ "createdAt": "2024-02-01T10:00:00.000Z",
586
+ "updatedAt": "2024-06-18T11:00:00.000Z"
116
587
  },
117
588
  {
118
- "id": 3, "key": "PLAT-3", "projectId": 1, "issueTypeId": 2, "summary": "Rate limiting per-tenant configuration", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Allow per-tenant rate limit configuration via admin API. Default to 1000 req/min, configurable up to 10000." }] }] },
119
- "statusId": 2, "priorityId": 2, "assigneeAccountId": "5b10e5b682e05b22cc7d7c03", "reporterAccountId": "5b10a2844c20165700ede21g",
120
- "labels": ["platform", "rate-limiting"], "componentIds": [], "fixVersionIds": [1], "parentKey": "PLAT-1", "storyPoints": 5,
121
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-3", "resolution": null, "resolutionDate": null,
122
- "createdAt": "2024-02-05T09:00:00.000Z", "updatedAt": "2024-06-15T10:00:00.000Z"
589
+ "id": 3,
590
+ "key": "PLAT-3",
591
+ "projectId": 1,
592
+ "issueTypeId": 2,
593
+ "summary": "Rate limiting per-tenant configuration",
594
+ "description": {
595
+ "type": "doc",
596
+ "version": 1,
597
+ "content": [
598
+ {
599
+ "type": "paragraph",
600
+ "content": [
601
+ {
602
+ "type": "text",
603
+ "text": "Allow per-tenant rate limit configuration via admin API. Default to 1000 req/min, configurable up to 10000."
604
+ }
605
+ ]
606
+ }
607
+ ]
608
+ },
609
+ "statusId": 2,
610
+ "priorityId": 2,
611
+ "assigneeAccountId": "5b10e5b682e05b22cc7d7c03",
612
+ "reporterAccountId": "5b10a2844c20165700ede21g",
613
+ "labels": [
614
+ "platform",
615
+ "rate-limiting"
616
+ ],
617
+ "componentIds": [],
618
+ "fixVersionIds": [
619
+ 1
620
+ ],
621
+ "parentKey": "PLAT-1",
622
+ "storyPoints": 5,
623
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-3",
624
+ "resolution": null,
625
+ "resolutionDate": null,
626
+ "createdAt": "2024-02-05T09:00:00.000Z",
627
+ "updatedAt": "2024-06-15T10:00:00.000Z"
123
628
  },
124
629
  {
125
- "id": 4, "key": "PLAT-4", "projectId": 1, "issueTypeId": 4, "summary": "Memory leak in connection pool under high concurrency", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Under sustained load (>5000 concurrent connections), the connection pool grows unbounded. Heap dump shows leaked PreparedStatement handles." }] }] },
126
- "statusId": 1, "priorityId": 1, "assigneeAccountId": null, "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
127
- "labels": ["bug", "performance", "critical"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 3,
128
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-4", "resolution": null, "resolutionDate": null,
129
- "createdAt": "2024-06-10T15:30:00.000Z", "updatedAt": "2024-06-10T15:30:00.000Z"
630
+ "id": 4,
631
+ "key": "PLAT-4",
632
+ "projectId": 1,
633
+ "issueTypeId": 4,
634
+ "summary": "Memory leak in connection pool under high concurrency",
635
+ "description": {
636
+ "type": "doc",
637
+ "version": 1,
638
+ "content": [
639
+ {
640
+ "type": "paragraph",
641
+ "content": [
642
+ {
643
+ "type": "text",
644
+ "text": "Under sustained load (>5000 concurrent connections), the connection pool grows unbounded. Heap dump shows leaked PreparedStatement handles."
645
+ }
646
+ ]
647
+ }
648
+ ]
649
+ },
650
+ "statusId": 1,
651
+ "priorityId": 1,
652
+ "assigneeAccountId": null,
653
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
654
+ "labels": [
655
+ "bug",
656
+ "performance",
657
+ "critical"
658
+ ],
659
+ "componentIds": [],
660
+ "fixVersionIds": [],
661
+ "parentKey": null,
662
+ "storyPoints": 3,
663
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-4",
664
+ "resolution": null,
665
+ "resolutionDate": null,
666
+ "createdAt": "2024-06-10T15:30:00.000Z",
667
+ "updatedAt": "2024-06-10T15:30:00.000Z"
130
668
  },
131
669
  {
132
- "id": 5, "key": "PLAT-5", "projectId": 1, "issueTypeId": 3, "summary": "Upgrade PostgreSQL driver to v5", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Upgrade pg driver from 4.x to 5.x. Breaking changes in connection string format and pool configuration." }] }] },
133
- "statusId": 4, "priorityId": 3, "assigneeAccountId": "5b10f2c482e05b22cc7d9a01", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
134
- "labels": ["platform", "dependencies"], "componentIds": [], "fixVersionIds": [2], "parentKey": null, "storyPoints": 3,
135
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-5", "resolution": "Done", "resolutionDate": "2024-05-28T16:00:00.000Z",
136
- "createdAt": "2024-05-01T08:00:00.000Z", "updatedAt": "2024-05-28T16:00:00.000Z"
670
+ "id": 5,
671
+ "key": "PLAT-5",
672
+ "projectId": 1,
673
+ "issueTypeId": 3,
674
+ "summary": "Upgrade PostgreSQL driver to v5",
675
+ "description": {
676
+ "type": "doc",
677
+ "version": 1,
678
+ "content": [
679
+ {
680
+ "type": "paragraph",
681
+ "content": [
682
+ {
683
+ "type": "text",
684
+ "text": "Upgrade pg driver from 4.x to 5.x. Breaking changes in connection string format and pool configuration."
685
+ }
686
+ ]
687
+ }
688
+ ]
689
+ },
690
+ "statusId": 4,
691
+ "priorityId": 3,
692
+ "assigneeAccountId": "5b10f2c482e05b22cc7d9a01",
693
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
694
+ "labels": [
695
+ "platform",
696
+ "dependencies"
697
+ ],
698
+ "componentIds": [],
699
+ "fixVersionIds": [
700
+ 2
701
+ ],
702
+ "parentKey": null,
703
+ "storyPoints": 3,
704
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-5",
705
+ "resolution": "Done",
706
+ "resolutionDate": "2024-05-28T16:00:00.000Z",
707
+ "createdAt": "2024-05-01T08:00:00.000Z",
708
+ "updatedAt": "2024-05-28T16:00:00.000Z"
137
709
  },
138
710
  {
139
- "id": 6, "key": "PLAT-6", "projectId": 1, "issueTypeId": 3, "summary": "Add OpenTelemetry tracing to auth service", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Instrument the authentication service with OpenTelemetry spans for login, token refresh, and session validation." }] }] },
140
- "statusId": 4, "priorityId": 4, "assigneeAccountId": "5b10d3a482e05b22cc7d8b02", "reporterAccountId": "5b10a2844c20165700ede21g",
141
- "labels": ["observability"], "componentIds": [], "fixVersionIds": [2], "parentKey": null, "storyPoints": 5,
142
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-6", "resolution": "Done", "resolutionDate": "2024-05-15T14:00:00.000Z",
143
- "createdAt": "2024-04-10T09:00:00.000Z", "updatedAt": "2024-05-15T14:00:00.000Z"
711
+ "id": 6,
712
+ "key": "PLAT-6",
713
+ "projectId": 1,
714
+ "issueTypeId": 3,
715
+ "summary": "Add OpenTelemetry tracing to auth service",
716
+ "description": {
717
+ "type": "doc",
718
+ "version": 1,
719
+ "content": [
720
+ {
721
+ "type": "paragraph",
722
+ "content": [
723
+ {
724
+ "type": "text",
725
+ "text": "Instrument the authentication service with OpenTelemetry spans for login, token refresh, and session validation."
726
+ }
727
+ ]
728
+ }
729
+ ]
730
+ },
731
+ "statusId": 4,
732
+ "priorityId": 4,
733
+ "assigneeAccountId": "5b10d3a482e05b22cc7d8b02",
734
+ "reporterAccountId": "5b10a2844c20165700ede21g",
735
+ "labels": [
736
+ "observability"
737
+ ],
738
+ "componentIds": [],
739
+ "fixVersionIds": [
740
+ 2
741
+ ],
742
+ "parentKey": null,
743
+ "storyPoints": 5,
744
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-6",
745
+ "resolution": "Done",
746
+ "resolutionDate": "2024-05-15T14:00:00.000Z",
747
+ "createdAt": "2024-04-10T09:00:00.000Z",
748
+ "updatedAt": "2024-05-15T14:00:00.000Z"
144
749
  },
145
750
  {
146
- "id": 7, "key": "PLAT-7", "projectId": 1, "issueTypeId": 2, "summary": "Request transformation pipeline", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Build a configurable request/response transformation pipeline for the API gateway. Support header injection, body mapping, and URL rewriting." }] }] },
147
- "statusId": 1, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10a2844c20165700ede21g",
148
- "labels": ["platform", "gateway"], "componentIds": [], "fixVersionIds": [1], "parentKey": "PLAT-1", "storyPoints": 13,
149
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-7", "resolution": null, "resolutionDate": null,
150
- "createdAt": "2024-03-01T09:00:00.000Z", "updatedAt": "2024-03-01T09:00:00.000Z"
751
+ "id": 7,
752
+ "key": "PLAT-7",
753
+ "projectId": 1,
754
+ "issueTypeId": 2,
755
+ "summary": "Request transformation pipeline",
756
+ "description": {
757
+ "type": "doc",
758
+ "version": 1,
759
+ "content": [
760
+ {
761
+ "type": "paragraph",
762
+ "content": [
763
+ {
764
+ "type": "text",
765
+ "text": "Build a configurable request/response transformation pipeline for the API gateway. Support header injection, body mapping, and URL rewriting."
766
+ }
767
+ ]
768
+ }
769
+ ]
770
+ },
771
+ "statusId": 1,
772
+ "priorityId": 3,
773
+ "assigneeAccountId": null,
774
+ "reporterAccountId": "5b10a2844c20165700ede21g",
775
+ "labels": [
776
+ "platform",
777
+ "gateway"
778
+ ],
779
+ "componentIds": [],
780
+ "fixVersionIds": [
781
+ 1
782
+ ],
783
+ "parentKey": "PLAT-1",
784
+ "storyPoints": 13,
785
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-7",
786
+ "resolution": null,
787
+ "resolutionDate": null,
788
+ "createdAt": "2024-03-01T09:00:00.000Z",
789
+ "updatedAt": "2024-03-01T09:00:00.000Z"
151
790
  },
152
791
  {
153
- "id": 8, "key": "MOBILE-1", "projectId": 2, "issueTypeId": 6, "summary": "Push Notification Overhaul", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Redesign push notification system to support rich media, action buttons, and notification grouping. Must work on both iOS and Android." }] }] },
154
- "statusId": 6, "priorityId": 2, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
155
- "labels": ["mobile", "notifications"], "componentIds": [], "fixVersionIds": [3], "parentKey": null, "storyPoints": null,
156
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-1", "resolution": null, "resolutionDate": null,
157
- "createdAt": "2024-04-01T10:00:00.000Z", "updatedAt": "2024-06-19T09:00:00.000Z"
792
+ "id": 8,
793
+ "key": "MOBILE-1",
794
+ "projectId": 2,
795
+ "issueTypeId": 6,
796
+ "summary": "Push Notification Overhaul",
797
+ "description": {
798
+ "type": "doc",
799
+ "version": 1,
800
+ "content": [
801
+ {
802
+ "type": "paragraph",
803
+ "content": [
804
+ {
805
+ "type": "text",
806
+ "text": "Redesign push notification system to support rich media, action buttons, and notification grouping. Must work on both iOS and Android."
807
+ }
808
+ ]
809
+ }
810
+ ]
811
+ },
812
+ "statusId": 6,
813
+ "priorityId": 2,
814
+ "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5",
815
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
816
+ "labels": [
817
+ "mobile",
818
+ "notifications"
819
+ ],
820
+ "componentIds": [],
821
+ "fixVersionIds": [
822
+ 3
823
+ ],
824
+ "parentKey": null,
825
+ "storyPoints": null,
826
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-1",
827
+ "resolution": null,
828
+ "resolutionDate": null,
829
+ "createdAt": "2024-04-01T10:00:00.000Z",
830
+ "updatedAt": "2024-06-19T09:00:00.000Z"
158
831
  },
159
832
  {
160
- "id": 9, "key": "MOBILE-2", "projectId": 2, "issueTypeId": 7, "summary": "Implement rich push notifications with images", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Add support for image attachments in push notifications. Use notification service extension on iOS, BigPictureStyle on Android." }] }] },
161
- "statusId": 7, "priorityId": 2, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
162
- "labels": ["mobile", "notifications", "ios", "android"], "componentIds": [], "fixVersionIds": [3], "parentKey": "MOBILE-1", "storyPoints": 8,
163
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-2", "resolution": "Done", "resolutionDate": "2024-06-05T16:00:00.000Z",
164
- "createdAt": "2024-04-15T10:00:00.000Z", "updatedAt": "2024-06-05T16:00:00.000Z"
833
+ "id": 9,
834
+ "key": "MOBILE-2",
835
+ "projectId": 2,
836
+ "issueTypeId": 7,
837
+ "summary": "Implement rich push notifications with images",
838
+ "description": {
839
+ "type": "doc",
840
+ "version": 1,
841
+ "content": [
842
+ {
843
+ "type": "paragraph",
844
+ "content": [
845
+ {
846
+ "type": "text",
847
+ "text": "Add support for image attachments in push notifications. Use notification service extension on iOS, BigPictureStyle on Android."
848
+ }
849
+ ]
850
+ }
851
+ ]
852
+ },
853
+ "statusId": 7,
854
+ "priorityId": 2,
855
+ "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5",
856
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
857
+ "labels": [
858
+ "mobile",
859
+ "notifications",
860
+ "ios",
861
+ "android"
862
+ ],
863
+ "componentIds": [],
864
+ "fixVersionIds": [
865
+ 3
866
+ ],
867
+ "parentKey": "MOBILE-1",
868
+ "storyPoints": 8,
869
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-2",
870
+ "resolution": "Done",
871
+ "resolutionDate": "2024-06-05T16:00:00.000Z",
872
+ "createdAt": "2024-04-15T10:00:00.000Z",
873
+ "updatedAt": "2024-06-05T16:00:00.000Z"
165
874
  },
166
875
  {
167
- "id": 10, "key": "MOBILE-3", "projectId": 2, "issueTypeId": 8, "summary": "App crashes on Android 13 when opening deep links", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "App crashes with NullPointerException when handling deep links on Android 13 devices. Stack trace points to IntentFilter resolution." }] }] },
168
- "statusId": 5, "priorityId": 1, "assigneeAccountId": null, "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
169
- "labels": ["bug", "android", "crash"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 3,
170
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-3", "resolution": null, "resolutionDate": null,
171
- "createdAt": "2024-06-18T14:00:00.000Z", "updatedAt": "2024-06-18T14:00:00.000Z"
876
+ "id": 10,
877
+ "key": "MOBILE-3",
878
+ "projectId": 2,
879
+ "issueTypeId": 8,
880
+ "summary": "App crashes on Android 13 when opening deep links",
881
+ "description": {
882
+ "type": "doc",
883
+ "version": 1,
884
+ "content": [
885
+ {
886
+ "type": "paragraph",
887
+ "content": [
888
+ {
889
+ "type": "text",
890
+ "text": "App crashes with NullPointerException when handling deep links on Android 13 devices. Stack trace points to IntentFilter resolution."
891
+ }
892
+ ]
893
+ }
894
+ ]
895
+ },
896
+ "statusId": 5,
897
+ "priorityId": 1,
898
+ "assigneeAccountId": null,
899
+ "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
900
+ "labels": [
901
+ "bug",
902
+ "android",
903
+ "crash"
904
+ ],
905
+ "componentIds": [],
906
+ "fixVersionIds": [],
907
+ "parentKey": null,
908
+ "storyPoints": 3,
909
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-3",
910
+ "resolution": null,
911
+ "resolutionDate": null,
912
+ "createdAt": "2024-06-18T14:00:00.000Z",
913
+ "updatedAt": "2024-06-18T14:00:00.000Z"
172
914
  },
173
915
  {
174
- "id": 11, "key": "MOBILE-4", "projectId": 2, "issueTypeId": 7, "summary": "Add notification action buttons", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Support up to 3 action buttons on push notifications (e.g., Reply, Archive, Mark as Read)." }] }] },
175
- "statusId": 6, "priorityId": 3, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
176
- "labels": ["mobile", "notifications"], "componentIds": [], "fixVersionIds": [3], "parentKey": "MOBILE-1", "storyPoints": 5,
177
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-4", "resolution": null, "resolutionDate": null,
178
- "createdAt": "2024-05-01T10:00:00.000Z", "updatedAt": "2024-06-17T11:00:00.000Z"
916
+ "id": 11,
917
+ "key": "MOBILE-4",
918
+ "projectId": 2,
919
+ "issueTypeId": 7,
920
+ "summary": "Add notification action buttons",
921
+ "description": {
922
+ "type": "doc",
923
+ "version": 1,
924
+ "content": [
925
+ {
926
+ "type": "paragraph",
927
+ "content": [
928
+ {
929
+ "type": "text",
930
+ "text": "Support up to 3 action buttons on push notifications (e.g., Reply, Archive, Mark as Read)."
931
+ }
932
+ ]
933
+ }
934
+ ]
935
+ },
936
+ "statusId": 6,
937
+ "priorityId": 3,
938
+ "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5",
939
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
940
+ "labels": [
941
+ "mobile",
942
+ "notifications"
943
+ ],
944
+ "componentIds": [],
945
+ "fixVersionIds": [
946
+ 3
947
+ ],
948
+ "parentKey": "MOBILE-1",
949
+ "storyPoints": 5,
950
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-4",
951
+ "resolution": null,
952
+ "resolutionDate": null,
953
+ "createdAt": "2024-05-01T10:00:00.000Z",
954
+ "updatedAt": "2024-06-17T11:00:00.000Z"
179
955
  },
180
956
  {
181
- "id": 12, "key": "OPS-1", "projectId": 3, "issueTypeId": 9, "summary": "Set up Kubernetes autoscaling for production", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Configure HPA for all production deployments. Target 70% CPU, 80% memory. Min 3 replicas, max 50." }] }] },
182
- "statusId": 10, "priorityId": 2, "assigneeAccountId": "5b10f2c482e05b22cc7d9a01", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
183
- "labels": ["infra", "kubernetes", "autoscaling"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 5,
184
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-1", "resolution": "Done", "resolutionDate": "2024-04-20T15:00:00.000Z",
185
- "createdAt": "2024-03-15T09:00:00.000Z", "updatedAt": "2024-04-20T15:00:00.000Z"
957
+ "id": 12,
958
+ "key": "OPS-1",
959
+ "projectId": 3,
960
+ "issueTypeId": 9,
961
+ "summary": "Set up Kubernetes autoscaling for production",
962
+ "description": {
963
+ "type": "doc",
964
+ "version": 1,
965
+ "content": [
966
+ {
967
+ "type": "paragraph",
968
+ "content": [
969
+ {
970
+ "type": "text",
971
+ "text": "Configure HPA for all production deployments. Target 70% CPU, 80% memory. Min 3 replicas, max 50."
972
+ }
973
+ ]
974
+ }
975
+ ]
976
+ },
977
+ "statusId": 10,
978
+ "priorityId": 2,
979
+ "assigneeAccountId": "5b10f2c482e05b22cc7d9a01",
980
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
981
+ "labels": [
982
+ "infra",
983
+ "kubernetes",
984
+ "autoscaling"
985
+ ],
986
+ "componentIds": [],
987
+ "fixVersionIds": [],
988
+ "parentKey": null,
989
+ "storyPoints": 5,
990
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-1",
991
+ "resolution": "Done",
992
+ "resolutionDate": "2024-04-20T15:00:00.000Z",
993
+ "createdAt": "2024-03-15T09:00:00.000Z",
994
+ "updatedAt": "2024-04-20T15:00:00.000Z"
186
995
  },
187
996
  {
188
- "id": 13, "key": "OPS-2", "projectId": 3, "issueTypeId": 10, "summary": "CI pipeline intermittently fails on integration tests", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Integration tests fail ~15% of the time with connection timeout errors. Suspect test database connection pool exhaustion." }] }] },
189
- "statusId": 9, "priorityId": 2, "assigneeAccountId": "5b10e5b682e05b22cc7d7c03", "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
190
- "labels": ["bug", "ci", "flaky-tests"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 3,
191
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-2", "resolution": null, "resolutionDate": null,
192
- "createdAt": "2024-06-12T10:00:00.000Z", "updatedAt": "2024-06-19T16:00:00.000Z"
997
+ "id": 13,
998
+ "key": "OPS-2",
999
+ "projectId": 3,
1000
+ "issueTypeId": 10,
1001
+ "summary": "CI pipeline intermittently fails on integration tests",
1002
+ "description": {
1003
+ "type": "doc",
1004
+ "version": 1,
1005
+ "content": [
1006
+ {
1007
+ "type": "paragraph",
1008
+ "content": [
1009
+ {
1010
+ "type": "text",
1011
+ "text": "Integration tests fail ~15% of the time with connection timeout errors. Suspect test database connection pool exhaustion."
1012
+ }
1013
+ ]
1014
+ }
1015
+ ]
1016
+ },
1017
+ "statusId": 9,
1018
+ "priorityId": 2,
1019
+ "assigneeAccountId": "5b10e5b682e05b22cc7d7c03",
1020
+ "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
1021
+ "labels": [
1022
+ "bug",
1023
+ "ci",
1024
+ "flaky-tests"
1025
+ ],
1026
+ "componentIds": [],
1027
+ "fixVersionIds": [],
1028
+ "parentKey": null,
1029
+ "storyPoints": 3,
1030
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-2",
1031
+ "resolution": null,
1032
+ "resolutionDate": null,
1033
+ "createdAt": "2024-06-12T10:00:00.000Z",
1034
+ "updatedAt": "2024-06-19T16:00:00.000Z"
193
1035
  },
194
1036
  {
195
- "id": 14, "key": "OPS-3", "projectId": 3, "issueTypeId": 9, "summary": "Migrate secrets to HashiCorp Vault", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Move all application secrets from K8s secrets to HashiCorp Vault. Set up auto-rotation for database credentials." }] }] },
196
- "statusId": 8, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
197
- "labels": ["infra", "security", "secrets"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 8,
198
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-3", "resolution": null, "resolutionDate": null,
199
- "createdAt": "2024-06-01T08:00:00.000Z", "updatedAt": "2024-06-01T08:00:00.000Z"
1037
+ "id": 14,
1038
+ "key": "OPS-3",
1039
+ "projectId": 3,
1040
+ "issueTypeId": 9,
1041
+ "summary": "Migrate secrets to HashiCorp Vault",
1042
+ "description": {
1043
+ "type": "doc",
1044
+ "version": 1,
1045
+ "content": [
1046
+ {
1047
+ "type": "paragraph",
1048
+ "content": [
1049
+ {
1050
+ "type": "text",
1051
+ "text": "Move all application secrets from K8s secrets to HashiCorp Vault. Set up auto-rotation for database credentials."
1052
+ }
1053
+ ]
1054
+ }
1055
+ ]
1056
+ },
1057
+ "statusId": 8,
1058
+ "priorityId": 3,
1059
+ "assigneeAccountId": null,
1060
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
1061
+ "labels": [
1062
+ "infra",
1063
+ "security",
1064
+ "secrets"
1065
+ ],
1066
+ "componentIds": [],
1067
+ "fixVersionIds": [],
1068
+ "parentKey": null,
1069
+ "storyPoints": 8,
1070
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-3",
1071
+ "resolution": null,
1072
+ "resolutionDate": null,
1073
+ "createdAt": "2024-06-01T08:00:00.000Z",
1074
+ "updatedAt": "2024-06-01T08:00:00.000Z"
200
1075
  },
201
1076
  {
202
- "id": 15, "key": "PLAT-8", "projectId": 1, "issueTypeId": 5, "summary": "Write OAuth2 scope validation tests", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Unit and integration tests for the scope validation middleware." }] }] },
203
- "statusId": 2, "priorityId": 3, "assigneeAccountId": "5b10d3a482e05b22cc7d8b02", "reporterAccountId": "5b10a2844c20165700ede21g",
204
- "labels": ["testing"], "componentIds": [], "fixVersionIds": [], "parentKey": "PLAT-2", "storyPoints": 3,
205
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-8", "resolution": null, "resolutionDate": null,
206
- "createdAt": "2024-06-15T09:00:00.000Z", "updatedAt": "2024-06-18T10:00:00.000Z"
1077
+ "id": 15,
1078
+ "key": "PLAT-8",
1079
+ "projectId": 1,
1080
+ "issueTypeId": 5,
1081
+ "summary": "Write OAuth2 scope validation tests",
1082
+ "description": {
1083
+ "type": "doc",
1084
+ "version": 1,
1085
+ "content": [
1086
+ {
1087
+ "type": "paragraph",
1088
+ "content": [
1089
+ {
1090
+ "type": "text",
1091
+ "text": "Unit and integration tests for the scope validation middleware."
1092
+ }
1093
+ ]
1094
+ }
1095
+ ]
1096
+ },
1097
+ "statusId": 2,
1098
+ "priorityId": 3,
1099
+ "assigneeAccountId": "5b10d3a482e05b22cc7d8b02",
1100
+ "reporterAccountId": "5b10a2844c20165700ede21g",
1101
+ "labels": [
1102
+ "testing"
1103
+ ],
1104
+ "componentIds": [],
1105
+ "fixVersionIds": [],
1106
+ "parentKey": "PLAT-2",
1107
+ "storyPoints": 3,
1108
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-8",
1109
+ "resolution": null,
1110
+ "resolutionDate": null,
1111
+ "createdAt": "2024-06-15T09:00:00.000Z",
1112
+ "updatedAt": "2024-06-18T10:00:00.000Z"
207
1113
  },
208
1114
  {
209
- "id": 16, "key": "PLAT-9", "projectId": 1, "issueTypeId": 5, "summary": "Document rate limit API endpoints", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Write OpenAPI docs for the rate limit configuration API." }] }] },
210
- "statusId": 1, "priorityId": 4, "assigneeAccountId": null, "reporterAccountId": "5b10e5b682e05b22cc7d7c03",
211
- "labels": ["documentation"], "componentIds": [], "fixVersionIds": [], "parentKey": "PLAT-3", "storyPoints": 2,
212
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-9", "resolution": null, "resolutionDate": null,
213
- "createdAt": "2024-06-16T10:00:00.000Z", "updatedAt": "2024-06-16T10:00:00.000Z"
1115
+ "id": 16,
1116
+ "key": "PLAT-9",
1117
+ "projectId": 1,
1118
+ "issueTypeId": 5,
1119
+ "summary": "Document rate limit API endpoints",
1120
+ "description": {
1121
+ "type": "doc",
1122
+ "version": 1,
1123
+ "content": [
1124
+ {
1125
+ "type": "paragraph",
1126
+ "content": [
1127
+ {
1128
+ "type": "text",
1129
+ "text": "Write OpenAPI docs for the rate limit configuration API."
1130
+ }
1131
+ ]
1132
+ }
1133
+ ]
1134
+ },
1135
+ "statusId": 1,
1136
+ "priorityId": 4,
1137
+ "assigneeAccountId": null,
1138
+ "reporterAccountId": "5b10e5b682e05b22cc7d7c03",
1139
+ "labels": [
1140
+ "documentation"
1141
+ ],
1142
+ "componentIds": [],
1143
+ "fixVersionIds": [],
1144
+ "parentKey": "PLAT-3",
1145
+ "storyPoints": 2,
1146
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-9",
1147
+ "resolution": null,
1148
+ "resolutionDate": null,
1149
+ "createdAt": "2024-06-16T10:00:00.000Z",
1150
+ "updatedAt": "2024-06-16T10:00:00.000Z"
214
1151
  },
215
1152
  {
216
- "id": 17, "key": "PLAT-10", "projectId": 1, "issueTypeId": 5, "summary": "Implement header injection for transformation pipeline", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Add header injection support to the request transformation pipeline." }] }] },
217
- "statusId": 1, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10a2844c20165700ede21g",
218
- "labels": ["platform", "gateway"], "componentIds": [], "fixVersionIds": [1], "parentKey": "PLAT-7", "storyPoints": 5,
219
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-10", "resolution": null, "resolutionDate": null,
220
- "createdAt": "2024-06-17T09:00:00.000Z", "updatedAt": "2024-06-17T09:00:00.000Z"
1153
+ "id": 17,
1154
+ "key": "PLAT-10",
1155
+ "projectId": 1,
1156
+ "issueTypeId": 5,
1157
+ "summary": "Implement header injection for transformation pipeline",
1158
+ "description": {
1159
+ "type": "doc",
1160
+ "version": 1,
1161
+ "content": [
1162
+ {
1163
+ "type": "paragraph",
1164
+ "content": [
1165
+ {
1166
+ "type": "text",
1167
+ "text": "Add header injection support to the request transformation pipeline."
1168
+ }
1169
+ ]
1170
+ }
1171
+ ]
1172
+ },
1173
+ "statusId": 1,
1174
+ "priorityId": 3,
1175
+ "assigneeAccountId": null,
1176
+ "reporterAccountId": "5b10a2844c20165700ede21g",
1177
+ "labels": [
1178
+ "platform",
1179
+ "gateway"
1180
+ ],
1181
+ "componentIds": [],
1182
+ "fixVersionIds": [
1183
+ 1
1184
+ ],
1185
+ "parentKey": "PLAT-7",
1186
+ "storyPoints": 5,
1187
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-10",
1188
+ "resolution": null,
1189
+ "resolutionDate": null,
1190
+ "createdAt": "2024-06-17T09:00:00.000Z",
1191
+ "updatedAt": "2024-06-17T09:00:00.000Z"
221
1192
  },
222
1193
  {
223
- "id": 18, "key": "PLAT-11", "projectId": 1, "issueTypeId": 4, "summary": "CORS headers missing on preflight responses", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "OPTIONS requests to the API gateway don't return proper Access-Control-Allow-Origin headers." }] }] },
224
- "statusId": 4, "priorityId": 2, "assigneeAccountId": "5b10a2844c20165700ede21g", "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
225
- "labels": ["bug", "gateway"], "componentIds": [], "fixVersionIds": [2], "parentKey": null, "storyPoints": 2,
226
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-11", "resolution": "Done", "resolutionDate": "2024-05-20T10:00:00.000Z",
227
- "createdAt": "2024-05-10T08:00:00.000Z", "updatedAt": "2024-05-20T10:00:00.000Z"
1194
+ "id": 18,
1195
+ "key": "PLAT-11",
1196
+ "projectId": 1,
1197
+ "issueTypeId": 4,
1198
+ "summary": "CORS headers missing on preflight responses",
1199
+ "description": {
1200
+ "type": "doc",
1201
+ "version": 1,
1202
+ "content": [
1203
+ {
1204
+ "type": "paragraph",
1205
+ "content": [
1206
+ {
1207
+ "type": "text",
1208
+ "text": "OPTIONS requests to the API gateway don't return proper Access-Control-Allow-Origin headers."
1209
+ }
1210
+ ]
1211
+ }
1212
+ ]
1213
+ },
1214
+ "statusId": 4,
1215
+ "priorityId": 2,
1216
+ "assigneeAccountId": "5b10a2844c20165700ede21g",
1217
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
1218
+ "labels": [
1219
+ "bug",
1220
+ "gateway"
1221
+ ],
1222
+ "componentIds": [],
1223
+ "fixVersionIds": [
1224
+ 2
1225
+ ],
1226
+ "parentKey": null,
1227
+ "storyPoints": 2,
1228
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-11",
1229
+ "resolution": "Done",
1230
+ "resolutionDate": "2024-05-20T10:00:00.000Z",
1231
+ "createdAt": "2024-05-10T08:00:00.000Z",
1232
+ "updatedAt": "2024-05-20T10:00:00.000Z"
228
1233
  },
229
1234
  {
230
- "id": 19, "key": "PLAT-12", "projectId": 1, "issueTypeId": 2, "summary": "Implement Redis caching layer for auth tokens", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Cache validated auth tokens in Redis to reduce database lookups. TTL should match token expiry." }] }] },
231
- "statusId": 1, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
232
- "labels": ["platform", "performance"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 8,
233
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-12", "resolution": null, "resolutionDate": null,
234
- "createdAt": "2024-06-19T09:00:00.000Z", "updatedAt": "2024-06-19T09:00:00.000Z"
1235
+ "id": 19,
1236
+ "key": "PLAT-12",
1237
+ "projectId": 1,
1238
+ "issueTypeId": 2,
1239
+ "summary": "Implement Redis caching layer for auth tokens",
1240
+ "description": {
1241
+ "type": "doc",
1242
+ "version": 1,
1243
+ "content": [
1244
+ {
1245
+ "type": "paragraph",
1246
+ "content": [
1247
+ {
1248
+ "type": "text",
1249
+ "text": "Cache validated auth tokens in Redis to reduce database lookups. TTL should match token expiry."
1250
+ }
1251
+ ]
1252
+ }
1253
+ ]
1254
+ },
1255
+ "statusId": 1,
1256
+ "priorityId": 3,
1257
+ "assigneeAccountId": null,
1258
+ "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
1259
+ "labels": [
1260
+ "platform",
1261
+ "performance"
1262
+ ],
1263
+ "componentIds": [],
1264
+ "fixVersionIds": [],
1265
+ "parentKey": null,
1266
+ "storyPoints": 8,
1267
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-12",
1268
+ "resolution": null,
1269
+ "resolutionDate": null,
1270
+ "createdAt": "2024-06-19T09:00:00.000Z",
1271
+ "updatedAt": "2024-06-19T09:00:00.000Z"
235
1272
  },
236
1273
  {
237
- "id": 20, "key": "MOBILE-5", "projectId": 2, "issueTypeId": 7, "summary": "Notification grouping by category", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Group notifications by category (messages, alerts, updates) on both iOS and Android." }] }] },
238
- "statusId": 5, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
239
- "labels": ["mobile", "notifications"], "componentIds": [], "fixVersionIds": [3], "parentKey": "MOBILE-1", "storyPoints": 5,
240
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-5", "resolution": null, "resolutionDate": null,
241
- "createdAt": "2024-05-10T10:00:00.000Z", "updatedAt": "2024-05-10T10:00:00.000Z"
1274
+ "id": 20,
1275
+ "key": "MOBILE-5",
1276
+ "projectId": 2,
1277
+ "issueTypeId": 7,
1278
+ "summary": "Notification grouping by category",
1279
+ "description": {
1280
+ "type": "doc",
1281
+ "version": 1,
1282
+ "content": [
1283
+ {
1284
+ "type": "paragraph",
1285
+ "content": [
1286
+ {
1287
+ "type": "text",
1288
+ "text": "Group notifications by category (messages, alerts, updates) on both iOS and Android."
1289
+ }
1290
+ ]
1291
+ }
1292
+ ]
1293
+ },
1294
+ "statusId": 5,
1295
+ "priorityId": 3,
1296
+ "assigneeAccountId": null,
1297
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
1298
+ "labels": [
1299
+ "mobile",
1300
+ "notifications"
1301
+ ],
1302
+ "componentIds": [],
1303
+ "fixVersionIds": [
1304
+ 3
1305
+ ],
1306
+ "parentKey": "MOBILE-1",
1307
+ "storyPoints": 5,
1308
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-5",
1309
+ "resolution": null,
1310
+ "resolutionDate": null,
1311
+ "createdAt": "2024-05-10T10:00:00.000Z",
1312
+ "updatedAt": "2024-05-10T10:00:00.000Z"
242
1313
  },
243
1314
  {
244
- "id": 21, "key": "MOBILE-6", "projectId": 2, "issueTypeId": 11, "summary": "iOS implementation of action buttons", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Implement UNNotificationAction for notification action buttons on iOS." }] }] },
245
- "statusId": 6, "priorityId": 3, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
246
- "labels": ["mobile", "ios"], "componentIds": [], "fixVersionIds": [3], "parentKey": "MOBILE-4", "storyPoints": 3,
247
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-6", "resolution": null, "resolutionDate": null,
248
- "createdAt": "2024-05-15T10:00:00.000Z", "updatedAt": "2024-06-18T11:00:00.000Z"
1315
+ "id": 21,
1316
+ "key": "MOBILE-6",
1317
+ "projectId": 2,
1318
+ "issueTypeId": 11,
1319
+ "summary": "iOS implementation of action buttons",
1320
+ "description": {
1321
+ "type": "doc",
1322
+ "version": 1,
1323
+ "content": [
1324
+ {
1325
+ "type": "paragraph",
1326
+ "content": [
1327
+ {
1328
+ "type": "text",
1329
+ "text": "Implement UNNotificationAction for notification action buttons on iOS."
1330
+ }
1331
+ ]
1332
+ }
1333
+ ]
1334
+ },
1335
+ "statusId": 6,
1336
+ "priorityId": 3,
1337
+ "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5",
1338
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
1339
+ "labels": [
1340
+ "mobile",
1341
+ "ios"
1342
+ ],
1343
+ "componentIds": [],
1344
+ "fixVersionIds": [
1345
+ 3
1346
+ ],
1347
+ "parentKey": "MOBILE-4",
1348
+ "storyPoints": 3,
1349
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-6",
1350
+ "resolution": null,
1351
+ "resolutionDate": null,
1352
+ "createdAt": "2024-05-15T10:00:00.000Z",
1353
+ "updatedAt": "2024-06-18T11:00:00.000Z"
249
1354
  },
250
1355
  {
251
- "id": 22, "key": "MOBILE-7", "projectId": 2, "issueTypeId": 8, "summary": "Push notifications not delivered on iOS 17.4", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Users on iOS 17.4 report push notifications stop arriving after app update. APNs token registration succeeds but delivery fails silently." }] }] },
252
- "statusId": 7, "priorityId": 1, "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5", "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
253
- "labels": ["bug", "ios", "notifications"], "componentIds": [], "fixVersionIds": [3], "parentKey": null, "storyPoints": 5,
254
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-7", "resolution": "Done", "resolutionDate": "2024-06-10T14:00:00.000Z",
255
- "createdAt": "2024-06-01T08:00:00.000Z", "updatedAt": "2024-06-10T14:00:00.000Z"
1356
+ "id": 22,
1357
+ "key": "MOBILE-7",
1358
+ "projectId": 2,
1359
+ "issueTypeId": 8,
1360
+ "summary": "Push notifications not delivered on iOS 17.4",
1361
+ "description": {
1362
+ "type": "doc",
1363
+ "version": 1,
1364
+ "content": [
1365
+ {
1366
+ "type": "paragraph",
1367
+ "content": [
1368
+ {
1369
+ "type": "text",
1370
+ "text": "Users on iOS 17.4 report push notifications stop arriving after app update. APNs token registration succeeds but delivery fails silently."
1371
+ }
1372
+ ]
1373
+ }
1374
+ ]
1375
+ },
1376
+ "statusId": 7,
1377
+ "priorityId": 1,
1378
+ "assigneeAccountId": "5b10ac8d82e05b22cc7d4ef5",
1379
+ "reporterAccountId": "5b10d3a482e05b22cc7d8b02",
1380
+ "labels": [
1381
+ "bug",
1382
+ "ios",
1383
+ "notifications"
1384
+ ],
1385
+ "componentIds": [],
1386
+ "fixVersionIds": [
1387
+ 3
1388
+ ],
1389
+ "parentKey": null,
1390
+ "storyPoints": 5,
1391
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-7",
1392
+ "resolution": "Done",
1393
+ "resolutionDate": "2024-06-10T14:00:00.000Z",
1394
+ "createdAt": "2024-06-01T08:00:00.000Z",
1395
+ "updatedAt": "2024-06-10T14:00:00.000Z"
256
1396
  },
257
1397
  {
258
- "id": 23, "key": "MOBILE-8", "projectId": 2, "issueTypeId": 7, "summary": "Deep link handling for Android 14", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Update deep link handling to comply with Android 14 intent filter changes." }] }] },
259
- "statusId": 6, "priorityId": 2, "assigneeAccountId": "5b10d3a482e05b22cc7d8b02", "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
260
- "labels": ["mobile", "android"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 5,
261
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-8", "resolution": null, "resolutionDate": null,
262
- "createdAt": "2024-06-19T09:00:00.000Z", "updatedAt": "2024-06-20T11:00:00.000Z"
1398
+ "id": 23,
1399
+ "key": "MOBILE-8",
1400
+ "projectId": 2,
1401
+ "issueTypeId": 7,
1402
+ "summary": "Deep link handling for Android 14",
1403
+ "description": {
1404
+ "type": "doc",
1405
+ "version": 1,
1406
+ "content": [
1407
+ {
1408
+ "type": "paragraph",
1409
+ "content": [
1410
+ {
1411
+ "type": "text",
1412
+ "text": "Update deep link handling to comply with Android 14 intent filter changes."
1413
+ }
1414
+ ]
1415
+ }
1416
+ ]
1417
+ },
1418
+ "statusId": 6,
1419
+ "priorityId": 2,
1420
+ "assigneeAccountId": "5b10d3a482e05b22cc7d8b02",
1421
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
1422
+ "labels": [
1423
+ "mobile",
1424
+ "android"
1425
+ ],
1426
+ "componentIds": [],
1427
+ "fixVersionIds": [],
1428
+ "parentKey": null,
1429
+ "storyPoints": 5,
1430
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-8",
1431
+ "resolution": null,
1432
+ "resolutionDate": null,
1433
+ "createdAt": "2024-06-19T09:00:00.000Z",
1434
+ "updatedAt": "2024-06-20T11:00:00.000Z"
263
1435
  },
264
1436
  {
265
- "id": 24, "key": "OPS-4", "projectId": 3, "issueTypeId": 9, "summary": "Set up Grafana dashboards for production monitoring", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Create Grafana dashboards for CPU, memory, request latency, and error rates. Include alerting thresholds." }] }] },
266
- "statusId": 9, "priorityId": 2, "assigneeAccountId": "5b10f2c482e05b22cc7d9a01", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
267
- "labels": ["infra", "monitoring"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 5,
268
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-4", "resolution": null, "resolutionDate": null,
269
- "createdAt": "2024-06-15T09:00:00.000Z", "updatedAt": "2024-06-20T10:00:00.000Z"
1437
+ "id": 24,
1438
+ "key": "OPS-4",
1439
+ "projectId": 3,
1440
+ "issueTypeId": 9,
1441
+ "summary": "Set up Grafana dashboards for production monitoring",
1442
+ "description": {
1443
+ "type": "doc",
1444
+ "version": 1,
1445
+ "content": [
1446
+ {
1447
+ "type": "paragraph",
1448
+ "content": [
1449
+ {
1450
+ "type": "text",
1451
+ "text": "Create Grafana dashboards for CPU, memory, request latency, and error rates. Include alerting thresholds."
1452
+ }
1453
+ ]
1454
+ }
1455
+ ]
1456
+ },
1457
+ "statusId": 9,
1458
+ "priorityId": 2,
1459
+ "assigneeAccountId": "5b10f2c482e05b22cc7d9a01",
1460
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
1461
+ "labels": [
1462
+ "infra",
1463
+ "monitoring"
1464
+ ],
1465
+ "componentIds": [],
1466
+ "fixVersionIds": [],
1467
+ "parentKey": null,
1468
+ "storyPoints": 5,
1469
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-4",
1470
+ "resolution": null,
1471
+ "resolutionDate": null,
1472
+ "createdAt": "2024-06-15T09:00:00.000Z",
1473
+ "updatedAt": "2024-06-20T10:00:00.000Z"
270
1474
  },
271
1475
  {
272
- "id": 25, "key": "OPS-5", "projectId": 3, "issueTypeId": 9, "summary": "Implement automated database backup verification", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Add automated restore-and-verify for nightly database backups. Alert if backup is older than 24h or restore fails." }] }] },
273
- "statusId": 10, "priorityId": 3, "assigneeAccountId": "5b10e5b682e05b22cc7d7c03", "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
274
- "labels": ["infra", "database", "backups"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 5,
275
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-5", "resolution": "Done", "resolutionDate": "2024-06-01T16:00:00.000Z",
276
- "createdAt": "2024-05-15T09:00:00.000Z", "updatedAt": "2024-06-01T16:00:00.000Z"
1476
+ "id": 25,
1477
+ "key": "OPS-5",
1478
+ "projectId": 3,
1479
+ "issueTypeId": 9,
1480
+ "summary": "Implement automated database backup verification",
1481
+ "description": {
1482
+ "type": "doc",
1483
+ "version": 1,
1484
+ "content": [
1485
+ {
1486
+ "type": "paragraph",
1487
+ "content": [
1488
+ {
1489
+ "type": "text",
1490
+ "text": "Add automated restore-and-verify for nightly database backups. Alert if backup is older than 24h or restore fails."
1491
+ }
1492
+ ]
1493
+ }
1494
+ ]
1495
+ },
1496
+ "statusId": 10,
1497
+ "priorityId": 3,
1498
+ "assigneeAccountId": "5b10e5b682e05b22cc7d7c03",
1499
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
1500
+ "labels": [
1501
+ "infra",
1502
+ "database",
1503
+ "backups"
1504
+ ],
1505
+ "componentIds": [],
1506
+ "fixVersionIds": [],
1507
+ "parentKey": null,
1508
+ "storyPoints": 5,
1509
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-5",
1510
+ "resolution": "Done",
1511
+ "resolutionDate": "2024-06-01T16:00:00.000Z",
1512
+ "createdAt": "2024-05-15T09:00:00.000Z",
1513
+ "updatedAt": "2024-06-01T16:00:00.000Z"
277
1514
  },
278
1515
  {
279
- "id": 26, "key": "OPS-6", "projectId": 3, "issueTypeId": 10, "summary": "Terraform plan fails on staging with provider version mismatch", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Terraform plan on staging environment fails with 'provider version constraint not met'. Likely caused by lock file drift." }] }] },
280
- "statusId": 10, "priorityId": 2, "assigneeAccountId": "5b10f2c482e05b22cc7d9a01", "reporterAccountId": "5b10e5b682e05b22cc7d7c03",
281
- "labels": ["bug", "infra", "terraform"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 2,
282
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-6", "resolution": "Done", "resolutionDate": "2024-06-05T11:00:00.000Z",
283
- "createdAt": "2024-06-03T10:00:00.000Z", "updatedAt": "2024-06-05T11:00:00.000Z"
1516
+ "id": 26,
1517
+ "key": "OPS-6",
1518
+ "projectId": 3,
1519
+ "issueTypeId": 10,
1520
+ "summary": "Terraform plan fails on staging with provider version mismatch",
1521
+ "description": {
1522
+ "type": "doc",
1523
+ "version": 1,
1524
+ "content": [
1525
+ {
1526
+ "type": "paragraph",
1527
+ "content": [
1528
+ {
1529
+ "type": "text",
1530
+ "text": "Terraform plan on staging environment fails with 'provider version constraint not met'. Likely caused by lock file drift."
1531
+ }
1532
+ ]
1533
+ }
1534
+ ]
1535
+ },
1536
+ "statusId": 10,
1537
+ "priorityId": 2,
1538
+ "assigneeAccountId": "5b10f2c482e05b22cc7d9a01",
1539
+ "reporterAccountId": "5b10e5b682e05b22cc7d7c03",
1540
+ "labels": [
1541
+ "bug",
1542
+ "infra",
1543
+ "terraform"
1544
+ ],
1545
+ "componentIds": [],
1546
+ "fixVersionIds": [],
1547
+ "parentKey": null,
1548
+ "storyPoints": 2,
1549
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-6",
1550
+ "resolution": "Done",
1551
+ "resolutionDate": "2024-06-05T11:00:00.000Z",
1552
+ "createdAt": "2024-06-03T10:00:00.000Z",
1553
+ "updatedAt": "2024-06-05T11:00:00.000Z"
284
1554
  },
285
1555
  {
286
- "id": 27, "key": "OPS-7", "projectId": 3, "issueTypeId": 9, "summary": "Automate secret rotation for database credentials", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Implement automated rotation of database credentials using Vault's dynamic secrets engine. Zero-downtime rotation." }] }] },
287
- "statusId": 8, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
288
- "labels": ["infra", "security", "vault"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 8,
289
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-7", "resolution": null, "resolutionDate": null,
290
- "createdAt": "2024-06-10T09:00:00.000Z", "updatedAt": "2024-06-10T09:00:00.000Z"
1556
+ "id": 27,
1557
+ "key": "OPS-7",
1558
+ "projectId": 3,
1559
+ "issueTypeId": 9,
1560
+ "summary": "Automate secret rotation for database credentials",
1561
+ "description": {
1562
+ "type": "doc",
1563
+ "version": 1,
1564
+ "content": [
1565
+ {
1566
+ "type": "paragraph",
1567
+ "content": [
1568
+ {
1569
+ "type": "text",
1570
+ "text": "Implement automated rotation of database credentials using Vault's dynamic secrets engine. Zero-downtime rotation."
1571
+ }
1572
+ ]
1573
+ }
1574
+ ]
1575
+ },
1576
+ "statusId": 8,
1577
+ "priorityId": 3,
1578
+ "assigneeAccountId": null,
1579
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
1580
+ "labels": [
1581
+ "infra",
1582
+ "security",
1583
+ "vault"
1584
+ ],
1585
+ "componentIds": [],
1586
+ "fixVersionIds": [],
1587
+ "parentKey": null,
1588
+ "storyPoints": 8,
1589
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-7",
1590
+ "resolution": null,
1591
+ "resolutionDate": null,
1592
+ "createdAt": "2024-06-10T09:00:00.000Z",
1593
+ "updatedAt": "2024-06-10T09:00:00.000Z"
291
1594
  },
292
1595
  {
293
- "id": 28, "key": "PLAT-13", "projectId": 1, "issueTypeId": 2, "summary": "GraphQL API layer for mobile clients", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Add a GraphQL endpoint that wraps existing REST APIs. Mobile team needs this for efficient data fetching." }] }] },
294
- "statusId": 1, "priorityId": 2, "assigneeAccountId": null, "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
295
- "labels": ["platform", "api"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 13,
296
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-13", "resolution": null, "resolutionDate": null,
297
- "createdAt": "2024-06-20T09:00:00.000Z", "updatedAt": "2024-06-20T09:00:00.000Z"
1596
+ "id": 28,
1597
+ "key": "PLAT-13",
1598
+ "projectId": 1,
1599
+ "issueTypeId": 2,
1600
+ "summary": "GraphQL API layer for mobile clients",
1601
+ "description": {
1602
+ "type": "doc",
1603
+ "version": 1,
1604
+ "content": [
1605
+ {
1606
+ "type": "paragraph",
1607
+ "content": [
1608
+ {
1609
+ "type": "text",
1610
+ "text": "Add a GraphQL endpoint that wraps existing REST APIs. Mobile team needs this for efficient data fetching."
1611
+ }
1612
+ ]
1613
+ }
1614
+ ]
1615
+ },
1616
+ "statusId": 1,
1617
+ "priorityId": 2,
1618
+ "assigneeAccountId": null,
1619
+ "reporterAccountId": "5b10ac8d82e05b22cc7d4ef5",
1620
+ "labels": [
1621
+ "platform",
1622
+ "api"
1623
+ ],
1624
+ "componentIds": [],
1625
+ "fixVersionIds": [],
1626
+ "parentKey": null,
1627
+ "storyPoints": 13,
1628
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-13",
1629
+ "resolution": null,
1630
+ "resolutionDate": null,
1631
+ "createdAt": "2024-06-20T09:00:00.000Z",
1632
+ "updatedAt": "2024-06-20T09:00:00.000Z"
298
1633
  },
299
1634
  {
300
- "id": 29, "key": "OPS-8", "projectId": 3, "issueTypeId": 12, "summary": "Configure Vault namespaces per environment", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Set up separate Vault namespaces for dev, staging, and production environments." }] }] },
301
- "statusId": 8, "priorityId": 3, "assigneeAccountId": null, "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
302
- "labels": ["infra", "vault"], "componentIds": [], "fixVersionIds": [], "parentKey": "OPS-3", "storyPoints": 3,
303
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-8", "resolution": null, "resolutionDate": null,
304
- "createdAt": "2024-06-05T09:00:00.000Z", "updatedAt": "2024-06-05T09:00:00.000Z"
1635
+ "id": 29,
1636
+ "key": "OPS-8",
1637
+ "projectId": 3,
1638
+ "issueTypeId": 12,
1639
+ "summary": "Configure Vault namespaces per environment",
1640
+ "description": {
1641
+ "type": "doc",
1642
+ "version": 1,
1643
+ "content": [
1644
+ {
1645
+ "type": "paragraph",
1646
+ "content": [
1647
+ {
1648
+ "type": "text",
1649
+ "text": "Set up separate Vault namespaces for dev, staging, and production environments."
1650
+ }
1651
+ ]
1652
+ }
1653
+ ]
1654
+ },
1655
+ "statusId": 8,
1656
+ "priorityId": 3,
1657
+ "assigneeAccountId": null,
1658
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
1659
+ "labels": [
1660
+ "infra",
1661
+ "vault"
1662
+ ],
1663
+ "componentIds": [],
1664
+ "fixVersionIds": [],
1665
+ "parentKey": "OPS-3",
1666
+ "storyPoints": 3,
1667
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-8",
1668
+ "resolution": null,
1669
+ "resolutionDate": null,
1670
+ "createdAt": "2024-06-05T09:00:00.000Z",
1671
+ "updatedAt": "2024-06-05T09:00:00.000Z"
305
1672
  },
306
1673
  {
307
- "id": 30, "key": "OPS-9", "projectId": 3, "issueTypeId": 9, "summary": "Log aggregation with OpenSearch", "description": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Set up OpenSearch for centralized log aggregation. Configure Fluentd daemonsets on all K8s nodes." }] }] },
308
- "statusId": 8, "priorityId": 4, "assigneeAccountId": null, "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
309
- "labels": ["infra", "logging"], "componentIds": [], "fixVersionIds": [], "parentKey": null, "storyPoints": 8,
310
- "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-9", "resolution": null, "resolutionDate": null,
311
- "createdAt": "2024-06-08T09:00:00.000Z", "updatedAt": "2024-06-08T09:00:00.000Z"
1674
+ "id": 30,
1675
+ "key": "OPS-9",
1676
+ "projectId": 3,
1677
+ "issueTypeId": 9,
1678
+ "summary": "Log aggregation with OpenSearch",
1679
+ "description": {
1680
+ "type": "doc",
1681
+ "version": 1,
1682
+ "content": [
1683
+ {
1684
+ "type": "paragraph",
1685
+ "content": [
1686
+ {
1687
+ "type": "text",
1688
+ "text": "Set up OpenSearch for centralized log aggregation. Configure Fluentd daemonsets on all K8s nodes."
1689
+ }
1690
+ ]
1691
+ }
1692
+ ]
1693
+ },
1694
+ "statusId": 8,
1695
+ "priorityId": 4,
1696
+ "assigneeAccountId": null,
1697
+ "reporterAccountId": "5b10f2c482e05b22cc7d9a01",
1698
+ "labels": [
1699
+ "infra",
1700
+ "logging"
1701
+ ],
1702
+ "componentIds": [],
1703
+ "fixVersionIds": [],
1704
+ "parentKey": null,
1705
+ "storyPoints": 8,
1706
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-9",
1707
+ "resolution": null,
1708
+ "resolutionDate": null,
1709
+ "createdAt": "2024-06-08T09:00:00.000Z",
1710
+ "updatedAt": "2024-06-08T09:00:00.000Z"
312
1711
  }
313
1712
  ],
314
1713
  "comments": [
315
1714
  {
316
- "id": 1, "issueId": 4, "authorAccountId": "5b10a2844c20165700ede21g", "updateAuthorAccountId": "5b10a2844c20165700ede21g",
317
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "I can reproduce this consistently. The leak appears to be in the prepared statement cache — statements aren't being evicted when connections return to the pool." }] }] },
1715
+ "id": 1,
1716
+ "issueId": 4,
1717
+ "authorAccountId": "5b10a2844c20165700ede21g",
1718
+ "updateAuthorAccountId": "5b10a2844c20165700ede21g",
1719
+ "body": {
1720
+ "type": "doc",
1721
+ "version": 1,
1722
+ "content": [
1723
+ {
1724
+ "type": "paragraph",
1725
+ "content": [
1726
+ {
1727
+ "type": "text",
1728
+ "text": "I can reproduce this consistently. The leak appears to be in the prepared statement cache \u2014 statements aren't being evicted when connections return to the pool."
1729
+ }
1730
+ ]
1731
+ }
1732
+ ]
1733
+ },
318
1734
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-4/comment/10000",
319
- "createdAt": "2024-06-11T09:00:00.000Z", "updatedAt": "2024-06-11T09:00:00.000Z"
1735
+ "createdAt": "2024-06-11T09:00:00.000Z",
1736
+ "updatedAt": "2024-06-11T09:00:00.000Z"
320
1737
  },
321
1738
  {
322
- "id": 2, "issueId": 4, "authorAccountId": "5b10f2c482e05b22cc7d9a01", "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
323
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "This may be related to the pg driver upgrade in PLAT-5. The new driver changed how prepared statement handles are managed. Let me check the release notes." }] }] },
1739
+ "id": 2,
1740
+ "issueId": 4,
1741
+ "authorAccountId": "5b10f2c482e05b22cc7d9a01",
1742
+ "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
1743
+ "body": {
1744
+ "type": "doc",
1745
+ "version": 1,
1746
+ "content": [
1747
+ {
1748
+ "type": "paragraph",
1749
+ "content": [
1750
+ {
1751
+ "type": "text",
1752
+ "text": "This may be related to the pg driver upgrade in PLAT-5. The new driver changed how prepared statement handles are managed. Let me check the release notes."
1753
+ }
1754
+ ]
1755
+ }
1756
+ ]
1757
+ },
324
1758
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-4/comment/10001",
325
- "createdAt": "2024-06-11T11:30:00.000Z", "updatedAt": "2024-06-11T11:30:00.000Z"
1759
+ "createdAt": "2024-06-11T11:30:00.000Z",
1760
+ "updatedAt": "2024-06-11T11:30:00.000Z"
326
1761
  },
327
1762
  {
328
- "id": 3, "issueId": 2, "authorAccountId": "5b10d3a482e05b22cc7d8b02", "updateAuthorAccountId": "5b10d3a482e05b22cc7d8b02",
329
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "PR is up for review. I've added both user token and service account token validation. Need someone from the platform team to verify the scope hierarchy." }] }] },
1763
+ "id": 3,
1764
+ "issueId": 2,
1765
+ "authorAccountId": "5b10d3a482e05b22cc7d8b02",
1766
+ "updateAuthorAccountId": "5b10d3a482e05b22cc7d8b02",
1767
+ "body": {
1768
+ "type": "doc",
1769
+ "version": 1,
1770
+ "content": [
1771
+ {
1772
+ "type": "paragraph",
1773
+ "content": [
1774
+ {
1775
+ "type": "text",
1776
+ "text": "PR is up for review. I've added both user token and service account token validation. Need someone from the platform team to verify the scope hierarchy."
1777
+ }
1778
+ ]
1779
+ }
1780
+ ]
1781
+ },
330
1782
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-2/comment/10002",
331
- "createdAt": "2024-06-17T15:00:00.000Z", "updatedAt": "2024-06-17T15:00:00.000Z"
1783
+ "createdAt": "2024-06-17T15:00:00.000Z",
1784
+ "updatedAt": "2024-06-17T15:00:00.000Z"
332
1785
  },
333
1786
  {
334
- "id": 4, "issueId": 13, "authorAccountId": "5b10e5b682e05b22cc7d7c03", "updateAuthorAccountId": "5b10e5b682e05b22cc7d7c03",
335
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Found it — the test database container has max_connections=100 but we're running 8 parallel test suites each opening 15 connections. Increasing to 200 and adding connection timeouts." }] }] },
1787
+ "id": 4,
1788
+ "issueId": 13,
1789
+ "authorAccountId": "5b10e5b682e05b22cc7d7c03",
1790
+ "updateAuthorAccountId": "5b10e5b682e05b22cc7d7c03",
1791
+ "body": {
1792
+ "type": "doc",
1793
+ "version": 1,
1794
+ "content": [
1795
+ {
1796
+ "type": "paragraph",
1797
+ "content": [
1798
+ {
1799
+ "type": "text",
1800
+ "text": "Found it \u2014 the test database container has max_connections=100 but we're running 8 parallel test suites each opening 15 connections. Increasing to 200 and adding connection timeouts."
1801
+ }
1802
+ ]
1803
+ }
1804
+ ]
1805
+ },
336
1806
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-2/comment/10003",
337
- "createdAt": "2024-06-19T14:00:00.000Z", "updatedAt": "2024-06-19T14:00:00.000Z"
1807
+ "createdAt": "2024-06-19T14:00:00.000Z",
1808
+ "updatedAt": "2024-06-19T14:00:00.000Z"
338
1809
  },
339
1810
  {
340
- "id": 5, "issueId": 15, "authorAccountId": "5b10a2844c20165700ede21g", "updateAuthorAccountId": "5b10a2844c20165700ede21g",
341
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Make sure to cover both user token and service account token edge cases in the tests." }] }] },
1811
+ "id": 5,
1812
+ "issueId": 15,
1813
+ "authorAccountId": "5b10a2844c20165700ede21g",
1814
+ "updateAuthorAccountId": "5b10a2844c20165700ede21g",
1815
+ "body": {
1816
+ "type": "doc",
1817
+ "version": 1,
1818
+ "content": [
1819
+ {
1820
+ "type": "paragraph",
1821
+ "content": [
1822
+ {
1823
+ "type": "text",
1824
+ "text": "Make sure to cover both user token and service account token edge cases in the tests."
1825
+ }
1826
+ ]
1827
+ }
1828
+ ]
1829
+ },
342
1830
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-8/comment/10004",
343
- "createdAt": "2024-06-16T09:00:00.000Z", "updatedAt": "2024-06-16T09:00:00.000Z"
1831
+ "createdAt": "2024-06-16T09:00:00.000Z",
1832
+ "updatedAt": "2024-06-16T09:00:00.000Z"
344
1833
  },
345
1834
  {
346
- "id": 6, "issueId": 10, "authorAccountId": "5b10ac8d82e05b22cc7d4ef5", "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
347
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Confirmed crash on Pixel 7 running Android 13. Stack trace attached. Workaround: explicit intent instead of implicit." }] }] },
1835
+ "id": 6,
1836
+ "issueId": 10,
1837
+ "authorAccountId": "5b10ac8d82e05b22cc7d4ef5",
1838
+ "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
1839
+ "body": {
1840
+ "type": "doc",
1841
+ "version": 1,
1842
+ "content": [
1843
+ {
1844
+ "type": "paragraph",
1845
+ "content": [
1846
+ {
1847
+ "type": "text",
1848
+ "text": "Confirmed crash on Pixel 7 running Android 13. Stack trace attached. Workaround: explicit intent instead of implicit."
1849
+ }
1850
+ ]
1851
+ }
1852
+ ]
1853
+ },
348
1854
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-3/comment/10005",
349
- "createdAt": "2024-06-18T16:00:00.000Z", "updatedAt": "2024-06-18T16:00:00.000Z"
1855
+ "createdAt": "2024-06-18T16:00:00.000Z",
1856
+ "updatedAt": "2024-06-18T16:00:00.000Z"
350
1857
  },
351
1858
  {
352
- "id": 7, "issueId": 22, "authorAccountId": "5b10ac8d82e05b22cc7d4ef5", "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
353
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Root cause: APNs environment mismatch after app store update. Production cert was referencing sandbox endpoint." }] }] },
1859
+ "id": 7,
1860
+ "issueId": 22,
1861
+ "authorAccountId": "5b10ac8d82e05b22cc7d4ef5",
1862
+ "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
1863
+ "body": {
1864
+ "type": "doc",
1865
+ "version": 1,
1866
+ "content": [
1867
+ {
1868
+ "type": "paragraph",
1869
+ "content": [
1870
+ {
1871
+ "type": "text",
1872
+ "text": "Root cause: APNs environment mismatch after app store update. Production cert was referencing sandbox endpoint."
1873
+ }
1874
+ ]
1875
+ }
1876
+ ]
1877
+ },
354
1878
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-7/comment/10006",
355
- "createdAt": "2024-06-08T10:00:00.000Z", "updatedAt": "2024-06-08T10:00:00.000Z"
1879
+ "createdAt": "2024-06-08T10:00:00.000Z",
1880
+ "updatedAt": "2024-06-08T10:00:00.000Z"
356
1881
  },
357
1882
  {
358
- "id": 8, "issueId": 24, "authorAccountId": "5b10f2c482e05b22cc7d9a01", "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
359
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Using Grafana Cloud for this. Prometheus metrics already being scraped. Need to create dashboard JSON." }] }] },
1883
+ "id": 8,
1884
+ "issueId": 24,
1885
+ "authorAccountId": "5b10f2c482e05b22cc7d9a01",
1886
+ "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
1887
+ "body": {
1888
+ "type": "doc",
1889
+ "version": 1,
1890
+ "content": [
1891
+ {
1892
+ "type": "paragraph",
1893
+ "content": [
1894
+ {
1895
+ "type": "text",
1896
+ "text": "Using Grafana Cloud for this. Prometheus metrics already being scraped. Need to create dashboard JSON."
1897
+ }
1898
+ ]
1899
+ }
1900
+ ]
1901
+ },
360
1902
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-4/comment/10007",
361
- "createdAt": "2024-06-16T14:00:00.000Z", "updatedAt": "2024-06-16T14:00:00.000Z"
1903
+ "createdAt": "2024-06-16T14:00:00.000Z",
1904
+ "updatedAt": "2024-06-16T14:00:00.000Z"
362
1905
  },
363
1906
  {
364
- "id": 9, "issueId": 19, "authorAccountId": "5b10d3a482e05b22cc7d8b02", "updateAuthorAccountId": "5b10d3a482e05b22cc7d8b02",
365
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Should we use Redis Cluster or Redis Sentinel? Cluster gives us better scaling but more complexity." }] }] },
1907
+ "id": 9,
1908
+ "issueId": 19,
1909
+ "authorAccountId": "5b10d3a482e05b22cc7d8b02",
1910
+ "updateAuthorAccountId": "5b10d3a482e05b22cc7d8b02",
1911
+ "body": {
1912
+ "type": "doc",
1913
+ "version": 1,
1914
+ "content": [
1915
+ {
1916
+ "type": "paragraph",
1917
+ "content": [
1918
+ {
1919
+ "type": "text",
1920
+ "text": "Should we use Redis Cluster or Redis Sentinel? Cluster gives us better scaling but more complexity."
1921
+ }
1922
+ ]
1923
+ }
1924
+ ]
1925
+ },
366
1926
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-12/comment/10008",
367
- "createdAt": "2024-06-20T10:00:00.000Z", "updatedAt": "2024-06-20T10:00:00.000Z"
1927
+ "createdAt": "2024-06-20T10:00:00.000Z",
1928
+ "updatedAt": "2024-06-20T10:00:00.000Z"
368
1929
  },
369
1930
  {
370
- "id": 10, "issueId": 19, "authorAccountId": "5b10a2844c20165700ede21g", "updateAuthorAccountId": "5b10a2844c20165700ede21g",
371
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Start with Sentinel. We can migrate to Cluster when we actually need the throughput." }] }] },
1931
+ "id": 10,
1932
+ "issueId": 19,
1933
+ "authorAccountId": "5b10a2844c20165700ede21g",
1934
+ "updateAuthorAccountId": "5b10a2844c20165700ede21g",
1935
+ "body": {
1936
+ "type": "doc",
1937
+ "version": 1,
1938
+ "content": [
1939
+ {
1940
+ "type": "paragraph",
1941
+ "content": [
1942
+ {
1943
+ "type": "text",
1944
+ "text": "Start with Sentinel. We can migrate to Cluster when we actually need the throughput."
1945
+ }
1946
+ ]
1947
+ }
1948
+ ]
1949
+ },
372
1950
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-12/comment/10009",
373
- "createdAt": "2024-06-20T11:00:00.000Z", "updatedAt": "2024-06-20T11:00:00.000Z"
1951
+ "createdAt": "2024-06-20T11:00:00.000Z",
1952
+ "updatedAt": "2024-06-20T11:00:00.000Z"
374
1953
  },
375
1954
  {
376
- "id": 11, "issueId": 26, "authorAccountId": "5b10f2c482e05b22cc7d9a01", "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
377
- "body": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Fixed by running terraform init -upgrade. Lock file was pinned to an old provider version." }] }] },
1955
+ "id": 11,
1956
+ "issueId": 26,
1957
+ "authorAccountId": "5b10f2c482e05b22cc7d9a01",
1958
+ "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
1959
+ "body": {
1960
+ "type": "doc",
1961
+ "version": 1,
1962
+ "content": [
1963
+ {
1964
+ "type": "paragraph",
1965
+ "content": [
1966
+ {
1967
+ "type": "text",
1968
+ "text": "Fixed by running terraform init -upgrade. Lock file was pinned to an old provider version."
1969
+ }
1970
+ ]
1971
+ }
1972
+ ]
1973
+ },
378
1974
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-6/comment/10010",
379
- "createdAt": "2024-06-05T10:00:00.000Z", "updatedAt": "2024-06-05T10:00:00.000Z"
1975
+ "createdAt": "2024-06-05T10:00:00.000Z",
1976
+ "updatedAt": "2024-06-05T10:00:00.000Z"
380
1977
  }
381
1978
  ],
382
1979
  "transitions": [
383
- { "id": 1, "name": "Start Progress", "toStatusId": 2, "projectId": 1, "fromStatusIds": [1], "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
384
- { "id": 2, "name": "Request Review", "toStatusId": 3, "projectId": 1, "fromStatusIds": [2], "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
385
- { "id": 3, "name": "Done", "toStatusId": 4, "projectId": 1, "fromStatusIds": [2, 3], "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
386
- { "id": 4, "name": "Reopen", "toStatusId": 1, "projectId": 1, "fromStatusIds": [2, 3, 4], "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
387
- { "id": 5, "name": "Back to In Progress", "toStatusId": 2, "projectId": 1, "fromStatusIds": [3], "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
388
- { "id": 6, "name": "Start Progress", "toStatusId": 6, "projectId": 2, "fromStatusIds": [5], "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
389
- { "id": 7, "name": "Done", "toStatusId": 7, "projectId": 2, "fromStatusIds": [5, 6], "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
390
- { "id": 8, "name": "Reopen", "toStatusId": 5, "projectId": 2, "fromStatusIds": [6, 7], "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
391
- { "id": 9, "name": "Start Progress", "toStatusId": 9, "projectId": 3, "fromStatusIds": [8], "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" },
392
- { "id": 10, "name": "Done", "toStatusId": 10, "projectId": 3, "fromStatusIds": [8, 9], "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" },
393
- { "id": 11, "name": "Reopen", "toStatusId": 8, "projectId": 3, "fromStatusIds": [9, 10], "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" }
1980
+ {
1981
+ "id": 1,
1982
+ "name": "Start Progress",
1983
+ "toStatusId": 2,
1984
+ "projectId": 1,
1985
+ "fromStatusIds": [
1986
+ 1
1987
+ ],
1988
+ "createdAt": "2023-01-15T00:00:00.000Z",
1989
+ "updatedAt": "2023-01-15T00:00:00.000Z"
1990
+ },
1991
+ {
1992
+ "id": 2,
1993
+ "name": "Request Review",
1994
+ "toStatusId": 3,
1995
+ "projectId": 1,
1996
+ "fromStatusIds": [
1997
+ 2
1998
+ ],
1999
+ "createdAt": "2023-01-15T00:00:00.000Z",
2000
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2001
+ },
2002
+ {
2003
+ "id": 3,
2004
+ "name": "Done",
2005
+ "toStatusId": 4,
2006
+ "projectId": 1,
2007
+ "fromStatusIds": [
2008
+ 2,
2009
+ 3
2010
+ ],
2011
+ "createdAt": "2023-01-15T00:00:00.000Z",
2012
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2013
+ },
2014
+ {
2015
+ "id": 4,
2016
+ "name": "Reopen",
2017
+ "toStatusId": 1,
2018
+ "projectId": 1,
2019
+ "fromStatusIds": [
2020
+ 2,
2021
+ 3,
2022
+ 4
2023
+ ],
2024
+ "createdAt": "2023-01-15T00:00:00.000Z",
2025
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2026
+ },
2027
+ {
2028
+ "id": 5,
2029
+ "name": "Back to In Progress",
2030
+ "toStatusId": 2,
2031
+ "projectId": 1,
2032
+ "fromStatusIds": [
2033
+ 3
2034
+ ],
2035
+ "createdAt": "2023-01-15T00:00:00.000Z",
2036
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2037
+ },
2038
+ {
2039
+ "id": 6,
2040
+ "name": "Start Progress",
2041
+ "toStatusId": 6,
2042
+ "projectId": 2,
2043
+ "fromStatusIds": [
2044
+ 5
2045
+ ],
2046
+ "createdAt": "2023-06-01T00:00:00.000Z",
2047
+ "updatedAt": "2023-06-01T00:00:00.000Z"
2048
+ },
2049
+ {
2050
+ "id": 7,
2051
+ "name": "Done",
2052
+ "toStatusId": 7,
2053
+ "projectId": 2,
2054
+ "fromStatusIds": [
2055
+ 5,
2056
+ 6
2057
+ ],
2058
+ "createdAt": "2023-06-01T00:00:00.000Z",
2059
+ "updatedAt": "2023-06-01T00:00:00.000Z"
2060
+ },
2061
+ {
2062
+ "id": 8,
2063
+ "name": "Reopen",
2064
+ "toStatusId": 5,
2065
+ "projectId": 2,
2066
+ "fromStatusIds": [
2067
+ 6,
2068
+ 7
2069
+ ],
2070
+ "createdAt": "2023-06-01T00:00:00.000Z",
2071
+ "updatedAt": "2023-06-01T00:00:00.000Z"
2072
+ },
2073
+ {
2074
+ "id": 9,
2075
+ "name": "Start Progress",
2076
+ "toStatusId": 9,
2077
+ "projectId": 3,
2078
+ "fromStatusIds": [
2079
+ 8
2080
+ ],
2081
+ "createdAt": "2023-09-01T00:00:00.000Z",
2082
+ "updatedAt": "2023-09-01T00:00:00.000Z"
2083
+ },
2084
+ {
2085
+ "id": 10,
2086
+ "name": "Done",
2087
+ "toStatusId": 10,
2088
+ "projectId": 3,
2089
+ "fromStatusIds": [
2090
+ 8,
2091
+ 9
2092
+ ],
2093
+ "createdAt": "2023-09-01T00:00:00.000Z",
2094
+ "updatedAt": "2023-09-01T00:00:00.000Z"
2095
+ },
2096
+ {
2097
+ "id": 11,
2098
+ "name": "Reopen",
2099
+ "toStatusId": 8,
2100
+ "projectId": 3,
2101
+ "fromStatusIds": [
2102
+ 9,
2103
+ 10
2104
+ ],
2105
+ "createdAt": "2023-09-01T00:00:00.000Z",
2106
+ "updatedAt": "2023-09-01T00:00:00.000Z"
2107
+ }
394
2108
  ],
395
2109
  "boards": [
396
- { "id": 1, "name": "Platform Board", "type": "scrum", "projectId": 1, "self": "https://acmecorp.atlassian.net/rest/agile/1.0/board/1", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
397
- { "id": 2, "name": "Mobile Board", "type": "scrum", "projectId": 2, "self": "https://acmecorp.atlassian.net/rest/agile/1.0/board/2", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
398
- { "id": 3, "name": "DevOps Kanban", "type": "kanban", "projectId": 3, "self": "https://acmecorp.atlassian.net/rest/agile/1.0/board/3", "createdAt": "2023-09-01T00:00:00.000Z", "updatedAt": "2023-09-01T00:00:00.000Z" }
2110
+ {
2111
+ "id": 1,
2112
+ "name": "Platform Board",
2113
+ "type": "scrum",
2114
+ "projectId": 1,
2115
+ "self": "https://acmecorp.atlassian.net/rest/agile/1.0/board/1",
2116
+ "createdAt": "2023-01-15T00:00:00.000Z",
2117
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2118
+ },
2119
+ {
2120
+ "id": 2,
2121
+ "name": "Mobile Board",
2122
+ "type": "scrum",
2123
+ "projectId": 2,
2124
+ "self": "https://acmecorp.atlassian.net/rest/agile/1.0/board/2",
2125
+ "createdAt": "2023-06-01T00:00:00.000Z",
2126
+ "updatedAt": "2023-06-01T00:00:00.000Z"
2127
+ },
2128
+ {
2129
+ "id": 3,
2130
+ "name": "DevOps Kanban",
2131
+ "type": "kanban",
2132
+ "projectId": 3,
2133
+ "self": "https://acmecorp.atlassian.net/rest/agile/1.0/board/3",
2134
+ "createdAt": "2023-09-01T00:00:00.000Z",
2135
+ "updatedAt": "2023-09-01T00:00:00.000Z"
2136
+ }
399
2137
  ],
400
2138
  "sprints": [
401
- { "id": 1, "boardId": 1, "name": "PLAT Sprint 12", "state": "closed", "startDate": "2024-05-13T00:00:00.000Z", "endDate": "2024-05-27T00:00:00.000Z", "completeDate": "2024-05-27T17:00:00.000Z", "goal": "Complete pg driver upgrade and OTel instrumentation", "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/1", "createdAt": "2024-05-12T00:00:00.000Z", "updatedAt": "2024-05-27T17:00:00.000Z" },
402
- { "id": 2, "boardId": 1, "name": "PLAT Sprint 13", "state": "active", "startDate": "2024-06-10T00:00:00.000Z", "endDate": "2024-06-24T00:00:00.000Z", "completeDate": null, "goal": "API Gateway v2: OAuth2 scopes and rate limiting", "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/2", "createdAt": "2024-06-09T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" },
403
- { "id": 3, "boardId": 1, "name": "PLAT Sprint 14", "state": "future", "startDate": null, "endDate": null, "completeDate": null, "goal": "API Gateway v2: request transformation", "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/3", "createdAt": "2024-06-20T00:00:00.000Z", "updatedAt": "2024-06-20T00:00:00.000Z" },
404
- { "id": 4, "boardId": 2, "name": "Mobile Sprint 8", "state": "active", "startDate": "2024-06-10T00:00:00.000Z", "endDate": "2024-06-24T00:00:00.000Z", "completeDate": null, "goal": "Push notification action buttons and Android 13 fix", "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/4", "createdAt": "2024-06-09T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" }
2139
+ {
2140
+ "id": 1,
2141
+ "boardId": 1,
2142
+ "name": "PLAT Sprint 12",
2143
+ "state": "closed",
2144
+ "startDate": "2024-05-13T00:00:00.000Z",
2145
+ "endDate": "2024-05-27T00:00:00.000Z",
2146
+ "completeDate": "2024-05-27T17:00:00.000Z",
2147
+ "goal": "Complete pg driver upgrade and OTel instrumentation",
2148
+ "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/1",
2149
+ "createdAt": "2024-05-12T00:00:00.000Z",
2150
+ "updatedAt": "2024-05-27T17:00:00.000Z"
2151
+ },
2152
+ {
2153
+ "id": 2,
2154
+ "boardId": 1,
2155
+ "name": "PLAT Sprint 13",
2156
+ "state": "active",
2157
+ "startDate": "2024-06-10T00:00:00.000Z",
2158
+ "endDate": "2024-06-24T00:00:00.000Z",
2159
+ "completeDate": null,
2160
+ "goal": "API Gateway v2: OAuth2 scopes and rate limiting",
2161
+ "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/2",
2162
+ "createdAt": "2024-06-09T00:00:00.000Z",
2163
+ "updatedAt": "2024-06-10T00:00:00.000Z"
2164
+ },
2165
+ {
2166
+ "id": 3,
2167
+ "boardId": 1,
2168
+ "name": "PLAT Sprint 14",
2169
+ "state": "future",
2170
+ "startDate": null,
2171
+ "endDate": null,
2172
+ "completeDate": null,
2173
+ "goal": "API Gateway v2: request transformation",
2174
+ "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/3",
2175
+ "createdAt": "2024-06-20T00:00:00.000Z",
2176
+ "updatedAt": "2024-06-20T00:00:00.000Z"
2177
+ },
2178
+ {
2179
+ "id": 4,
2180
+ "boardId": 2,
2181
+ "name": "Mobile Sprint 8",
2182
+ "state": "active",
2183
+ "startDate": "2024-06-10T00:00:00.000Z",
2184
+ "endDate": "2024-06-24T00:00:00.000Z",
2185
+ "completeDate": null,
2186
+ "goal": "Push notification action buttons and Android 13 fix",
2187
+ "self": "https://acmecorp.atlassian.net/rest/agile/1.0/sprint/4",
2188
+ "createdAt": "2024-06-09T00:00:00.000Z",
2189
+ "updatedAt": "2024-06-10T00:00:00.000Z"
2190
+ }
405
2191
  ],
406
2192
  "sprintIssues": [
407
- { "id": 1, "sprintId": 1, "issueId": 5, "createdAt": "2024-05-13T00:00:00.000Z", "updatedAt": "2024-05-13T00:00:00.000Z" },
408
- { "id": 2, "sprintId": 1, "issueId": 6, "createdAt": "2024-05-13T00:00:00.000Z", "updatedAt": "2024-05-13T00:00:00.000Z" },
409
- { "id": 3, "sprintId": 2, "issueId": 2, "createdAt": "2024-06-10T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" },
410
- { "id": 4, "sprintId": 2, "issueId": 3, "createdAt": "2024-06-10T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" },
411
- { "id": 5, "sprintId": 2, "issueId": 4, "createdAt": "2024-06-10T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" },
412
- { "id": 6, "sprintId": 3, "issueId": 7, "createdAt": "2024-06-20T00:00:00.000Z", "updatedAt": "2024-06-20T00:00:00.000Z" },
413
- { "id": 7, "sprintId": 4, "issueId": 10, "createdAt": "2024-06-10T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" },
414
- { "id": 8, "sprintId": 4, "issueId": 11, "createdAt": "2024-06-10T00:00:00.000Z", "updatedAt": "2024-06-10T00:00:00.000Z" }
2193
+ {
2194
+ "id": 1,
2195
+ "sprintId": 1,
2196
+ "issueId": 5,
2197
+ "createdAt": "2024-05-13T00:00:00.000Z",
2198
+ "updatedAt": "2024-05-13T00:00:00.000Z"
2199
+ },
2200
+ {
2201
+ "id": 2,
2202
+ "sprintId": 1,
2203
+ "issueId": 6,
2204
+ "createdAt": "2024-05-13T00:00:00.000Z",
2205
+ "updatedAt": "2024-05-13T00:00:00.000Z"
2206
+ },
2207
+ {
2208
+ "id": 3,
2209
+ "sprintId": 2,
2210
+ "issueId": 2,
2211
+ "createdAt": "2024-06-10T00:00:00.000Z",
2212
+ "updatedAt": "2024-06-10T00:00:00.000Z"
2213
+ },
2214
+ {
2215
+ "id": 4,
2216
+ "sprintId": 2,
2217
+ "issueId": 3,
2218
+ "createdAt": "2024-06-10T00:00:00.000Z",
2219
+ "updatedAt": "2024-06-10T00:00:00.000Z"
2220
+ },
2221
+ {
2222
+ "id": 5,
2223
+ "sprintId": 2,
2224
+ "issueId": 4,
2225
+ "createdAt": "2024-06-10T00:00:00.000Z",
2226
+ "updatedAt": "2024-06-10T00:00:00.000Z"
2227
+ },
2228
+ {
2229
+ "id": 6,
2230
+ "sprintId": 3,
2231
+ "issueId": 7,
2232
+ "createdAt": "2024-06-20T00:00:00.000Z",
2233
+ "updatedAt": "2024-06-20T00:00:00.000Z"
2234
+ },
2235
+ {
2236
+ "id": 7,
2237
+ "sprintId": 4,
2238
+ "issueId": 10,
2239
+ "createdAt": "2024-06-10T00:00:00.000Z",
2240
+ "updatedAt": "2024-06-10T00:00:00.000Z"
2241
+ },
2242
+ {
2243
+ "id": 8,
2244
+ "sprintId": 4,
2245
+ "issueId": 11,
2246
+ "createdAt": "2024-06-10T00:00:00.000Z",
2247
+ "updatedAt": "2024-06-10T00:00:00.000Z"
2248
+ }
415
2249
  ],
416
2250
  "worklogs": [
417
2251
  {
418
- "id": 1, "issueId": 5, "authorAccountId": "5b10f2c482e05b22cc7d9a01", "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
419
- "comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Investigated breaking changes in pg v5, created migration checklist." }] }] },
420
- "started": "2024-05-14T09:00:00.000Z", "timeSpent": "3h", "timeSpentSeconds": 10800,
2252
+ "id": 1,
2253
+ "issueId": 5,
2254
+ "authorAccountId": "5b10f2c482e05b22cc7d9a01",
2255
+ "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
2256
+ "comment": {
2257
+ "type": "doc",
2258
+ "version": 1,
2259
+ "content": [
2260
+ {
2261
+ "type": "paragraph",
2262
+ "content": [
2263
+ {
2264
+ "type": "text",
2265
+ "text": "Investigated breaking changes in pg v5, created migration checklist."
2266
+ }
2267
+ ]
2268
+ }
2269
+ ]
2270
+ },
2271
+ "started": "2024-05-14T09:00:00.000Z",
2272
+ "timeSpent": "3h",
2273
+ "timeSpentSeconds": 10800,
421
2274
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-5/worklog/10000",
422
- "createdAt": "2024-05-14T17:00:00.000Z", "updatedAt": "2024-05-14T17:00:00.000Z"
2275
+ "createdAt": "2024-05-14T17:00:00.000Z",
2276
+ "updatedAt": "2024-05-14T17:00:00.000Z"
423
2277
  },
424
2278
  {
425
- "id": 2, "issueId": 5, "authorAccountId": "5b10f2c482e05b22cc7d9a01", "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
426
- "comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Updated all connection strings and pool configs. Ran full regression suite." }] }] },
427
- "started": "2024-05-20T09:00:00.000Z", "timeSpent": "6h", "timeSpentSeconds": 21600,
2279
+ "id": 2,
2280
+ "issueId": 5,
2281
+ "authorAccountId": "5b10f2c482e05b22cc7d9a01",
2282
+ "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
2283
+ "comment": {
2284
+ "type": "doc",
2285
+ "version": 1,
2286
+ "content": [
2287
+ {
2288
+ "type": "paragraph",
2289
+ "content": [
2290
+ {
2291
+ "type": "text",
2292
+ "text": "Updated all connection strings and pool configs. Ran full regression suite."
2293
+ }
2294
+ ]
2295
+ }
2296
+ ]
2297
+ },
2298
+ "started": "2024-05-20T09:00:00.000Z",
2299
+ "timeSpent": "6h",
2300
+ "timeSpentSeconds": 21600,
428
2301
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-5/worklog/10001",
429
- "createdAt": "2024-05-20T17:00:00.000Z", "updatedAt": "2024-05-20T17:00:00.000Z"
2302
+ "createdAt": "2024-05-20T17:00:00.000Z",
2303
+ "updatedAt": "2024-05-20T17:00:00.000Z"
430
2304
  },
431
2305
  {
432
- "id": 3, "issueId": 2, "authorAccountId": "5b10d3a482e05b22cc7d8b02", "updateAuthorAccountId": "5b10d3a482e05b22cc7d8b02",
433
- "comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Implemented scope validation for user tokens. Service account tokens next." }] }] },
434
- "started": "2024-06-12T09:00:00.000Z", "timeSpent": "4h", "timeSpentSeconds": 14400,
2306
+ "id": 3,
2307
+ "issueId": 2,
2308
+ "authorAccountId": "5b10d3a482e05b22cc7d8b02",
2309
+ "updateAuthorAccountId": "5b10d3a482e05b22cc7d8b02",
2310
+ "comment": {
2311
+ "type": "doc",
2312
+ "version": 1,
2313
+ "content": [
2314
+ {
2315
+ "type": "paragraph",
2316
+ "content": [
2317
+ {
2318
+ "type": "text",
2319
+ "text": "Implemented scope validation for user tokens. Service account tokens next."
2320
+ }
2321
+ ]
2322
+ }
2323
+ ]
2324
+ },
2325
+ "started": "2024-06-12T09:00:00.000Z",
2326
+ "timeSpent": "4h",
2327
+ "timeSpentSeconds": 14400,
435
2328
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-2/worklog/10002",
436
- "createdAt": "2024-06-12T17:00:00.000Z", "updatedAt": "2024-06-12T17:00:00.000Z"
2329
+ "createdAt": "2024-06-12T17:00:00.000Z",
2330
+ "updatedAt": "2024-06-12T17:00:00.000Z"
437
2331
  },
438
2332
  {
439
- "id": 4, "issueId": 12, "authorAccountId": "5b10f2c482e05b22cc7d9a01", "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
440
- "comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Configured HPA and tested with load simulation." }] }] },
441
- "started": "2024-04-15T09:00:00.000Z", "timeSpent": "4h", "timeSpentSeconds": 14400,
2333
+ "id": 4,
2334
+ "issueId": 12,
2335
+ "authorAccountId": "5b10f2c482e05b22cc7d9a01",
2336
+ "updateAuthorAccountId": "5b10f2c482e05b22cc7d9a01",
2337
+ "comment": {
2338
+ "type": "doc",
2339
+ "version": 1,
2340
+ "content": [
2341
+ {
2342
+ "type": "paragraph",
2343
+ "content": [
2344
+ {
2345
+ "type": "text",
2346
+ "text": "Configured HPA and tested with load simulation."
2347
+ }
2348
+ ]
2349
+ }
2350
+ ]
2351
+ },
2352
+ "started": "2024-04-15T09:00:00.000Z",
2353
+ "timeSpent": "4h",
2354
+ "timeSpentSeconds": 14400,
442
2355
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/OPS-1/worklog/10003",
443
- "createdAt": "2024-04-15T17:00:00.000Z", "updatedAt": "2024-04-15T17:00:00.000Z"
2356
+ "createdAt": "2024-04-15T17:00:00.000Z",
2357
+ "updatedAt": "2024-04-15T17:00:00.000Z"
444
2358
  },
445
2359
  {
446
- "id": 5, "issueId": 22, "authorAccountId": "5b10ac8d82e05b22cc7d4ef5", "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
447
- "comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Investigated APNs configuration and fixed certificate environment mismatch." }] }] },
448
- "started": "2024-06-09T09:00:00.000Z", "timeSpent": "3h", "timeSpentSeconds": 10800,
2360
+ "id": 5,
2361
+ "issueId": 22,
2362
+ "authorAccountId": "5b10ac8d82e05b22cc7d4ef5",
2363
+ "updateAuthorAccountId": "5b10ac8d82e05b22cc7d4ef5",
2364
+ "comment": {
2365
+ "type": "doc",
2366
+ "version": 1,
2367
+ "content": [
2368
+ {
2369
+ "type": "paragraph",
2370
+ "content": [
2371
+ {
2372
+ "type": "text",
2373
+ "text": "Investigated APNs configuration and fixed certificate environment mismatch."
2374
+ }
2375
+ ]
2376
+ }
2377
+ ]
2378
+ },
2379
+ "started": "2024-06-09T09:00:00.000Z",
2380
+ "timeSpent": "3h",
2381
+ "timeSpentSeconds": 10800,
449
2382
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/MOBILE-7/worklog/10004",
450
- "createdAt": "2024-06-09T17:00:00.000Z", "updatedAt": "2024-06-09T17:00:00.000Z"
2383
+ "createdAt": "2024-06-09T17:00:00.000Z",
2384
+ "updatedAt": "2024-06-09T17:00:00.000Z"
451
2385
  },
452
2386
  {
453
- "id": 6, "issueId": 18, "authorAccountId": "5b10a2844c20165700ede21g", "updateAuthorAccountId": "5b10a2844c20165700ede21g",
454
- "comment": { "type": "doc", "version": 1, "content": [{ "type": "paragraph", "content": [{ "type": "text", "text": "Fixed CORS headers and added regression tests." }] }] },
455
- "started": "2024-05-19T09:00:00.000Z", "timeSpent": "2h", "timeSpentSeconds": 7200,
2387
+ "id": 6,
2388
+ "issueId": 18,
2389
+ "authorAccountId": "5b10a2844c20165700ede21g",
2390
+ "updateAuthorAccountId": "5b10a2844c20165700ede21g",
2391
+ "comment": {
2392
+ "type": "doc",
2393
+ "version": 1,
2394
+ "content": [
2395
+ {
2396
+ "type": "paragraph",
2397
+ "content": [
2398
+ {
2399
+ "type": "text",
2400
+ "text": "Fixed CORS headers and added regression tests."
2401
+ }
2402
+ ]
2403
+ }
2404
+ ]
2405
+ },
2406
+ "started": "2024-05-19T09:00:00.000Z",
2407
+ "timeSpent": "2h",
2408
+ "timeSpentSeconds": 7200,
456
2409
  "self": "https://acmecorp.atlassian.net/rest/api/3/issue/PLAT-11/worklog/10005",
457
- "createdAt": "2024-05-19T17:00:00.000Z", "updatedAt": "2024-05-19T17:00:00.000Z"
2410
+ "createdAt": "2024-05-19T17:00:00.000Z",
2411
+ "updatedAt": "2024-05-19T17:00:00.000Z"
458
2412
  }
459
2413
  ],
460
2414
  "components": [
461
- { "id": 1, "name": "API Gateway", "description": "API gateway and routing layer", "projectId": 1, "leadAccountId": "5b10a2844c20165700ede21g", "self": "https://acmecorp.atlassian.net/rest/api/3/component/10000", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
462
- { "id": 2, "name": "Auth Service", "description": "Authentication and authorization service", "projectId": 1, "leadAccountId": "5b10d3a482e05b22cc7d8b02", "self": "https://acmecorp.atlassian.net/rest/api/3/component/10001", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
463
- { "id": 3, "name": "Database", "description": "Database layer and migrations", "projectId": 1, "leadAccountId": "5b10f2c482e05b22cc7d9a01", "self": "https://acmecorp.atlassian.net/rest/api/3/component/10002", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
464
- { "id": 4, "name": "iOS", "description": "iOS native code", "projectId": 2, "leadAccountId": "5b10ac8d82e05b22cc7d4ef5", "self": "https://acmecorp.atlassian.net/rest/api/3/component/10003", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" },
465
- { "id": 5, "name": "Android", "description": "Android native code", "projectId": 2, "leadAccountId": null, "self": "https://acmecorp.atlassian.net/rest/api/3/component/10004", "createdAt": "2023-06-01T00:00:00.000Z", "updatedAt": "2023-06-01T00:00:00.000Z" }
2415
+ {
2416
+ "id": 1,
2417
+ "name": "API Gateway",
2418
+ "description": "API gateway and routing layer",
2419
+ "projectId": 1,
2420
+ "leadAccountId": "5b10a2844c20165700ede21g",
2421
+ "self": "https://acmecorp.atlassian.net/rest/api/3/component/10000",
2422
+ "createdAt": "2023-01-15T00:00:00.000Z",
2423
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2424
+ },
2425
+ {
2426
+ "id": 2,
2427
+ "name": "Auth Service",
2428
+ "description": "Authentication and authorization service",
2429
+ "projectId": 1,
2430
+ "leadAccountId": "5b10d3a482e05b22cc7d8b02",
2431
+ "self": "https://acmecorp.atlassian.net/rest/api/3/component/10001",
2432
+ "createdAt": "2023-01-15T00:00:00.000Z",
2433
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2434
+ },
2435
+ {
2436
+ "id": 3,
2437
+ "name": "Database",
2438
+ "description": "Database layer and migrations",
2439
+ "projectId": 1,
2440
+ "leadAccountId": "5b10f2c482e05b22cc7d9a01",
2441
+ "self": "https://acmecorp.atlassian.net/rest/api/3/component/10002",
2442
+ "createdAt": "2023-01-15T00:00:00.000Z",
2443
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2444
+ },
2445
+ {
2446
+ "id": 4,
2447
+ "name": "iOS",
2448
+ "description": "iOS native code",
2449
+ "projectId": 2,
2450
+ "leadAccountId": "5b10ac8d82e05b22cc7d4ef5",
2451
+ "self": "https://acmecorp.atlassian.net/rest/api/3/component/10003",
2452
+ "createdAt": "2023-06-01T00:00:00.000Z",
2453
+ "updatedAt": "2023-06-01T00:00:00.000Z"
2454
+ },
2455
+ {
2456
+ "id": 5,
2457
+ "name": "Android",
2458
+ "description": "Android native code",
2459
+ "projectId": 2,
2460
+ "leadAccountId": null,
2461
+ "self": "https://acmecorp.atlassian.net/rest/api/3/component/10004",
2462
+ "createdAt": "2023-06-01T00:00:00.000Z",
2463
+ "updatedAt": "2023-06-01T00:00:00.000Z"
2464
+ }
466
2465
  ],
467
2466
  "versions": [
468
- { "id": 1, "projectId": 1, "name": "v2.0", "description": "API Gateway v2 release", "archived": false, "released": false, "startDate": "2024-01-15", "releaseDate": "2024-08-01", "self": "https://acmecorp.atlassian.net/rest/api/3/version/10000", "createdAt": "2024-01-15T00:00:00.000Z", "updatedAt": "2024-01-15T00:00:00.000Z" },
469
- { "id": 2, "projectId": 1, "name": "v1.9", "description": "Maintenance release — driver upgrades and observability", "archived": false, "released": true, "startDate": "2024-04-01", "releaseDate": "2024-06-01", "self": "https://acmecorp.atlassian.net/rest/api/3/version/10001", "createdAt": "2024-04-01T00:00:00.000Z", "updatedAt": "2024-06-01T00:00:00.000Z" },
470
- { "id": 3, "projectId": 2, "name": "v3.0", "description": "Push notification overhaul", "archived": false, "released": false, "startDate": "2024-04-01", "releaseDate": "2024-07-15", "self": "https://acmecorp.atlassian.net/rest/api/3/version/10002", "createdAt": "2024-04-01T00:00:00.000Z", "updatedAt": "2024-04-01T00:00:00.000Z" }
2467
+ {
2468
+ "id": 1,
2469
+ "projectId": 1,
2470
+ "name": "v2.0",
2471
+ "description": "API Gateway v2 release",
2472
+ "archived": false,
2473
+ "released": false,
2474
+ "startDate": "2024-01-15",
2475
+ "releaseDate": "2024-08-01",
2476
+ "self": "https://acmecorp.atlassian.net/rest/api/3/version/10000",
2477
+ "createdAt": "2024-01-15T00:00:00.000Z",
2478
+ "updatedAt": "2024-01-15T00:00:00.000Z"
2479
+ },
2480
+ {
2481
+ "id": 2,
2482
+ "projectId": 1,
2483
+ "name": "v1.9",
2484
+ "description": "Maintenance release \u2014 driver upgrades and observability",
2485
+ "archived": false,
2486
+ "released": true,
2487
+ "startDate": "2024-04-01",
2488
+ "releaseDate": "2024-06-01",
2489
+ "self": "https://acmecorp.atlassian.net/rest/api/3/version/10001",
2490
+ "createdAt": "2024-04-01T00:00:00.000Z",
2491
+ "updatedAt": "2024-06-01T00:00:00.000Z"
2492
+ },
2493
+ {
2494
+ "id": 3,
2495
+ "projectId": 2,
2496
+ "name": "v3.0",
2497
+ "description": "Push notification overhaul",
2498
+ "archived": false,
2499
+ "released": false,
2500
+ "startDate": "2024-04-01",
2501
+ "releaseDate": "2024-07-15",
2502
+ "self": "https://acmecorp.atlassian.net/rest/api/3/version/10002",
2503
+ "createdAt": "2024-04-01T00:00:00.000Z",
2504
+ "updatedAt": "2024-04-01T00:00:00.000Z"
2505
+ }
471
2506
  ],
472
2507
  "issueLinks": [
473
- { "id": 1, "inwardIssueId": 4, "outwardIssueId": 2, "linkTypeName": "Blocks", "linkTypeInward": "is blocked by", "linkTypeOutward": "blocks", "createdAt": "2024-06-11T10:00:00.000Z", "updatedAt": "2024-06-11T10:00:00.000Z" },
474
- { "id": 2, "inwardIssueId": 4, "outwardIssueId": 5, "linkTypeName": "Relates", "linkTypeInward": "relates to", "linkTypeOutward": "relates to", "createdAt": "2024-06-11T10:00:00.000Z", "updatedAt": "2024-06-11T10:00:00.000Z" },
475
- { "id": 3, "inwardIssueId": 10, "outwardIssueId": 9, "linkTypeName": "Blocks", "linkTypeInward": "is blocked by", "linkTypeOutward": "blocks", "createdAt": "2024-06-18T14:30:00.000Z", "updatedAt": "2024-06-18T14:30:00.000Z" },
476
- { "id": 4, "inwardIssueId": 22, "outwardIssueId": 10, "linkTypeName": "Duplicates", "linkTypeInward": "is duplicated by", "linkTypeOutward": "duplicates", "createdAt": "2024-06-05T10:00:00.000Z", "updatedAt": "2024-06-05T10:00:00.000Z" },
477
- { "id": 5, "inwardIssueId": 27, "outwardIssueId": 14, "linkTypeName": "Clones", "linkTypeInward": "is cloned by", "linkTypeOutward": "clones", "createdAt": "2024-06-10T09:00:00.000Z", "updatedAt": "2024-06-10T09:00:00.000Z" },
478
- { "id": 6, "inwardIssueId": 19, "outwardIssueId": 2, "linkTypeName": "Relates", "linkTypeInward": "relates to", "linkTypeOutward": "relates to", "createdAt": "2024-06-20T10:00:00.000Z", "updatedAt": "2024-06-20T10:00:00.000Z" }
2508
+ {
2509
+ "id": 1,
2510
+ "inwardIssueId": 4,
2511
+ "outwardIssueId": 2,
2512
+ "linkTypeName": "Blocks",
2513
+ "linkTypeInward": "is blocked by",
2514
+ "linkTypeOutward": "blocks",
2515
+ "createdAt": "2024-06-11T10:00:00.000Z",
2516
+ "updatedAt": "2024-06-11T10:00:00.000Z"
2517
+ },
2518
+ {
2519
+ "id": 2,
2520
+ "inwardIssueId": 4,
2521
+ "outwardIssueId": 5,
2522
+ "linkTypeName": "Relates",
2523
+ "linkTypeInward": "relates to",
2524
+ "linkTypeOutward": "relates to",
2525
+ "createdAt": "2024-06-11T10:00:00.000Z",
2526
+ "updatedAt": "2024-06-11T10:00:00.000Z"
2527
+ },
2528
+ {
2529
+ "id": 3,
2530
+ "inwardIssueId": 10,
2531
+ "outwardIssueId": 9,
2532
+ "linkTypeName": "Blocks",
2533
+ "linkTypeInward": "is blocked by",
2534
+ "linkTypeOutward": "blocks",
2535
+ "createdAt": "2024-06-18T14:30:00.000Z",
2536
+ "updatedAt": "2024-06-18T14:30:00.000Z"
2537
+ },
2538
+ {
2539
+ "id": 4,
2540
+ "inwardIssueId": 22,
2541
+ "outwardIssueId": 10,
2542
+ "linkTypeName": "Duplicates",
2543
+ "linkTypeInward": "is duplicated by",
2544
+ "linkTypeOutward": "duplicates",
2545
+ "createdAt": "2024-06-05T10:00:00.000Z",
2546
+ "updatedAt": "2024-06-05T10:00:00.000Z"
2547
+ },
2548
+ {
2549
+ "id": 5,
2550
+ "inwardIssueId": 27,
2551
+ "outwardIssueId": 14,
2552
+ "linkTypeName": "Clones",
2553
+ "linkTypeInward": "is cloned by",
2554
+ "linkTypeOutward": "clones",
2555
+ "createdAt": "2024-06-10T09:00:00.000Z",
2556
+ "updatedAt": "2024-06-10T09:00:00.000Z"
2557
+ },
2558
+ {
2559
+ "id": 6,
2560
+ "inwardIssueId": 19,
2561
+ "outwardIssueId": 2,
2562
+ "linkTypeName": "Relates",
2563
+ "linkTypeInward": "relates to",
2564
+ "linkTypeOutward": "relates to",
2565
+ "createdAt": "2024-06-20T10:00:00.000Z",
2566
+ "updatedAt": "2024-06-20T10:00:00.000Z"
2567
+ }
479
2568
  ],
480
2569
  "issueLinkTypes": [
481
- { "id": 1, "name": "Blocks", "inward": "is blocked by", "outward": "blocks", "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10000", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
482
- { "id": 2, "name": "Relates", "inward": "relates to", "outward": "relates to", "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10001", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
483
- { "id": 3, "name": "Duplicates", "inward": "is duplicated by", "outward": "duplicates", "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10002", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
484
- { "id": 4, "name": "Clones", "inward": "is cloned by", "outward": "clones", "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10003", "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" }
2570
+ {
2571
+ "id": 1,
2572
+ "name": "Blocks",
2573
+ "inward": "is blocked by",
2574
+ "outward": "blocks",
2575
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10000",
2576
+ "createdAt": "2023-01-15T00:00:00.000Z",
2577
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2578
+ },
2579
+ {
2580
+ "id": 2,
2581
+ "name": "Relates",
2582
+ "inward": "relates to",
2583
+ "outward": "relates to",
2584
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10001",
2585
+ "createdAt": "2023-01-15T00:00:00.000Z",
2586
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2587
+ },
2588
+ {
2589
+ "id": 3,
2590
+ "name": "Duplicates",
2591
+ "inward": "is duplicated by",
2592
+ "outward": "duplicates",
2593
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10002",
2594
+ "createdAt": "2023-01-15T00:00:00.000Z",
2595
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2596
+ },
2597
+ {
2598
+ "id": 4,
2599
+ "name": "Clones",
2600
+ "inward": "is cloned by",
2601
+ "outward": "clones",
2602
+ "self": "https://acmecorp.atlassian.net/rest/api/3/issueLinkType/10003",
2603
+ "createdAt": "2023-01-15T00:00:00.000Z",
2604
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2605
+ }
485
2606
  ],
486
2607
  "fields": [
487
- { "id": 1, "fieldId": "summary", "name": "Summary", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["summary"], "schema": { "type": "string", "system": "summary" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
488
- { "id": 2, "fieldId": "description", "name": "Description", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["description"], "schema": { "type": "string", "system": "description" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
489
- { "id": 3, "fieldId": "status", "name": "Status", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["status"], "schema": { "type": "status", "system": "status" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
490
- { "id": 4, "fieldId": "assignee", "name": "Assignee", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["assignee"], "schema": { "type": "user", "system": "assignee" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
491
- { "id": 5, "fieldId": "reporter", "name": "Reporter", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["reporter"], "schema": { "type": "user", "system": "reporter" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
492
- { "id": 6, "fieldId": "priority", "name": "Priority", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["priority"], "schema": { "type": "priority", "system": "priority" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
493
- { "id": 7, "fieldId": "issuetype", "name": "Issue Type", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["issuetype", "type"], "schema": { "type": "issuetype", "system": "issuetype" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
494
- { "id": 8, "fieldId": "project", "name": "Project", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["project"], "schema": { "type": "project", "system": "project" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
495
- { "id": 9, "fieldId": "labels", "name": "Labels", "custom": false, "orderable": true, "navigable": true, "searchable": true, "clauseNames": ["labels"], "schema": { "type": "array", "system": "labels" }, "createdAt": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" },
496
- { "id": 10, "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": "2023-01-15T00:00:00.000Z", "updatedAt": "2023-01-15T00:00:00.000Z" }
2608
+ {
2609
+ "id": 1,
2610
+ "fieldId": "summary",
2611
+ "name": "Summary",
2612
+ "custom": false,
2613
+ "orderable": true,
2614
+ "navigable": true,
2615
+ "searchable": true,
2616
+ "clauseNames": [
2617
+ "summary"
2618
+ ],
2619
+ "schema": {
2620
+ "type": "string",
2621
+ "system": "summary"
2622
+ },
2623
+ "createdAt": "2023-01-15T00:00:00.000Z",
2624
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2625
+ },
2626
+ {
2627
+ "id": 2,
2628
+ "fieldId": "description",
2629
+ "name": "Description",
2630
+ "custom": false,
2631
+ "orderable": true,
2632
+ "navigable": true,
2633
+ "searchable": true,
2634
+ "clauseNames": [
2635
+ "description"
2636
+ ],
2637
+ "schema": {
2638
+ "type": "string",
2639
+ "system": "description"
2640
+ },
2641
+ "createdAt": "2023-01-15T00:00:00.000Z",
2642
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2643
+ },
2644
+ {
2645
+ "id": 3,
2646
+ "fieldId": "status",
2647
+ "name": "Status",
2648
+ "custom": false,
2649
+ "orderable": true,
2650
+ "navigable": true,
2651
+ "searchable": true,
2652
+ "clauseNames": [
2653
+ "status"
2654
+ ],
2655
+ "schema": {
2656
+ "type": "status",
2657
+ "system": "status"
2658
+ },
2659
+ "createdAt": "2023-01-15T00:00:00.000Z",
2660
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2661
+ },
2662
+ {
2663
+ "id": 4,
2664
+ "fieldId": "assignee",
2665
+ "name": "Assignee",
2666
+ "custom": false,
2667
+ "orderable": true,
2668
+ "navigable": true,
2669
+ "searchable": true,
2670
+ "clauseNames": [
2671
+ "assignee"
2672
+ ],
2673
+ "schema": {
2674
+ "type": "user",
2675
+ "system": "assignee"
2676
+ },
2677
+ "createdAt": "2023-01-15T00:00:00.000Z",
2678
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2679
+ },
2680
+ {
2681
+ "id": 5,
2682
+ "fieldId": "reporter",
2683
+ "name": "Reporter",
2684
+ "custom": false,
2685
+ "orderable": true,
2686
+ "navigable": true,
2687
+ "searchable": true,
2688
+ "clauseNames": [
2689
+ "reporter"
2690
+ ],
2691
+ "schema": {
2692
+ "type": "user",
2693
+ "system": "reporter"
2694
+ },
2695
+ "createdAt": "2023-01-15T00:00:00.000Z",
2696
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2697
+ },
2698
+ {
2699
+ "id": 6,
2700
+ "fieldId": "priority",
2701
+ "name": "Priority",
2702
+ "custom": false,
2703
+ "orderable": true,
2704
+ "navigable": true,
2705
+ "searchable": true,
2706
+ "clauseNames": [
2707
+ "priority"
2708
+ ],
2709
+ "schema": {
2710
+ "type": "priority",
2711
+ "system": "priority"
2712
+ },
2713
+ "createdAt": "2023-01-15T00:00:00.000Z",
2714
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2715
+ },
2716
+ {
2717
+ "id": 7,
2718
+ "fieldId": "issuetype",
2719
+ "name": "Issue Type",
2720
+ "custom": false,
2721
+ "orderable": true,
2722
+ "navigable": true,
2723
+ "searchable": true,
2724
+ "clauseNames": [
2725
+ "issuetype",
2726
+ "type"
2727
+ ],
2728
+ "schema": {
2729
+ "type": "issuetype",
2730
+ "system": "issuetype"
2731
+ },
2732
+ "createdAt": "2023-01-15T00:00:00.000Z",
2733
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2734
+ },
2735
+ {
2736
+ "id": 8,
2737
+ "fieldId": "project",
2738
+ "name": "Project",
2739
+ "custom": false,
2740
+ "orderable": true,
2741
+ "navigable": true,
2742
+ "searchable": true,
2743
+ "clauseNames": [
2744
+ "project"
2745
+ ],
2746
+ "schema": {
2747
+ "type": "project",
2748
+ "system": "project"
2749
+ },
2750
+ "createdAt": "2023-01-15T00:00:00.000Z",
2751
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2752
+ },
2753
+ {
2754
+ "id": 9,
2755
+ "fieldId": "labels",
2756
+ "name": "Labels",
2757
+ "custom": false,
2758
+ "orderable": true,
2759
+ "navigable": true,
2760
+ "searchable": true,
2761
+ "clauseNames": [
2762
+ "labels"
2763
+ ],
2764
+ "schema": {
2765
+ "type": "array",
2766
+ "system": "labels"
2767
+ },
2768
+ "createdAt": "2023-01-15T00:00:00.000Z",
2769
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2770
+ },
2771
+ {
2772
+ "id": 10,
2773
+ "fieldId": "story_points",
2774
+ "name": "Story Points",
2775
+ "custom": true,
2776
+ "orderable": true,
2777
+ "navigable": true,
2778
+ "searchable": true,
2779
+ "clauseNames": [
2780
+ "story_points",
2781
+ "cf[10016]"
2782
+ ],
2783
+ "schema": {
2784
+ "type": "number",
2785
+ "custom": "com.atlassian.jira.plugin.system.customfieldtypes:float",
2786
+ "customId": 10016
2787
+ },
2788
+ "createdAt": "2023-01-15T00:00:00.000Z",
2789
+ "updatedAt": "2023-01-15T00:00:00.000Z"
2790
+ }
497
2791
  ],
498
2792
  "watchers": [
499
- { "id": 1, "issueId": 4, "accountId": "5b10a2844c20165700ede21g", "createdAt": "2024-06-11T09:00:00.000Z", "updatedAt": "2024-06-11T09:00:00.000Z" },
500
- { "id": 2, "issueId": 4, "accountId": "5b10f2c482e05b22cc7d9a01", "createdAt": "2024-06-11T11:30:00.000Z", "updatedAt": "2024-06-11T11:30:00.000Z" },
501
- { "id": 3, "issueId": 13, "accountId": "5b10d3a482e05b22cc7d8b02", "createdAt": "2024-06-12T10:00:00.000Z", "updatedAt": "2024-06-12T10:00:00.000Z" },
502
- { "id": 4, "issueId": 2, "accountId": "5b10a2844c20165700ede21g", "createdAt": "2024-06-17T15:00:00.000Z", "updatedAt": "2024-06-17T15:00:00.000Z" },
503
- { "id": 5, "issueId": 10, "accountId": "5b10ac8d82e05b22cc7d4ef5", "createdAt": "2024-06-18T14:00:00.000Z", "updatedAt": "2024-06-18T14:00:00.000Z" },
504
- { "id": 6, "issueId": 19, "accountId": "5b10d3a482e05b22cc7d8b02", "createdAt": "2024-06-20T10:00:00.000Z", "updatedAt": "2024-06-20T10:00:00.000Z" }
2793
+ {
2794
+ "id": 1,
2795
+ "issueId": 4,
2796
+ "accountId": "5b10a2844c20165700ede21g",
2797
+ "createdAt": "2024-06-11T09:00:00.000Z",
2798
+ "updatedAt": "2024-06-11T09:00:00.000Z"
2799
+ },
2800
+ {
2801
+ "id": 2,
2802
+ "issueId": 4,
2803
+ "accountId": "5b10f2c482e05b22cc7d9a01",
2804
+ "createdAt": "2024-06-11T11:30:00.000Z",
2805
+ "updatedAt": "2024-06-11T11:30:00.000Z"
2806
+ },
2807
+ {
2808
+ "id": 3,
2809
+ "issueId": 13,
2810
+ "accountId": "5b10d3a482e05b22cc7d8b02",
2811
+ "createdAt": "2024-06-12T10:00:00.000Z",
2812
+ "updatedAt": "2024-06-12T10:00:00.000Z"
2813
+ },
2814
+ {
2815
+ "id": 4,
2816
+ "issueId": 2,
2817
+ "accountId": "5b10a2844c20165700ede21g",
2818
+ "createdAt": "2024-06-17T15:00:00.000Z",
2819
+ "updatedAt": "2024-06-17T15:00:00.000Z"
2820
+ },
2821
+ {
2822
+ "id": 5,
2823
+ "issueId": 10,
2824
+ "accountId": "5b10ac8d82e05b22cc7d4ef5",
2825
+ "createdAt": "2024-06-18T14:00:00.000Z",
2826
+ "updatedAt": "2024-06-18T14:00:00.000Z"
2827
+ },
2828
+ {
2829
+ "id": 6,
2830
+ "issueId": 19,
2831
+ "accountId": "5b10d3a482e05b22cc7d8b02",
2832
+ "createdAt": "2024-06-20T10:00:00.000Z",
2833
+ "updatedAt": "2024-06-20T10:00:00.000Z"
2834
+ }
2835
+ ],
2836
+ "remoteLinks": [],
2837
+ "dashboards": [
2838
+ {
2839
+ "id": 1,
2840
+ "dashboardId": "dash_001",
2841
+ "name": "Engineering Overview",
2842
+ "description": "High-level engineering team dashboard with velocity and burndown",
2843
+ "owner": "5b10a2844c20165700ede21g",
2844
+ "isShared": true,
2845
+ "gadgets": [
2846
+ {
2847
+ "gadgetId": "gadget_001",
2848
+ "moduleKey": "com.atlassian.jira.gadgets:filter-results-gadget",
2849
+ "title": "Open Bugs",
2850
+ "position": {
2851
+ "row": 0,
2852
+ "column": 0
2853
+ },
2854
+ "color": "red",
2855
+ "properties": {
2856
+ "filterId": "filter_001",
2857
+ "num": "10"
2858
+ }
2859
+ },
2860
+ {
2861
+ "gadgetId": "gadget_002",
2862
+ "moduleKey": "com.atlassian.jira.gadgets:sprint-burndown-gadget",
2863
+ "title": "Sprint Burndown",
2864
+ "position": {
2865
+ "row": 0,
2866
+ "column": 1
2867
+ },
2868
+ "color": "blue",
2869
+ "properties": {
2870
+ "boardId": "1"
2871
+ }
2872
+ }
2873
+ ],
2874
+ "isFavourite": true,
2875
+ "self": "https://your-domain.atlassian.net/rest/api/3/dashboard/dash_001",
2876
+ "createdAt": "2024-02-01T10:00:00.000Z",
2877
+ "updatedAt": "2024-06-15T10:00:00.000Z"
2878
+ },
2879
+ {
2880
+ "id": 2,
2881
+ "dashboardId": "dash_002",
2882
+ "name": "DevOps Pipeline",
2883
+ "description": "CI/CD pipeline status and deployment metrics",
2884
+ "owner": "5b10e5b682e05b22cc7d7c03",
2885
+ "isShared": true,
2886
+ "gadgets": [
2887
+ {
2888
+ "gadgetId": "gadget_003",
2889
+ "moduleKey": "com.atlassian.jira.gadgets:pie-chart-gadget",
2890
+ "title": "Issues by Priority",
2891
+ "position": {
2892
+ "row": 0,
2893
+ "column": 0
2894
+ },
2895
+ "color": "green",
2896
+ "properties": {
2897
+ "projectId": "3",
2898
+ "statType": "priority"
2899
+ }
2900
+ },
2901
+ {
2902
+ "gadgetId": "gadget_004",
2903
+ "moduleKey": "com.atlassian.jira.gadgets:created-vs-resolved-gadget",
2904
+ "title": "Created vs Resolved",
2905
+ "position": {
2906
+ "row": 1,
2907
+ "column": 0
2908
+ },
2909
+ "color": "blue",
2910
+ "properties": {
2911
+ "projectId": "3",
2912
+ "period": "weekly"
2913
+ }
2914
+ }
2915
+ ],
2916
+ "isFavourite": false,
2917
+ "self": "https://your-domain.atlassian.net/rest/api/3/dashboard/dash_002",
2918
+ "createdAt": "2024-03-15T10:00:00.000Z",
2919
+ "updatedAt": "2024-06-20T14:00:00.000Z"
2920
+ }
2921
+ ],
2922
+ "filters": [
2923
+ {
2924
+ "id": 1,
2925
+ "filterId": "filter_001",
2926
+ "name": "Open Bugs - All Projects",
2927
+ "jql": "type = Bug AND status != Done AND status != Closed ORDER BY priority DESC",
2928
+ "description": "All open bugs across projects, sorted by priority",
2929
+ "owner": "5b10a2844c20165700ede21g",
2930
+ "favourite": true,
2931
+ "sharePermissions": [
2932
+ {
2933
+ "type": "project",
2934
+ "project": {
2935
+ "id": "1"
2936
+ }
2937
+ },
2938
+ {
2939
+ "type": "project",
2940
+ "project": {
2941
+ "id": "2"
2942
+ }
2943
+ }
2944
+ ],
2945
+ "self": "https://your-domain.atlassian.net/rest/api/3/filter/filter_001",
2946
+ "createdAt": "2024-02-01T10:00:00.000Z",
2947
+ "updatedAt": "2024-06-01T10:00:00.000Z"
2948
+ },
2949
+ {
2950
+ "id": 2,
2951
+ "filterId": "filter_002",
2952
+ "name": "My In Progress",
2953
+ "jql": "assignee = currentUser() AND status = 'In Progress' ORDER BY updated DESC",
2954
+ "description": "Issues currently in progress assigned to me",
2955
+ "owner": "5b10ac8d82e05b22cc7d4ef5",
2956
+ "favourite": true,
2957
+ "sharePermissions": [],
2958
+ "self": "https://your-domain.atlassian.net/rest/api/3/filter/filter_002",
2959
+ "createdAt": "2024-03-10T09:00:00.000Z",
2960
+ "updatedAt": "2024-03-10T09:00:00.000Z"
2961
+ },
2962
+ {
2963
+ "id": 3,
2964
+ "filterId": "filter_003",
2965
+ "name": "Unassigned Backlog",
2966
+ "jql": "assignee = EMPTY AND status = 'To Do' AND project = PLAT ORDER BY created ASC",
2967
+ "description": "Unassigned items in the Platform backlog",
2968
+ "owner": "5b10f2c482e05b22cc7d9a01",
2969
+ "favourite": false,
2970
+ "sharePermissions": [
2971
+ {
2972
+ "type": "project",
2973
+ "project": {
2974
+ "id": "1"
2975
+ }
2976
+ }
2977
+ ],
2978
+ "self": "https://your-domain.atlassian.net/rest/api/3/filter/filter_003",
2979
+ "createdAt": "2024-04-20T11:00:00.000Z",
2980
+ "updatedAt": "2024-04-20T11:00:00.000Z"
2981
+ }
2982
+ ],
2983
+ "automationRules": [
2984
+ {
2985
+ "id": 1,
2986
+ "ruleId": "rule_001",
2987
+ "name": "Auto-assign reviewer on In Review",
2988
+ "projectId": 1,
2989
+ "state": "ENABLED",
2990
+ "trigger": {
2991
+ "type": "field_value_changed",
2992
+ "value": "status"
2993
+ },
2994
+ "conditions": [
2995
+ {
2996
+ "type": "field_equals",
2997
+ "value": "In Review"
2998
+ }
2999
+ ],
3000
+ "actions": [
3001
+ {
3002
+ "type": "add_comment",
3003
+ "value": {
3004
+ "body": "Issue moved to review. Please assign a reviewer."
3005
+ }
3006
+ }
3007
+ ],
3008
+ "actorAccountId": "5b10a2844c20165700ede21g",
3009
+ "created": "2024-03-01T10:00:00.000Z",
3010
+ "self": "https://your-domain.atlassian.net/rest/api/3/automation/rule/rule_001",
3011
+ "createdAt": "2024-03-01T10:00:00.000Z",
3012
+ "updatedAt": "2024-06-15T10:00:00.000Z"
3013
+ },
3014
+ {
3015
+ "id": 2,
3016
+ "ruleId": "rule_002",
3017
+ "name": "Close stale issues after 90 days",
3018
+ "projectId": 1,
3019
+ "state": "DISABLED",
3020
+ "trigger": {
3021
+ "type": "scheduled",
3022
+ "value": "0 9 * * 1"
3023
+ },
3024
+ "conditions": [
3025
+ {
3026
+ "type": "issue_stale",
3027
+ "value": "90d"
3028
+ }
3029
+ ],
3030
+ "actions": [
3031
+ {
3032
+ "type": "transition_issue",
3033
+ "value": {
3034
+ "statusId": 4
3035
+ }
3036
+ },
3037
+ {
3038
+ "type": "add_comment",
3039
+ "value": {
3040
+ "body": "Automatically closed due to 90 days of inactivity."
3041
+ }
3042
+ }
3043
+ ],
3044
+ "actorAccountId": "5b10a2844c20165700ede21g",
3045
+ "created": "2024-04-15T09:00:00.000Z",
3046
+ "self": "https://your-domain.atlassian.net/rest/api/3/automation/rule/rule_002",
3047
+ "createdAt": "2024-04-15T09:00:00.000Z",
3048
+ "updatedAt": "2024-05-01T09:00:00.000Z"
3049
+ }
505
3050
  ],
506
- "remoteLinks": []
507
- }
3051
+ "notifications": [
3052
+ {
3053
+ "id": 1,
3054
+ "notificationId": "notif_001",
3055
+ "issueKey": "PLAT-1",
3056
+ "type": "issue_assigned",
3057
+ "userId": "5b10ac8d82e05b22cc7d4ef5",
3058
+ "readAt": "2024-06-01T10:30:00.000Z",
3059
+ "created": "2024-06-01T10:00:00.000Z",
3060
+ "createdAt": "2024-06-01T10:00:00.000Z",
3061
+ "updatedAt": "2024-06-01T10:30:00.000Z"
3062
+ },
3063
+ {
3064
+ "id": 2,
3065
+ "notificationId": "notif_002",
3066
+ "issueKey": "PLAT-5",
3067
+ "type": "issue_updated",
3068
+ "userId": "5b10a2844c20165700ede21g",
3069
+ "readAt": null,
3070
+ "created": "2024-06-20T14:00:00.000Z",
3071
+ "createdAt": "2024-06-20T14:00:00.000Z",
3072
+ "updatedAt": "2024-06-20T14:00:00.000Z"
3073
+ },
3074
+ {
3075
+ "id": 3,
3076
+ "notificationId": "notif_003",
3077
+ "issueKey": "PLAT-8",
3078
+ "type": "comment_added",
3079
+ "userId": "5b10f2c482e05b22cc7d9a01",
3080
+ "readAt": "2024-06-18T16:00:00.000Z",
3081
+ "created": "2024-06-18T15:30:00.000Z",
3082
+ "createdAt": "2024-06-18T15:30:00.000Z",
3083
+ "updatedAt": "2024-06-18T16:00:00.000Z"
3084
+ },
3085
+ {
3086
+ "id": 4,
3087
+ "notificationId": "notif_004",
3088
+ "issueKey": "MOBILE-3",
3089
+ "type": "issue_created",
3090
+ "userId": "5b10d3a482e05b22cc7d8b02",
3091
+ "readAt": null,
3092
+ "created": "2024-06-22T09:00:00.000Z",
3093
+ "createdAt": "2024-06-22T09:00:00.000Z",
3094
+ "updatedAt": "2024-06-22T09:00:00.000Z"
3095
+ },
3096
+ {
3097
+ "id": 5,
3098
+ "notificationId": "notif_005",
3099
+ "issueKey": "OPS-2",
3100
+ "type": "issue_assigned",
3101
+ "userId": "5b10e5b682e05b22cc7d7c03",
3102
+ "readAt": null,
3103
+ "created": "2024-06-25T11:00:00.000Z",
3104
+ "createdAt": "2024-06-25T11:00:00.000Z",
3105
+ "updatedAt": "2024-06-25T11:00:00.000Z"
3106
+ }
3107
+ ],
3108
+ "securityLevels": [
3109
+ {
3110
+ "id": 1,
3111
+ "securityLevelId": "sl_001",
3112
+ "name": "Public",
3113
+ "description": "Visible to all project members",
3114
+ "schemeId": "scheme_001",
3115
+ "projectId": 1,
3116
+ "self": "https://your-domain.atlassian.net/rest/api/3/securitylevel/sl_001",
3117
+ "createdAt": "2024-01-01T00:00:00.000Z",
3118
+ "updatedAt": "2024-01-01T00:00:00.000Z"
3119
+ },
3120
+ {
3121
+ "id": 2,
3122
+ "securityLevelId": "sl_002",
3123
+ "name": "Internal",
3124
+ "description": "Visible only to team leads and above",
3125
+ "schemeId": "scheme_001",
3126
+ "projectId": 1,
3127
+ "self": "https://your-domain.atlassian.net/rest/api/3/securitylevel/sl_002",
3128
+ "createdAt": "2024-01-01T00:00:00.000Z",
3129
+ "updatedAt": "2024-01-01T00:00:00.000Z"
3130
+ },
3131
+ {
3132
+ "id": 3,
3133
+ "securityLevelId": "sl_003",
3134
+ "name": "Confidential",
3135
+ "description": "Restricted to project administrators only",
3136
+ "schemeId": "scheme_001",
3137
+ "projectId": 1,
3138
+ "self": "https://your-domain.atlassian.net/rest/api/3/securitylevel/sl_003",
3139
+ "createdAt": "2024-01-01T00:00:00.000Z",
3140
+ "updatedAt": "2024-01-01T00:00:00.000Z"
3141
+ }
3142
+ ]
3143
+ }