generated: '2026-07-15' method: generated source: openapi/productplan-rest-api-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 64 by_action_class: connected: 32 acting: 32 by_consequence: read: 32 write: 32 human_in_the_loop_required: 0 operations: - path: /roadmaps method: get operationId: listRoadmaps x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /roadmaps/{id} method: get operationId: getRoadmap x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /roadmaps/{roadmap_id}/lanes method: get operationId: listRoadmapLanes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /roadmaps/{roadmap_id}/lanes method: post operationId: createRoadmapLane x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /roadmaps/{roadmap_id}/lanes/{id} method: patch operationId: updateRoadmapLane x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /roadmaps/{roadmap_id}/lanes/{id} method: delete operationId: deleteRoadmapLane x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /roadmaps/{roadmap_id}/milestones method: get operationId: listRoadmapMilestones x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /roadmaps/{roadmap_id}/milestones method: post operationId: createRoadmapMilestone x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /roadmaps/{roadmap_id}/milestones/{id} method: patch operationId: updateRoadmapMilestone x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /roadmaps/{roadmap_id}/milestones/{id} method: delete operationId: deleteRoadmapMilestone x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /roadmaps/{id}/bars method: get operationId: listRoadmapBars x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /roadmaps/{id}/comments method: get operationId: listRoadmapComments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /bars method: post operationId: createBar x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /bars/{id} method: get operationId: getBar x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /bars/{id} method: patch operationId: updateBar x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /bars/{id} method: delete operationId: deleteBar x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /bars/{id}/child-bars method: get operationId: listChildBars x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /bars/{id}/comments method: get operationId: listBarComments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /bars/{bar_id}/connections method: get operationId: listBarConnections x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /bars/{bar_id}/connections method: post operationId: createBarConnection x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /bars/{bar_id}/connections/{id} method: delete operationId: deleteBarConnection x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /bars/{bar_id}/links method: get operationId: listBarLinks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /bars/{bar_id}/links method: post operationId: createBarLink x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /bars/{bar_id}/links/{id} method: delete operationId: deleteBarLink x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /strategy/objectives method: get operationId: listObjectives x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /strategy/objectives method: post operationId: createObjective x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /strategy/objectives/{id} method: get operationId: getObjective x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /strategy/objectives/{id} method: patch operationId: updateObjective x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /strategy/objectives/{id} method: delete operationId: deleteObjective x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /strategy/objectives/{objective_id}/key-results method: get operationId: listKeyResults x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /strategy/objectives/{objective_id}/key-results method: post operationId: createKeyResult x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /strategy/objectives/{objective_id}/key-results/{id} method: get operationId: getKeyResult x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /strategy/objectives/{objective_id}/key-results/{id} method: patch operationId: updateKeyResult x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /strategy/objectives/{objective_id}/key-results/{id} method: delete operationId: deleteKeyResult x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /discovery/ideas method: get operationId: listIdeas x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discovery/ideas method: post operationId: createIdea x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /discovery/ideas/{id} method: get operationId: getIdea x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discovery/ideas/{id} method: patch operationId: updateIdea x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /discovery/ideas/customers method: get operationId: listIdeaCustomers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discovery/ideas/tags method: get operationId: listIdeaTags x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discovery/opportunities method: get operationId: listOpportunities x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discovery/opportunities method: post operationId: createOpportunity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /discovery/opportunities/{id} method: get operationId: getOpportunity x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discovery/opportunities/{id} method: patch operationId: updateOpportunity x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /discovery/idea-forms method: get operationId: listIdeaForms x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /discovery/idea-forms/{id} method: get operationId: getIdeaForm x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /launches method: get operationId: listLaunches x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /launches method: post operationId: createLaunch x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{id} method: get operationId: getLaunch x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /launches/{id} method: patch operationId: updateLaunch x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{id} method: delete operationId: deleteLaunch x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{launch_id}/checklist-sections method: get operationId: listChecklistSections x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /launches/{launch_id}/checklist-sections method: post operationId: createChecklistSection x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{launch_id}/checklist-sections/{id} method: get operationId: getChecklistSection x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /launches/{launch_id}/checklist-sections/{id} method: patch operationId: updateChecklistSection x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{launch_id}/checklist-sections/{id} method: delete operationId: deleteChecklistSection x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{launch_id}/tasks method: get operationId: listLaunchTasks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /launches/{launch_id}/tasks method: post operationId: createLaunchTask x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{launch_id}/tasks/{id} method: get operationId: getLaunchTask x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /launches/{launch_id}/tasks/{id} method: patch operationId: updateLaunchTask x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /launches/{launch_id}/tasks/{id} method: delete operationId: deleteLaunchTask x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /users method: get operationId: listUsers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /teams method: get operationId: listTeams x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /status method: get operationId: getStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none