capability_id: pr.comments.reactions.list
version: "1.0.0"
description: "List emoji reactions on a pull request's issue comments and review-thread comments. Comments with no matching reactions are omitted."
input_schema:
  type: object
  required: [owner, name, prNumber]
  properties:
    owner: { type: string, minLength: 1 }
    name: { type: string, minLength: 1 }
    prNumber: { type: integer, minimum: 1 }
    first: { type: integer, minimum: 1, maximum: 100, default: 30 }
    after: { type: [string, "null"] }
    reactorLogin: { type: string, minLength: 1 }
    content:
      type: string
      enum: [THUMBS_UP, THUMBS_DOWN, LAUGH, HOORAY, CONFUSED, HEART, EYES, ROCKET]
  additionalProperties: false
output_schema:
  type: object
  required: [items, filterApplied, pageInfo, scan]
  properties:
    items:
      type: array
      items:
        type: object
        required: [subjectType, subjectId, subjectUrl, authorLogin, groups]
        properties:
          subjectType: { type: string }
          subjectId: { type: string, minLength: 1 }
          subjectUrl: { type: string, minLength: 1 }
          authorLogin: { type: [string, "null"] }
          groups:
            type: array
            items:
              type: object
              required: [content, reactorCount, reactorLogins, viewerHasReacted, reactorsTruncated]
              properties:
                content: { type: string }
                reactorCount: { type: integer, minimum: 0 }
                reactorLogins:
                  type: array
                  items: { type: string }
                viewerHasReacted: { type: boolean }
                reactorsTruncated: { type: boolean }
              additionalProperties: false
        additionalProperties: false
    filterApplied:
      type: object
      required: [reactorLogin, content]
      properties:
        reactorLogin: { type: [string, "null"] }
        content: { type: [string, "null"] }
      additionalProperties: false
    pageInfo:
      type: object
      required: [hasNextPage, endCursor]
      properties:
        hasNextPage: { type: boolean }
        endCursor: { type: [string, "null"] }
      additionalProperties: false
    scan:
      type: object
      required: [pagesScanned, sourceItemsScanned, scanTruncated]
      properties:
        pagesScanned: { type: integer, minimum: 0 }
        sourceItemsScanned: { type: integer, minimum: 0 }
        scanTruncated: { type: boolean }
      additionalProperties: false
  additionalProperties: false
routing:
  preferred: graphql
  fallbacks: []
graphql:
  operationName: PrCommentsReactionsIssueCommentsPage
  operationType: query
  documentPath: src/gql/operations/pr-comments-reactions-list.graphql
