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

# Reopen a closed pull request

> Reopens the closed pull request through the caller's own GitHub identity. It answers with the GitHubPullRequest read after the change. The mirror records the pull request GitHub answers with, so the next read reflects the change before its webhook arrives. A member with a product role in an owning organization of the pull request — one whose task published or reviewed it, or with a project on its repository — may call it, while they keep GitHub access to the repository. A caller with no connected GitHub identity is refused with 409 github_identity_required and GitHub's own refusals are a 422 with its message. A pull request that does not exist, one no organization of the caller owns and one whose GitHub access the caller has lost answer the same 404, and omitting org_id while more than one of the caller's organizations owns it is a 422 org_id_required.



## OpenAPI

````yaml api-reference/openapi.json POST /pull-requests/{pullRequestID}/github/reopen
openapi: 3.1.0
info:
  title: Aether API
  version: 0.1.0
servers:
  - url: https://api.runaether.dev
security:
  - bearerAuth: []
paths:
  /pull-requests/{pullRequestID}/github/reopen:
    post:
      tags:
        - pull-requests
      summary: Reopen a closed pull request
      description: >-
        Reopens the closed pull request through the caller's own GitHub
        identity. It answers with the GitHubPullRequest read after the change.
        The mirror records the pull request GitHub answers with, so the next
        read reflects the change before its webhook arrives. A member with a
        product role in an owning organization of the pull request — one whose
        task published or reviewed it, or with a project on its repository — may
        call it, while they keep GitHub access to the repository. A caller with
        no connected GitHub identity is refused with 409
        github_identity_required and GitHub's own refusals are a 422 with its
        message. A pull request that does not exist, one no organization of the
        caller owns and one whose GitHub access the caller has lost answer the
        same 404, and omitting org_id while more than one of the caller's
        organizations owns it is a 422 org_id_required.
      operationId: reopenPullRequestGithub
      parameters:
        - in: path
          name: pullRequestID
          required: true
          schema:
            format: uuid
            type: string
        - description: >-
            The pull request's owning organization to act in: the org_id the
            PullRequest carries. Required when more than one of the caller's
            organizations owns the pull request.
          explode: false
          in: query
          name: org_id
          schema:
            description: >-
              The pull request's owning organization to act in: the org_id the
              PullRequest carries. Required when more than one of the caller's
              organizations owns the pull request.
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitHubPullRequest'
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/PullRequestsErrorResponse'
                  - $ref: '#/components/schemas/OrgAuthorizationErrorResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Internal Server Error
        '502':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Bad Gateway
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsErrorResponse'
          description: Service Unavailable
components:
  schemas:
    GitHubPullRequest:
      additionalProperties: false
      properties:
        checks:
          items:
            $ref: '#/components/schemas/TaskGitHubPullRequestCheck'
          type: array
        merge_box:
          $ref: '#/components/schemas/TaskGitHubPullRequestMergeBox'
        reviewers:
          items:
            $ref: '#/components/schemas/TaskGitHubPullRequestReviewer'
          type: array
        reviews:
          items:
            $ref: '#/components/schemas/TaskGitHubPullRequestReview'
          type: array
      required:
        - merge_box
        - checks
        - reviews
        - reviewers
      type: object
    PullRequestsErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - account_deleting
            - aether_inference_unserved
            - agent_pr_blocked
            - agent_pr_pending
            - agent_profile_changed
            - app_identity_missing
            - attribution_unavailable
            - bad_gateway
            - bad_request
            - caller_inactive
            - conflict
            - connection_harness_mismatch
            - connection_not_held
            - contents_write_required
            - continuation_failed
            - continuation_unavailable
            - control_forbidden
            - embeddings_unavailable
            - fix_not_requested
            - fix_requests_unrecorded
            - forbidden
            - fork_branch_delete_unsupported
            - fork_forbidden
            - gateway_timeout
            - github_failed
            - github_identity_required
            - github_push_access_required
            - gone
            - handed_branch_protected
            - head_moved
            - idempotency_key_conflict
            - idempotency_key_reused
            - inference_proxy_unavailable
            - insufficient_credits
            - insufficient_inference_balance
            - internal_error
            - invalid_request
            - mcp_server_not_connected
            - message_not_queued
            - method_not_allowed
            - mode_forbidden
            - no_dispatch_target
            - not_acceptable
            - not_found
            - not_implemented
            - onboarding_already_completed
            - onboarding_requirements_missing
            - org_id_required
            - org_role_insufficient
            - org_suspended
            - payment_required
            - pr_review_actor_required
            - pr_review_publish_forbidden
            - precondition_failed
            - project_has_no_repository
            - project_required
            - pull_request_closed
            - pull_request_mirror_failed
            - pull_request_not_mirrored
            - queued_stop_requires_discard
            - rate_limited
            - request_canceled
            - request_timeout
            - request_too_large
            - service_unavailable
            - stack_cycle
            - stack_too_large
            - stack_two_parents
            - stale_execution
            - stale_or_indeterminate
            - stale_pending_input
            - stream_delivery_gap
            - stream_event_conflict
            - task_awaiting_message
            - task_awaiting_tool_response
            - task_connection_disconnected
            - task_creator_deleted
            - task_has_no_repository
            - task_ineligible
            - task_not_accepting_messages
            - task_not_pinnable
            - task_settings_changed
            - teleport_unavailable
            - unauthenticated
            - unsigned_aether_head
            - unsigned_commit
            - unsupported_changes
            - unsupported_media_type
            - untyped_error
            - validation_failed
            - workspace_git_unavailable
            - workspace_rejected
          minLength: 1
          type: string
        error:
          minLength: 1
          type: string
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
      required:
        - error
        - code
      type: object
    OrgAuthorizationErrorResponse:
      additionalProperties: false
      properties:
        code:
          enum:
            - org_membership_required
            - org_role_insufficient
            - org_suspended
            - account_deleting
            - agent_host_route_not_allowed
            - credential_kind_not_admitted
          type: string
        error:
          minLength: 1
          type: string
      required:
        - error
        - code
      type: object
    TaskGitHubPullRequestCheck:
      additionalProperties: false
      properties:
        check_run_id:
          format: int64
          maximum: 9007199254740991
          minimum: 0
          type: integer
        completed_at:
          format: date-time
          type: string
        conclusion:
          minLength: 1
          type: string
        details_url:
          minLength: 1
          type: string
        name:
          type: string
        started_at:
          format: date-time
          type: string
        status:
          minLength: 1
          type: string
        summary:
          type: string
        summary_truncated:
          type: boolean
      required:
        - check_run_id
        - name
        - status
        - summary_truncated
      type: object
    TaskGitHubPullRequestMergeBox:
      additionalProperties: false
      properties:
        additions:
          format: int64
          minimum: 0
          type: integer
        author_login:
          minLength: 1
          type:
            - string
            - 'null'
        base_branch:
          minLength: 1
          type: string
        base_sha:
          pattern: ^[0-9a-f]{40}$
          type: string
        checks_failed:
          format: int64
          minimum: 0
          type: integer
        checks_passed:
          format: int64
          minimum: 0
          type: integer
        checks_total:
          format: int64
          minimum: 0
          type: integer
        ci_status:
          $ref: '#/components/schemas/TaskCIStatus'
        commits:
          format: int64
          minimum: 0
          type: integer
        deletions:
          format: int64
          minimum: 0
          type: integer
        draft:
          type: boolean
        head_branch:
          minLength: 1
          type: string
        head_is_fork:
          type: boolean
        head_sha:
          minLength: 1
          type: string
        html_url:
          minLength: 1
          type: string
        mergeable_state:
          $ref: '#/components/schemas/TaskGitHubPRMergeableState'
        merged_at:
          format: date-time
          type: string
        pr_number:
          format: int64
          minimum: 1
          type: integer
        ready_for_merge:
          type: boolean
        stack_children:
          items:
            $ref: '#/components/schemas/PullRequestStackEdge'
          minItems: 1
          type: array
        stack_parent:
          $ref: '#/components/schemas/PullRequestStackEdge'
        state:
          $ref: '#/components/schemas/TaskGitHubPRState'
        title:
          type: string
      required:
        - pr_number
        - title
        - html_url
        - head_sha
        - head_is_fork
        - author_login
        - draft
        - checks_passed
        - checks_failed
        - checks_total
        - ready_for_merge
        - commits
        - additions
        - deletions
      type: object
    TaskGitHubPullRequestReviewer:
      discriminator:
        mapping:
          team: '#/components/schemas/TaskGitHubPullRequestTeamReviewer'
          user: '#/components/schemas/TaskGitHubPullRequestUserReviewer'
        propertyName: kind
      oneOf:
        - $ref: '#/components/schemas/TaskGitHubPullRequestUserReviewer'
        - $ref: '#/components/schemas/TaskGitHubPullRequestTeamReviewer'
    TaskGitHubPullRequestReview:
      additionalProperties: false
      properties:
        author_is_bot:
          type: boolean
        author_login:
          minLength: 1
          type:
            - string
            - 'null'
        body:
          type: string
        github_review_id:
          format: int64
          maximum: 9007199254740991
          minimum: 1
          type: integer
        html_url:
          minLength: 1
          type: string
        state:
          minLength: 1
          type: string
        submitted_at:
          format: date-time
          type: string
      required:
        - github_review_id
        - author_login
        - author_is_bot
        - state
        - body
        - submitted_at
        - html_url
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    TaskCIStatus:
      enum:
        - pending
        - passed
        - failed
      type: string
    TaskGitHubPRMergeableState:
      enum:
        - clean
        - dirty
        - blocked
        - behind
        - unstable
        - unknown
        - draft
        - has_hooks
      type: string
    PullRequestStackEdge:
      additionalProperties: false
      description: >-
        One tracked open pull request on a branch-chain edge: as stack_parent,
        the pull request whose head repository and branch match this pull
        request's base; as an element of stack_children, a pull request whose
        base branch is this pull request's head. Present only when the edge
        exists in Aether's tracked pull-request projection; absence does not
        prove the pull request is unstacked.
      properties:
        html_url:
          format: uri
          pattern: ^[hH][tT][tT][pP][sS]?://
          type: string
        pr_number:
          format: int64
          minimum: 1
          type: integer
        pull_request_id:
          format: uuid
          type: string
        state:
          enum:
            - open
          type: string
        title:
          type: string
      required:
        - pull_request_id
        - pr_number
        - title
        - state
        - html_url
      type: object
    TaskGitHubPRState:
      enum:
        - open
        - closed
        - merged
      type: string
    TaskGitHubPullRequestTeamReviewer:
      additionalProperties: false
      properties:
        decision:
          enum:
            - pending
          type: string
        kind:
          enum:
            - team
          type: string
        team:
          minLength: 1
          type: string
      required:
        - kind
        - team
        - decision
      type: object
    TaskGitHubPullRequestUserReviewer:
      additionalProperties: false
      properties:
        decision:
          $ref: '#/components/schemas/TaskGitHubPullRequestReviewerDecision'
        is_bot:
          type: boolean
        kind:
          enum:
            - user
          type: string
        login:
          minLength: 1
          type: string
      required:
        - kind
        - login
        - is_bot
        - decision
      type: object
    TaskGitHubPullRequestReviewerDecision:
      enum:
        - approved
        - changes_requested
        - commented
        - dismissed
        - pending
      type: string
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.