# List exemption history for issue

Paginated flat timeline of exemption history events for an issue

Endpoint: GET /sto/api/v2/exemptions/issue/{issueId}/history
Version: 1.0
Security: 

## Query parameters:

  - `accountId` (string, required)
    Harness Account ID
    Example: "abcdef1234567890ghijkl"

  - `orgId` (string)
    Harness Organization ID
    Example: "example_org"

  - `projectId` (string)
    Harness Project ID
    Example: "example_project"

  - `page` (integer)
    Page number to fetch (starting from 0)
    Example: 4

  - `pageSize` (integer)
    Number of results per page
    Example: 50

  - `pipelineId` (string)
    Harness pipeline ID. When set with targetId, scopes history to that pipeline/target (Vulnerabilities tab). Requires orgId and projectId.
    Example: "sto-core-ci"

  - `targetId` (string)
    Harness target ID. When set with pipelineId, scopes history to that pipeline/target (Vulnerabilities tab). Requires orgId and projectId.
    Example: "target1111111111111111"

## Path parameters:

  - `issueId` (string, required)
    Issue ID
    Example: "abcdef1234567890ghijkl"

## Header parameters:

  - `X-Api-Key` (string)
    Harness personal or service access token
    Example: "Est laudantium cupiditate est ad repellendus aliquam."

## Response 200 fields (application/json):

  - `events` (array, required)
    Flat timeline, newest first. Not grouped by exemptionId.
    Example: [{"comment":"p8h","commenterEmail":"priya.nair@harness.io","commenterId":"user111111111111111111","commenterName":"Priya Nair","created":1781391060,"durationDays":3208129927373090300,"exemptedOccurrenceCount":744031225383331100,"exemptionId":"exmp111111111111111111","expiration":4477985376795396000,"id":"hist111111111111111111","isAutoExpiry":false,"isOccurrenceLevel":false,"orgId":"Nobis quo dolores commodi.","orgName":"Default","pipelineId":"Neque libero qui.","pipelineName":"STO Core CI","projectId":"Sed qui harum et cupiditate doloremque corporis.","projectName":"STO Core","reasonType":"Compensating Controls","scope":"ORG","status":"Pending","targetId":"Qui aperiam dicta.","targetName":"sto-core"},{"comment":"p8h","commenterEmail":"priya.nair@harness.io","commenterId":"user111111111111111111","commenterName":"Priya Nair","created":1781391060,"durationDays":3208129927373090300,"exemptedOccurrenceCount":744031225383331100,"exemptionId":"exmp111111111111111111","expiration":4477985376795396000,"id":"hist111111111111111111","isAutoExpiry":false,"isOccurrenceLevel":false,"orgId":"Nobis quo dolores commodi.","orgName":"Default","pipelineId":"Neque libero qui.","pipelineName":"STO Core CI","projectId":"Sed qui harum et cupiditate doloremque corporis.","projectName":"STO Core","reasonType":"Compensating Controls","scope":"ORG","status":"Pending","targetId":"Qui aperiam dicta.","targetName":"sto-core"}]

  - `events.comment` (string)
    eh.comment when present
    Example: "1j8"

  - `events.commenterEmail` (string)
    Email of the commenter
    Example: "priya.nair@harness.io"

  - `events.commenterId` (string)
    User ID; absent for auto-expiry
    Example: "user111111111111111111"

  - `events.commenterName` (string)
    Display name of the commenter
    Example: "Priya Nair"

  - `events.created` (integer, required)
    Unix timestamp (seconds)
    Example: 1781391060

  - `events.durationDays` (integer)
    COALESCE(eh.state.duration_days, pending_changes fallback)
    Example: 3814440511166016500

  - `events.exemptedOccurrenceCount` (integer)
    Count of occurrences covered (issue-level fingerprint or scan-scoped)
    Example: 2123339849563154200

  - `events.exemptionId` (string, required)
    Parent exemption.id
    Example: "exmp111111111111111111"

  - `events.expiration` (integer)
    Unix timestamp from eh.state.expiration when present
    Example: 3829887781061036000

  - `events.id` (string, required)
    exemption_history.id
    Example: "hist111111111111111111"

  - `events.isAutoExpiry` (boolean, required)
    True when status=Expired and commenter_id IS NULL
    Example: true

  - `events.isOccurrenceLevel` (boolean)
    True when exemption has exemption_occurrence rows at event time
    Example: true

  - `events.orgId` (string)
    Example: "Quam cum tenetur aut doloremque eius est."

  - `events.orgName` (string)
    Display name for orgId, resolved via ng-manager
    Example: "Default"

  - `events.pipelineId` (string)
    From eh.state.pipeline_id when scope=PIPELINE
    Example: "Omnis et voluptatem reiciendis pariatur."

  - `events.pipelineName` (string)
    Display name for pipelineId, resolved via pipeline service
    Example: "STO Core CI"

  - `events.projectId` (string)
    Example: "Dolor ut rerum qui."

  - `events.projectName` (string)
    Display name for projectId, resolved via ng-manager
    Example: "STO Core"

  - `events.reasonType` (string)
    From eh.state.type (Compensating Controls, False Positive, etc.)
    Example: "Compensating Controls"

  - `events.scope` (string, required)
    Enum: "ACCOUNT", "ORG", "PROJECT", "PIPELINE", "TARGET"

  - `events.status` (string, required)
    Enum: "Pending", "Approved", "Rejected", "Expired", "Canceled"

  - `events.targetId` (string)
    From eh.state.target_id when scope=TARGET
    Example: "Beatae adipisci magnam."

  - `events.targetName` (string)
    Display name for targetId
    Example: "sto-core"

  - `pagination` (object, required)
    Example: {"link":"","page":4,"pageSize":20,"totalItems":230,"totalPages":12}

  - `pagination.link` (string)
    Link-based paging

  - `pagination.page` (integer, required)
    Page number (starting from 0)
    Example: 4

  - `pagination.pageSize` (integer, required)
    Requested page size
    Example: 20

  - `pagination.totalItems` (integer, required)
    Total results available
    Example: 230

  - `pagination.totalPages` (integer, required)
    Total pages available
    Example: 12

## Response 400 fields (application/json):

  - `message` (string, required)
    Example: "Not Found"

  - `status` (integer)
    Example: 404


