capability_id: pr.reviews.request
version: "1.0.0"
description: Request pull request reviewers.
input_schema:
  type: object
  required: [owner, name, prNumber, reviewers]
  properties:
    owner: { type: string, minLength: 1 }
    name: { type: string, minLength: 1 }
    prNumber: { type: integer, minimum: 1 }
    reviewers:
      type: array
      minItems: 1
      items: { type: string, minLength: 1 }
  additionalProperties: false
output_schema:
  type: object
  required: [prNumber, reviewers, updated]
  properties:
    prNumber: { type: integer, minimum: 1 }
    reviewers:
      type: array
      items: { type: string, minLength: 1 }
    updated: { type: boolean }
  additionalProperties: false
routing:
  preferred: graphql
  fallbacks: [cli]
graphql:
  operationName: PrReviewsRequest
  operationType: mutation
  documentPath: src/gql/operations/pr-reviews-request.graphql
  resolution:
    lookup:
      operationName: PrAssigneesLookupByNumber
      documentPath: src/gql/operations/pr-assignees-lookup-by-number.graphql
      vars:
        owner: owner
        name: name
        prNumber: prNumber
    inject:
      - target: pullRequestId
        source: scalar
        path: repository.pullRequest.id
      - target: userIds
        source: map_array
        from_input: reviewers
        nodes_path: repository.assignableUsers.nodes
        match_field: login
        extract_field: id
cli:
  command: pr edit
