---
id: action-item-resolve
title: "Resolve an action item"
description: "Mark an action item as resolved. If an approval action gates `action_item:resolve` for this item, it moves to `pending_verification` until the approval request is decided. Otherwise it transitions straight to `resolved`."
sidebar_label: "Resolve an action item"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/api/action-items
custom_edit_url: null
---

import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import ParamsDetails from "@theme/ParamsDetails";
import RequestSchema from "@theme/RequestSchema";
import StatusCodes from "@theme/StatusCodes";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";
import Heading from "@theme/Heading";

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Resolve an action item"}
>
</Heading>

<MethodEndpoint
  method={"post"}
  path={"/action_item/{id}/resolve"}
  context={"endpoint"}
>
  
</MethodEndpoint>



Mark an action item as resolved. If an approval action gates `action_item:resolve` for this item, it moves to `pending_verification` until the approval request is decided. Otherwise it transitions straight to `resolved`.


<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={[{"in":"path","name":"id","schema":{"type":"string"},"required":true,"description":"The action item ID.","example":"xYz789AbCdEf"}]}
>
  
</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"resolution":{"type":"string","description":"A description of how the issue was resolved.","example":"Upgraded base image to node:20-alpine3.19"},"evidence_url":{"type":"string","description":"An optional URL to evidence of the resolution (e.g., a pull request).","example":"https://github.com/org/repo/pull/42"},"actor":{"type":"string","description":"The email of the user performing the action. If provided, the caller must be authorized to act on behalf of that user.","example":"jane@example.com"}}}}}}}
>
  
</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The updated action item.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The unique action item ID.","example":"xYz789AbCdEf"},"slug":{"type":"string","description":"Auto-generated URL-friendly slug.","example":"upgrade-base-image-to-fix-cve-2026-1234"},"nrn":{"type":"string","description":"The NRN that owns this action item.","example":"organization=1:account=2:namespace=3:application=4"},"title":{"type":"string","description":"The title.","example":"Upgrade base image to fix CVE-2026-1234"},"description":{"type":"string","description":"The description. Supports Markdown.","example":"The current base image has a critical vulnerability."},"status":{"type":"string","enum":["open","in_progress","pending_deferral","deferred","pending_verification","resolved","pending_rejection","rejected","closed"],"description":"The current status.","example":"open"},"priority":{"type":"string","enum":["low","medium","high","critical"],"description":"Priority level.","example":"critical"},"score":{"type":"integer","description":"Calculated score based on value and priority.","example":2000},"category_id":{"type":"string","description":"The category ID.","example":"abc123def456"},"value":{"type":"number","description":"Estimated benefit of resolving the item.","example":500},"created_by":{"type":"string","description":"The creator email or agent identifier.","example":"security-scanner-agent"},"assignee_id":{"type":"integer","description":"The nullplatform user ID of the item's owner, or `null` when nobody owns it.","example":2345},"assigned_at":{"type":"string","format":"date-time","description":"When the current assignment was made. ISO 8601 date-time.","example":"2026-08-20T14:32:00Z"},"assigned_by":{"type":"string","description":"Who made the current assignment: a user email or an agent identifier.","example":"jane@example.com"},"due_date":{"type":"string","format":"date-time","description":"Optional deadline. ISO 8601 date-time.","example":"2026-05-01T00:00:00Z"},"deferred_until":{"type":"string","format":"date","description":"Date until which the item is deferred.","example":null},"resolved_at":{"type":"string","format":"date","description":"Date when the item was resolved.","example":null},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value pairs for classification.","example":{"source":"container-scan","cve":"CVE-2026-1234"}},"affected_resources":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The resource type.","example":"application"},"name":{"type":"string","description":"The resource name.","example":"my-api-service"},"permalink":{"type":"string","description":"A link to the resource.","example":"https://app.nullplatform.com/applications/4"},"description":{"type":"string","description":"A brief description.","example":"Main API service"}},"title":"AffectedResource"}},"references":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The reference name.","example":"CVE-2026-1234"},"permalink":{"type":"string","description":"A link to the reference.","example":"https://nvd.nist.gov/vuln/detail/CVE-2026-1234"},"description":{"type":"string","description":"A brief description.","example":"NVD entry for this vulnerability"}},"title":"Reference"}},"metadata":{"type":"object","description":"Flexible metadata.","example":{"cve_id":"CVE-2026-1234"}},"deferral_count":{"type":"integer","description":"Number of times this item has been deferred.","example":0},"config":{"type":"object","description":"Deferral limits for a category. Approval gating for resolve, defer, and reject\nis no longer configured here. It is driven by approval actions in the approvals\nengine. See the `action_item` entity in the Approval API.\n","properties":{"max_deferral_days":{"type":"integer","description":"Maximum number of days an item can be deferred into the future.","example":90},"max_deferral_count":{"type":"integer","description":"Maximum number of times an item can be deferred.","example":3}},"title":"CategoryConfig"},"comments":{"type":"array","description":"Comments on this item. Populated on read.","items":{"type":"object","properties":{"id":{"type":"string","description":"The comment ID.","example":"cmt123AbCdEf"},"author":{"type":"string","description":"The comment author.","example":"jane@example.com"},"content":{"type":"string","description":"The comment text.","example":"This should be prioritized for the next sprint."},"created_at":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2026-04-06T14:30:00.000Z"}},"title":"Comment"}},"audit_logs":{"type":"array","description":"Audit trail of all status transitions and field updates on this item.","items":{"type":"object","description":"A single audit log entry recording a status transition or field update on an action item.","properties":{"id":{"type":"string","description":"The unique audit log entry ID.","example":"3c35f973-d53b-4e60-a578-2e8fba1dbbb1"},"actor":{"type":"string","description":"The email of the user who performed the action.","example":"jane@example.com"},"action":{"type":"string","description":"The action that was performed.","example":"deferred"},"details":{"type":"object","description":"Additional context about the action, such as previous and new status or the deferral reason.","example":{"from":"open","to":"deferred","reason":"Waiting for the next maintenance window."}},"timestamp":{"type":"string","format":"date-time","description":"When the action was performed.","example":"2026-04-06T12:00:00.000Z"}},"title":"AuditLog"}},"created_at":{"type":"string","format":"date-time","description":"Creation timestamp.","example":"2026-04-06T12:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"Last update timestamp.","example":"2026-04-06T12:00:00.000Z"}},"title":"ActionItem"}}}},"4XX":{"description":"Client error responses due to invalid input, missing parameters, or unauthorized access.\n\nRequest validation errors use a different shape:\n```json\n{\n  \"type\": \"ValidationError\",\n  \"errors\": [{ \"message\": \"body must have required property 'defer_until'\" }]\n}\n```\n","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Standard error response.","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code (e.g., 400, 401, 403, 404).","example":400},"code":{"type":"string","description":"Machine-readable error code.","example":"bad_request"},"error":{"type":"string","description":"Short description of the error type.","example":"Bad Request"},"message":{"type":"string","description":"Additional details about the error.","example":"The request was malformed or contained invalid parameters."}}},{"type":"object","description":"Request validation error response.","required":["type","errors"],"properties":{"type":{"type":"string","example":"ValidationError"},"errors":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","example":"body must have required property 'until'"}}}}}}]}}}},"5XX":{"description":"Server error responses indicating an issue on the API side.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific server error.","example":500},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"internal_server_error"},"error":{"type":"string","description":"A brief, human-readable description of the error type.","example":"Internal Server Error"},"message":{"type":"string","description":"Additional details about the error.","example":"An unexpected error occurred on the server."}}}}}}}}
>
  
</StatusCodes>


      