> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lucenthq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update issue status

> Updates an issue's status. The operation is idempotent: setting the current status again returns `200` with the unchanged issue.



## OpenAPI

````yaml PATCH /api/v1/issues/{issueId}
openapi: 3.1.0
info:
  title: Lucent API
  description: >-
    HTTP APIs for Lucent. The Data API reads Lucent data and updates issue
    status. The Ingest API receives rrweb batches from the @lucenthq/sdk browser
    package and custom integrations built on top of the same contract.
  license:
    name: MIT
  version: 0.1.0
servers:
  - url: https://app.lucenthq.com
    description: Production app
security: []
paths:
  /api/v1/issues/{issueId}:
    patch:
      summary: Update issue status
      description: >-
        Updates an issue's status. The operation is idempotent: setting the
        current status again returns `200` with the unchanged issue.
      operationId: updateIssueStatus
      parameters:
        - $ref: '#/components/parameters/IssueId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - status
              properties:
                status:
                  $ref: '#/components/schemas/IssueStatus'
      responses:
        '200':
          description: Updated issue details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetIssueResponse'
        '400':
          $ref: '#/components/responses/DataBadRequest'
        '401':
          $ref: '#/components/responses/DataUnauthorized'
        '403':
          $ref: '#/components/responses/DataForbidden'
        '404':
          $ref: '#/components/responses/DataIssueNotFound'
        '429':
          $ref: '#/components/responses/DataRateLimited'
      security:
        - lucentBearer: []
components:
  parameters:
    IssueId:
      name: issueId
      in: path
      required: true
      description: Issue UUID.
      schema:
        type: string
        format: uuid
        example: 87b3a6b6-5af5-438b-a39c-eff148a68ccb
  schemas:
    IssueStatus:
      type: string
      enum:
        - unresolved
        - ticket_created
        - transient
        - resolved
    GetIssueResponse:
      type: object
      required:
        - issue
      properties:
        issue:
          $ref: '#/components/schemas/Issue'
    Issue:
      allOf:
        - $ref: '#/components/schemas/IssueSummary'
        - type: object
          required:
            - updatedAt
          properties:
            stepsToReplicate:
              type: string
              nullable: true
            aiVerified:
              type: boolean
              nullable: true
            updatedAt:
              type: string
              format: date-time
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
    IssueSummary:
      type: object
      required:
        - id
        - title
        - description
        - status
        - priority
        - previewUrl
        - createdAt
        - sessionCount
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
        description:
          type: string
          nullable: true
        status:
          $ref: '#/components/schemas/IssueStatus'
        priority:
          $ref: '#/components/schemas/IssuePriority'
        previewUrl:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
        sessionCount:
          type: integer
          minimum: 0
        ticketProvider:
          type: string
          nullable: true
        ticketUrl:
          type: string
          nullable: true
        ticketIdentifier:
          type: string
          nullable: true
    IssuePriority:
      type: string
      enum:
        - low
        - medium
        - high
        - critical
  responses:
    DataBadRequest:
      description: Invalid request parameter or body.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    DataUnauthorized:
      description: Missing, malformed, revoked, or unknown bearer token.
      headers:
        WWW-Authenticate:
          description: Bearer challenge with the required scope.
          schema:
            type: string
            example: Bearer scope="read:lucent"
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    DataForbidden:
      description: The bearer token is valid but lacks the required scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    DataIssueNotFound:
      description: The issue was not found in the token's organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    DataRateLimited:
      description: >-
        Rate limit exceeded. Reads allow 300 requests per minute; writes allow
        60 requests per minute.
      headers:
        Retry-After:
          description: Seconds until the rate limit resets.
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          description: Limit for the current window.
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Remaining requests in the current window.
          schema:
            type: integer
        X-RateLimit-Reset:
          description: Unix timestamp when the current window resets.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    lucentBearer:
      type: http
      scheme: bearer
      description: >-
        API keys prefixed with `luc_api_` or OAuth access tokens prefixed with
        `luc_oat_`. Legacy static keys prefixed with `luc_mcp_` continue to
        work.

````