# Autogenerated input type of AcceptInvitation
input AcceptInvitationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  handle: String!
}

# Autogenerated return type of AcceptInvitation
type AcceptInvitationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  me: User
}

# Autogenerated input type of AcknowledgeProgramHealthAcknowledgementMutation
input AcknowledgeProgramHealthAcknowledgementMutationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  program_health_acknowledgement_id: ID!
}

# Autogenerated return type of AcknowledgeProgramHealthAcknowledgementMutation
type AcknowledgeProgramHealthAcknowledgementMutationPayload {
  acknowledged_program_health_acknowledgement_id: String!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  me: User
  was_successful: Boolean!
}

# A Activities::AgreedOnGoingPublic activity for a report
type ActivitiesAgreedOnGoingPublic implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  first_to_agree: Boolean!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BountyAwarded activity for a report
type ActivitiesBountyAwarded implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  bonus_amount: String
  bounty_amount: String
  bounty_currency: String
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BountySuggested activity for a report
type ActivitiesBountySuggested implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  bonus_amount: String
  bounty_amount: String
  bounty_currency: String
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugCloned activity for a report
type ActivitiesBugCloned implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  original_report: Report
  original_report_id: Int @deprecated(reason: "Deprecated in favor of .original_report")
  report: Report
  updated_at: String!
}

# A Activities::BugDuplicate activity for a report
type ActivitiesBugDuplicate implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  original_report: Report
  original_report_id: Int @deprecated(reason: "Deprecated in favor of .original_report")
  report: Report
  updated_at: String!
}

# A Activities::BugFiled activity for a report
type ActivitiesBugFiled implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugInformative activity for a report
type ActivitiesBugInformative implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugNeedsMoreInfo activity for a report
type ActivitiesBugNeedsMoreInfo implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugNew activity for a report
type ActivitiesBugNew implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugNotApplicable activity for a report
type ActivitiesBugNotApplicable implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugReopened activity for a report
type ActivitiesBugReopened implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugResolved activity for a report
type ActivitiesBugResolved implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugSpam activity for a report
type ActivitiesBugSpam implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::BugTriaged activity for a report
type ActivitiesBugTriaged implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ChangedScope activity for a report
type ActivitiesChangedScope implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  new_scope: StructuredScope
  old_scope: StructuredScope
  report: Report
  updated_at: String!
}

# A Activities::Comment activity for a report
type ActivitiesComment implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::CommentsClosed activity for a report
type ActivitiesCommentsClosed implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::CveIdAdded activity for a report
type ActivitiesCveIdAdded implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  cve_ids: [String]
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ExternalAdvisoryAdded activity for a report
type ActivitiesExternalAdvisoryAdded implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ExternalUserInvitationCancelled activity for a report
type ActivitiesExternalUserInvitationCancelled implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  email: String
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ExternalUserInvited activity for a report
type ActivitiesExternalUserInvited implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  email: String
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ExternalUserJoined activity for a report
type ActivitiesExternalUserJoined implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  duplicate_report: Report
  duplicate_report_id: Int @deprecated(reason: "Deprecated in favor of .duplicate_report")
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ExternalUserRemoved activity for a report
type ActivitiesExternalUserRemoved implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  removed_user: User!
  report: Report
  updated_at: String!
}

# A Activities::GroupAssignedToBug activity for a report
type ActivitiesGroupAssignedToBug implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  assigned_group: TeamMemberGroup
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  group: TeamMemberGroup @deprecated(reason: "deprecated in favor of assigned group")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::HackerRequestedMediation activity for a report
type ActivitiesHackerRequestedMediation implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ManuallyDisclosed activity for a report
type ActivitiesManuallyDisclosed implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::MediationRequested activity for a report
type ActivitiesMediationRequested implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# An Activities::NobodyAssignedToBug activity for a report
type ActivitiesNobodyAssignedToBug implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::NotEligibleForBounty activity for a report
type ActivitiesNotEligibleForBounty implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ReassignedToTeam activity for a report
type ActivitiesReassignedToTeam implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ReferenceIdAdded activity for a report
type ActivitiesReferenceIdAdded implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  reference: String
  reference_url: String
  report: Report
  updated_at: String!
}

# A Activities::ReportBecamePublic activity for a report
type ActivitiesReportBecamePublic implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ReportCollaboratorInvited activity for a report
type ActivitiesReportCollaboratorInvited implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ReportCollaboratorJoined activity for a report
type ActivitiesReportCollaboratorJoined implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ReportSeverityUpdated activity for a report
type ActivitiesReportSeverityUpdated implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::ReportTitleUpdated activity for a report
type ActivitiesReportTitleUpdated implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  new_title: String!
  old_title: String!
  report: Report
  updated_at: String!
}

# A Activities::ReportVulnerabilityTypesUpdated activity for a report
type ActivitiesReportVulnerabilityTypesUpdated implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  new_weakness: Weakness
  old_weakness: Weakness
  report: Report
  updated_at: String!
}

# A Activities::SwagAwarded activity for a report
type ActivitiesSwagAwarded implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  swag: Swag!
  updated_at: String!
}

# A Activities::TeamPublished activity for a team
type ActivitiesTeamPublished implements ActivityInterface, Node {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  created_at: String!
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  updated_at: String!
}

# A Activities::UserAssignedToBug activity for a report
type ActivitiesUserAssignedToBug implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  assigned_user: User!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  report: Report
  updated_at: String!
}

# A Activities::UserBannedFromProgram activity for a report
type ActivitiesUserBannedFromProgram implements ActivityInterface, Node, ReportActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  automated_response: Boolean
  created_at: String!
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  removed_user: User!
  report: Report
  updated_at: String!
}

# A Activities::UserJoined activity for a user
type ActivitiesUserJoined implements ActivityInterface, Node {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  created_at: String!
  i_can_edit: Boolean!
  id: ID!
  internal: Boolean
  markdown_message: String
  message: String
  updated_at: String!
}

# The connection type for ActivityUnion.
type ActivityConnection {
  # A list of edges.
  edges: [ActivityUnionEdge]
  max_updated_at: String

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# A interface for the common fields on an HackerOne Activity
interface ActivityInterface {
  _id: ID!
  actor: ActorUnion!
  attachments: [Attachment]
  created_at: String!
  i_can_edit: Boolean!
  internal: Boolean
  markdown_message: String
  message: String
  updated_at: String!
}

# Fields on which a collection of activities can be ordered
enum ActivityOrderField {
  created_at
  updated_at
}

input ActivityOrderInput {
  direction: OrderDirection!
  field: ActivityOrderField!
}

# Possible types for an activity
enum ActivityTypes {
  AgreedOnGoingPublic
  BountyAwarded
  BountySuggested
  BugCloned
  BugDuplicate
  BugFiled
  BugInformative
  BugNeedsMoreInfo
  BugNew
  BugNotApplicable
  BugReopened
  BugResolved
  BugSpam
  BugTriaged
  ChangedScope
  Comment
  CommentsClosed
  CveIdAdded
  ExternalAdvisoryAdded
  ExternalUserInvitationCancelled
  ExternalUserInvited
  ExternalUserJoined
  ExternalUserRemoved
  GroupAssignedToBug
  HackerRequestedMediation
  ManuallyDisclosed
  MediationRequested
  NobodyAssignedToBug
  NotEligibleForBounty
  ReassignedToTeam
  ReferenceIdAdded
  ReportBecamePublic
  ReportCollaboratorInvited
  ReportCollaboratorJoined
  ReportSeverityUpdated
  ReportTitleUpdated
  ReportVulnerabilityTypesUpdated
  SwagAwarded
  TeamPublished
  UserAssignedToBug
  UserBannedFromProgram
  UserJoined
}

# Activities can be of multiple types
union ActivityUnion = ActivitiesAgreedOnGoingPublic | ActivitiesBountyAwarded | ActivitiesBountySuggested | ActivitiesBugCloned | ActivitiesBugDuplicate | ActivitiesBugFiled | ActivitiesBugInformative | ActivitiesBugNeedsMoreInfo | ActivitiesBugNew | ActivitiesBugNotApplicable | ActivitiesBugReopened | ActivitiesBugResolved | ActivitiesBugSpam | ActivitiesBugTriaged | ActivitiesChangedScope | ActivitiesComment | ActivitiesCommentsClosed | ActivitiesCveIdAdded | ActivitiesExternalAdvisoryAdded | ActivitiesExternalUserInvitationCancelled | ActivitiesExternalUserInvited | ActivitiesExternalUserJoined | ActivitiesExternalUserRemoved | ActivitiesGroupAssignedToBug | ActivitiesHackerRequestedMediation | ActivitiesManuallyDisclosed | ActivitiesMediationRequested | ActivitiesNobodyAssignedToBug | ActivitiesNotEligibleForBounty | ActivitiesReassignedToTeam | ActivitiesReferenceIdAdded | ActivitiesReportBecamePublic | ActivitiesReportCollaboratorInvited | ActivitiesReportCollaboratorJoined | ActivitiesReportSeverityUpdated | ActivitiesReportTitleUpdated | ActivitiesReportVulnerabilityTypesUpdated | ActivitiesSwagAwarded | ActivitiesTeamPublished | ActivitiesUserAssignedToBug | ActivitiesUserBannedFromProgram | ActivitiesUserJoined

# The connection type for ActivityUnion.
type ActivityUnionConnection {
  # A list of edges.
  edges: [ActivityUnionEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
}

# An edge in a connection.
type ActivityUnionEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: ActivityUnion
}

# The actor of an activity can be multiple types
union ActorUnion = Team | User

# A HackerOne user's address used for submitting swag
type Address implements Node {
  _id: ID!
  city: String!
  country: String!
  created_at: String!
  id: ID!
  name: String!
  phone_number: String
  postal_code: String!
  state: String!
  street: String!
  tshirt_size: TshirtSizeEnum @deprecated(reason: "Query tshirt size on User instead")
}

# Autogenerated input type of ArchiveStructuredScope
input ArchiveStructuredScopeInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  structured_scope_id: ID!
}

# Autogenerated return type of ArchiveStructuredScope
type ArchiveStructuredScopePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  query: Query
  structured_scope: StructuredScope
}

# Report can be assigned to either a user or a team member group
union AssigneeUnion = TeamMemberGroup | User

# A HackerOne attachment for a report
type Attachment implements Node {
  _id: ID!
  content_type: String!
  created_at: String!
  expiring_url: String!
  file_name: String!
  file_size: Int!
  id: ID!
}

# Types of authentication methods for users
enum AuthenticationServiceEnum {
  database
  saml
  token
}

# A HackerOne badge
type Badge implements Node {
  _id: ID!
  description: String!
  id: ID!
  image_path: String!
  name: String!
}

# Represents a badge earned by a user
type BadgesUsers implements Node {
  _id: ID!
  badge: Badge!
  created_at: String!
  id: ID!
  user: User!
}

# The connection type for BadgesUsers.
type BadgesUsersConnection {
  # A list of edges.
  edges: [BadgesUsersEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
}

# An edge in a connection.
type BadgesUsersEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: BadgesUsers
}

# Resources for setting up the Bank Transfer payment method
type BankTransferReference implements Node {
  beneficiary_required_details(currency: String!, bank_account_country: String!, beneficiary_country: String!): BeneficiaryRequiredDetail
  countries: [Country]
  currencies: [Currency]
  id: ID!
}

# A specification of information needed to create a bank transfer payment preference
type BeneficiaryRequiredDetail implements Node {
  bank_account_country: String!
  beneficiary_country: String!
  beneficiary_required_details(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): BeneficiaryRequiredDetailsConnection
  currency: String!
  id: ID!
}

input BeneficiaryRequiredDetailInput {
  field: String!
  value: String!
}

# A specification of the possibilities for creating a bank transfer payout preference
type BeneficiaryRequiredDetails implements Node {
  beneficiary_entity_type: String!
  beneficiary_required_fields(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): BeneficiaryRequiredFieldConnection
  description: String!
  fee: String!
  id: ID!
  payment_type: String!
}

# The connection type for BeneficiaryRequiredDetails.
type BeneficiaryRequiredDetailsConnection {
  # A list of edges.
  edges: [BeneficiaryRequiredDetailsEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
}

# An edge in a connection.
type BeneficiaryRequiredDetailsEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: BeneficiaryRequiredDetails
}

# A specification of the format of a field used to create a bank transfer payout preference
type BeneficiaryRequiredField implements Node {
  description: String!
  field: String!
  id: ID!
  regex: String!
}

# The connection type for BeneficiaryRequiredField.
type BeneficiaryRequiredFieldConnection {
  # A list of edges.
  edges: [BeneficiaryRequiredFieldEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
}

# An edge in a connection.
type BeneficiaryRequiredFieldEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: BeneficiaryRequiredField
}

# A HackerOne bounty for a report
type Bounty implements Node {
  _id: ID!
  amount: String!
  awarded_amount: String!
  awarded_bonus_amount: String!
  awarded_currency: String!
  bonus_amount: String!
  created_at: String!
  id: ID!
  report: Report!
  status: BountyStatusEnum!
}

# The connection type for Bounty.
type BountyConnection {
  # A list of edges.
  edges: [BountyEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_amount: Float!
  total_count: Int!
}

# An edge in a connection.
type BountyEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Bounty
}

# Status which reflect the state of a bounty
enum BountyStatusEnum {
  cancelled
  confirmed
  failed
  failed_ofac_check
  needs_payout_method
  needs_tax_form
  no_mileage_account
  no_status
  no_tax_form
  ofac_reject
  pending
  pending_ofac_check
  rejected
  sent
}

# A subset of weaknesses that share a common characteristic
type Cluster implements Node {
  created_at: String!
  description: String
  id: ID!
  name: String!
  updated_at: String!
  weaknesses(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: WeaknessOrder = {direction: ASC, field: name}
    search: String = null
    team_handle: String = null
    team_weakness_state: [TeamWeaknessStates] = [enabled, disabled, hidden]
  ): ClusterWeaknessConnection
}

# The connection type for Cluster.
type ClusterConnection {
  # A list of edges.
  edges: [ClusterEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type ClusterEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Cluster
}

input ClusterOrder {
  direction: OrderDirection!
  field: ClusterOrderField!
}

# Fields on which a collection of Cluster can be ordered
enum ClusterOrderField {
  BROWSING_FRIENDLY
}

# The connection type for Weakness.
type ClusterWeaknessConnection {
  # A list of edges.
  edges: [ClusterWeaknessEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type ClusterWeaknessEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Weakness
  team_weakness(team_handle: String!): TeamWeakness
}

# A Coinbase Payout Preference
type CoinbasePayoutPreferenceType implements Node, PayoutPreferenceInterface {
  _id: ID!
  default: Boolean
  email: String
  id: ID!
}

# A common response
type CommonResponse implements Node {
  # The primary key from the database
  _id: ID!
  created_at: String!
  id: ID!
  message: String!
  team: Team!
  title: String!
  updated_at: String!
}

# The connection type for CommonResponse.
type CommonResponseConnection {
  # A list of edges.
  edges: [CommonResponseEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type CommonResponseEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: CommonResponse
}

input CommonResponseOrder {
  direction: OrderDirection!
  field: CommonResponseOrderField!
}

# Fields on which a collection of common responses can be ordered
enum CommonResponseOrderField {
  title
}

# Will only return values for valid SeverityRatingEnum and null.
scalar CountBySeverity

# A country as specified in ISO 3166
type Country implements Node {
  alpha2: String!
  currency_code: String
  id: ID!
  name: String!
}

# Autogenerated input type of CreateActivityComment
input CreateActivityCommentInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  internal: Boolean!
  message: String!
  report_id: ID!
}

# Autogenerated return type of CreateActivityComment
type CreateActivityCommentPayload {
  activities: ActivityUnionConnection
  activity: ActivitiesComment

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  new_activity_edge: ActivityUnionEdge
  report: Report
}

# Autogenerated input type of CreateBounty
input CreateBountyInput {
  amount: Float
  bonus_amount: Float

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  message: String
  report_id: ID!
}

# Autogenerated return type of CreateBounty
type CreateBountyPayload {
  bounty: Bounty!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
}

# Autogenerated input type of CreateBountySuggestion
input CreateBountySuggestionInput {
  amount: Float
  bonus_amount: Float

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  message: String
  report_id: ID!
}

# Autogenerated return type of CreateBountySuggestion
type CreateBountySuggestionPayload {
  activity: ActivitiesBountySuggested!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
}

# Autogenerated input type of CreateCoinbasePayoutPreference
input CreateCoinbasePayoutPreferenceInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  coinbase_email: String!
  default_method: Boolean!
}

# Autogenerated return type of CreateCoinbasePayoutPreference
type CreateCoinbasePayoutPreferencePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  me: User
}

# Autogenerated input type of CreateCurrencycloudBankTransferPayoutPreference
input CreateCurrencycloudBankTransferPayoutPreferenceInput {
  bank_account_country: String!
  bank_account_holder_name: String!
  beneficiary_entity_type: CurrencycloudBankTransferEntityType!
  beneficiary_required_details: [BeneficiaryRequiredDetailInput]!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  currency: String!
  default_method: Boolean!
  payment_type: CurrencycloudBankTransferPaymentType!
}

# Autogenerated return type of CreateCurrencycloudBankTransferPayoutPreference
type CreateCurrencycloudBankTransferPayoutPreferencePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# Autogenerated input type of CreateJiraOauthUrl
input CreateJiraOauthUrlInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  site: String!
  team_id: ID!
}

# Autogenerated return type of CreateJiraOauthUrl
type CreateJiraOauthUrlPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team: Team
  url: String
}

# Autogenerated input type of CreateJiraWebhookToken
input CreateJiraWebhookTokenInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team_id: ID!
}

# Autogenerated return type of CreateJiraWebhookToken
type CreateJiraWebhookTokenPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team: Team!
  webhook_url: String!
}

# Autogenerated input type of CreateMailingAddress
input CreateMailingAddressInput {
  city: String!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  country: String!
  name: String!
  phone_number: String!
  postal_code: String!
  state: String!
  street: String!
}

# Autogenerated return type of CreateMailingAddress
type CreateMailingAddressPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  me: User
  was_successful: Boolean!
}

# Autogenerated input type of CreateOrUpdateHackeroneToJiraEventsConfiguration
input CreateOrUpdateHackeroneToJiraEventsConfigurationInput {
  assignee_changes: Boolean

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  comments: Boolean
  public_disclosures: Boolean
  rewards: Boolean
  state_changes: Boolean
  team_id: ID!
}

# Autogenerated return type of CreateOrUpdateHackeroneToJiraEventsConfiguration
type CreateOrUpdateHackeroneToJiraEventsConfigurationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team: Team!
}

# Autogenerated input type of CreateOrUpdateJiraIntegration
input CreateOrUpdateJiraIntegrationInput {
  assignee: String
  base_url: String!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  custom: String
  description: String!
  generate_webhook_in_jira_if_does_not_exist: Boolean
  issue_type: Int!
  labels: String
  pid: Int!
  summary: String!
  team_id: ID!
}

# Autogenerated return type of CreateOrUpdateJiraIntegration
type CreateOrUpdateJiraIntegrationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team: Team
}

# Autogenerated input type of CreatePaypalPreference
input CreatePaypalPreferenceInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  default_method: Boolean!
  paypal_email: String!
}

# Autogenerated return type of CreatePaypalPreference
type CreatePaypalPreferencePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  me: User
  was_successful: Boolean!
}

# Autogenerated input type of CreateSlackPipeline
input CreateSlackPipelineInput {
  channel: String!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  descriptive_label: String
  notification_report_agreed_on_going_public: Boolean!
  notification_report_assignee_changed: Boolean!
  notification_report_became_public: Boolean!
  notification_report_bounty_paid: Boolean!
  notification_report_bounty_suggested: Boolean!
  notification_report_bug_closed_as_spam: Boolean!
  notification_report_bug_duplicate: Boolean!
  notification_report_bug_informative: Boolean!
  notification_report_bug_needs_more_info: Boolean!
  notification_report_bug_new: Boolean!
  notification_report_bug_not_applicable: Boolean!
  notification_report_closed_as_resolved: Boolean!
  notification_report_comments_closed: Boolean!
  notification_report_created: Boolean!
  notification_report_internal_comment_added: Boolean!
  notification_report_manually_disclosed: Boolean!
  notification_report_not_eligible_for_bounty: Boolean!
  notification_report_public_comment_added: Boolean!
  notification_report_reopened: Boolean!
  notification_report_swag_awarded: Boolean!
  notification_report_triaged: Boolean!
  team_id: ID!
}

# Autogenerated return type of CreateSlackPipeline
type CreateSlackPipelinePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  new_slack_pipeline_edge: SlackPipelineEdge
  slack_pipelines_connection: SlackPipelineConnection
  team: Team!
}

# Autogenerated input type of CreateStructuredScope
input CreateStructuredScopeInput {
  asset_identifier: String!
  asset_type: StructuredScopedAssetTypeEnum
  availability_requirement: String

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  confidentiality_requirement: String
  eligible_for_bounty: Boolean
  eligible_for_submission: Boolean
  instruction: String
  integrity_requirement: String
  reference: String
  team_id: ID!
}

# Autogenerated return type of CreateStructuredScope
type CreateStructuredScopePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team: Team
}

# Autogenerated input type of CreateSurveyAnswer
input CreateSurveyAnswerInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  feedback: String
  invitation_token: String
  structured_response_ids: [ID]!
}

# Autogenerated return type of CreateSurveyAnswer
type CreateSurveyAnswerPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  me: User
  was_successful: Boolean!
}

# Autogenerated input type of CreateSwag
input CreateSwagInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  message: String
  report_id: ID!
}

# Autogenerated return type of CreateSwag
type CreateSwagPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  swag: Swag!
}

# Autogenerated input type of CreateTaxForm
input CreateTaxFormInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  type: TaxFormTypeEnum!
}

# Autogenerated return type of CreateTaxForm
type CreateTaxFormPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [String]
  me: User
}

# Autogenerated input type of CreateUserBountiesReport
input CreateUserBountiesReportInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
}

# Autogenerated return type of CreateUserBountiesReport
type CreateUserBountiesReportPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# Autogenerated input type of CreateUserLufthansaAccount
input CreateUserLufthansaAccountInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  first_name: String!
  last_name: String!
  number: String!
}

# Autogenerated return type of CreateUserLufthansaAccount
type CreateUserLufthansaAccountPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# A currency as defined by ISO 4217
type Currency implements Node {
  code: String!
  id: ID!
  name: String!
}

# Possible currencies codes for bounties
enum CurrencyCode {
  USD
  XLA
}

# Different entity types for currencycloud payout preferences
enum CurrencycloudBankTransferEntityType {
  company
  individual
}

# Different payment types for currencycloud payout preferences
enum CurrencycloudBankTransferPaymentType {
  priority
  regular
}

# A CurrencyCloud Bank Transfer Payout Preference
type CurrencycloudBankTransferPayoutPreferenceType implements Node, PayoutPreferenceInterface {
  _id: ID!
  default: Boolean
  id: ID!
  name: String
}

# Autogenerated input type of DeleteBiDirectionalJiraIntegration
input DeleteBiDirectionalJiraIntegrationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team_id: ID!
}

# Autogenerated return type of DeleteBiDirectionalJiraIntegration
type DeleteBiDirectionalJiraIntegrationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team: Team
}

# Autogenerated input type of DeleteJiraWebhook
input DeleteJiraWebhookInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  jira_webhook_id: ID!
}

# Autogenerated return type of DeleteJiraWebhook
type DeleteJiraWebhookPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team: Team
}

# Autogenerated input type of DeletePhabricatorIntegration
input DeletePhabricatorIntegrationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team_id: ID!
}

# Autogenerated return type of DeletePhabricatorIntegration
type DeletePhabricatorIntegrationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team: Team
}

# Autogenerated input type of DeleteSlackPipeline
input DeleteSlackPipelineInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  slack_pipeline_id: String!
}

# Autogenerated return type of DeleteSlackPipeline
type DeleteSlackPipelinePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  deleted_slack_pipeline_id: String!
  team: Team
}

# Autogenerated input type of DeleteTeamMember
input DeleteTeamMemberInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team_member_id: ID!
}

# Autogenerated return type of DeleteTeamMember
type DeleteTeamMemberPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  deletedMembershipId: ID
  errors: Hash
  me: User
}

# Autogenerated input type of DeleteTeamSlackIntegration
input DeleteTeamSlackIntegrationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  slack_integration_id: ID!
}

# Autogenerated return type of DeleteTeamSlackIntegration
type DeleteTeamSlackIntegrationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team: Team
}

# Autogenerated input type of DeleteUserLufthansaAccount
input DeleteUserLufthansaAccountInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
}

# Autogenerated return type of DeleteUserLufthansaAccount
type DeleteUserLufthansaAccountPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# Autogenerated input type of DisableTwoFactorAuthentication
input DisableTwoFactorAuthenticationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  password: String!
  totp_code: String!
}

# Autogenerated return type of DisableTwoFactorAuthentication
type DisableTwoFactorAuthenticationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [String]
  me: User
}

# Autogenerated input type of DismissProgramHealthAcknowledgementMutation
input DismissProgramHealthAcknowledgementMutationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  program_health_acknowledgement_id: ID!
}

# Autogenerated return type of DismissProgramHealthAcknowledgementMutation
type DismissProgramHealthAcknowledgementMutationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  dismissed_program_health_acknowledgement_id: String!
  errors: [Error]
  me: User
  was_successful: Boolean!
}

# Autogenerated input type of EnableTwoFactorAuthentication
input EnableTwoFactorAuthenticationInput {
  backup_codes: [String]!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  password: String!
  signature: String!
  totp_code: String!
  totp_secret: String!
}

# Autogenerated return type of EnableTwoFactorAuthentication
type EnableTwoFactorAuthenticationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [String]
  me: User
}

# Autogenerated input type of EnableUser
input EnableUserInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
}

# Autogenerated return type of EnableUser
type EnableUserPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# Autogenerated input type of EnrollForProgram
input EnrollForProgramInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team_id: ID!
}

# Autogenerated return type of EnrollForProgram
type EnrollForProgramPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  deleted_recommended_program_edge: TeamEdge
  query: Query!
  teams_connection: TeamConnection
}

# An error
type Error implements Node {
  field: String
  id: ID!
  message: String!
  type: ErrorTypeEnum!
}

# Types of errors that can occur
enum ErrorTypeEnum {
  ARGUMENT
  AUTHORIZATION
}

# An External Program
type ExternalProgram implements Node {
  # The primary key from the database
  _id: ID!
  about: String
  handle: String!

  # ID of the object.
  id: ID!
  name: String!
  profile_picture(size: ProfilePictureSizes!): String!
}

# Autogenerated input type of GenerateMfaOtp
input GenerateMfaOtpInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
}

# Autogenerated return type of GenerateMfaOtp
type GenerateMfaOtpPayload {
  backup_codes: [String]

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  me: User
  qrcode: Hash
  signature: String
  totp_secret: String
}

# Autogenerated input type of GenerateTaxFormUrl
input GenerateTaxFormUrlInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
}

# Autogenerated return type of GenerateTaxFormUrl
type GenerateTaxFormUrlPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# A HackeronePayroll Payout Preference
type HackeronePayrollPayoutPreferenceType implements Node, PayoutPreferenceInterface {
  _id: ID!
  default: Boolean
  email: String
  id: ID!
}

# Configuration for the events sent from HackerOne to JIRA
type HackeroneToJiraEventsConfiguration implements Node {
  assignee_changes: Boolean!
  comments: Boolean!
  id: ID!
  public_disclosures: Boolean!
  rewards: Boolean!
  state_changes: Boolean!
  team: Team!
}

scalar Hash

# An interface for the common fields on a HackerOne Invitation
interface InvitationInterface {
  _id: ID!
}

# User invitation preference type
enum InvitationPreferenceTypeEnum {
  always
  bounty_only
  never
}

# Invitations can be of multiple types
union InvitationUnion = InvitationsSoftLaunch

# The connection type for InvitationUnion.
type InvitationUnionConnection {
  # A list of edges.
  edges: [InvitationUnionEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type InvitationUnionEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: InvitationUnion
}

# An invitation to join a private team as a hacker
type InvitationsSoftLaunch implements InvitationInterface, Node {
  _id: ID!
  expires_at: String
  id: ID!
  markdown_message: String
  message: String
  team: Team!
  token: String
}

# A JIRA integration for a team
type JiraIntegration implements Node {
  assignee: String
  base_url: String!
  created_at: String!
  custom: String
  description: String!
  id: ID!
  issue_type: Int!
  labels: String
  pid: Int!
  summary: String!
  team: Team!
  updated_at: String!
}

# A JIRA Oauth for a team
type JiraOauth implements Node {
  # Assignables for a project
  assignables(project_id: Int!): [Hash]
  configured: Boolean!
  created_at: String!
  id: ID!
  issue_types: [Hash]
  projects: [Hash]
  site: String
  team: Team!
  updated_at: String!
}

# A JIRA webhook for a team
type JiraWebhook implements Node {
  created_at: String!
  id: ID!
  last_event_received_at: String
  last_token_issued_at: String
  process_assignee_change: Boolean!
  process_comment_add: Boolean!
  process_priority_change: Boolean!
  process_resolution_change: Boolean!
  process_status_change: Boolean!
  team: Team!
  updated_at: String!
}

# Autogenerated input type of LeavePrivateProgram
input LeavePrivateProgramInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  handle: String!
}

# Autogenerated return type of LeavePrivateProgram
type LeavePrivateProgramPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  me: User
  was_successful: Boolean!
}

# Autogenerated input type of LockReport
input LockReportInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  report_id: ID!
}

# Autogenerated return type of LockReport
type LockReportPayload {
  activities: ActivityUnionConnection
  activity: ActivitiesComment

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  new_activity_edge: ActivityUnionEdge
  report: Report
}

# Settings for a user's Lufthansa Account
type LufthansaAccount implements Node {
  created_at: String!
  first_name: String!
  id: ID!
  last_name: String!
  number: String!
  updated_at: String!
}

# Autogenerated input type of MarkReportAsNeedsMoreInfo
input MarkReportAsNeedsMoreInfoInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  message: String!
  report_id: ID!
}

# Autogenerated return type of MarkReportAsNeedsMoreInfo
type MarkReportAsNeedsMoreInfoPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  query: Query
  report: Report
  report_id: ID!
  was_successful: Boolean!
}

# Autogenerated input type of MarkReportAsNoise
input MarkReportAsNoiseInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  message: String!
  report_id: ID!
}

# Autogenerated return type of MarkReportAsNoise
type MarkReportAsNoisePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  query: Query
  report: Report
  was_successful: Boolean!
}

# Autogenerated input type of MarkReportAsSignal
input MarkReportAsSignalInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  message: String
  report_id: ID!
}

# Autogenerated return type of MarkReportAsSignal
type MarkReportAsSignalPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  query: Query
  report: Report
  was_successful: Boolean!
}

type Mutation {
  acceptInvitation(input: AcceptInvitationInput!): AcceptInvitationPayload
  acknowledgeProgramHealthAcknowledgement(input: AcknowledgeProgramHealthAcknowledgementMutationInput!): AcknowledgeProgramHealthAcknowledgementMutationPayload
  archiveStructuredScope(input: ArchiveStructuredScopeInput!): ArchiveStructuredScopePayload
  createActivityComment(input: CreateActivityCommentInput!): CreateActivityCommentPayload
  createBounty(input: CreateBountyInput!): CreateBountyPayload
  createBountySuggestion(input: CreateBountySuggestionInput!): CreateBountySuggestionPayload
  createCoinbasePayoutPreference(input: CreateCoinbasePayoutPreferenceInput!): CreateCoinbasePayoutPreferencePayload
  createCurrencycloudBankTransferPayoutPreference(input: CreateCurrencycloudBankTransferPayoutPreferenceInput!): CreateCurrencycloudBankTransferPayoutPreferencePayload
  createJiraOauthUrl(input: CreateJiraOauthUrlInput!): CreateJiraOauthUrlPayload
  createJiraWebhookToken(input: CreateJiraWebhookTokenInput!): CreateJiraWebhookTokenPayload
  createMailingAddress(input: CreateMailingAddressInput!): CreateMailingAddressPayload
  createOrUpdateHackeroneToJiraEventsConfiguration(input: CreateOrUpdateHackeroneToJiraEventsConfigurationInput!): CreateOrUpdateHackeroneToJiraEventsConfigurationPayload
  createOrUpdateJiraIntegration(input: CreateOrUpdateJiraIntegrationInput!): CreateOrUpdateJiraIntegrationPayload
  createPaypalPreference(input: CreatePaypalPreferenceInput!): CreatePaypalPreferencePayload
  createSlackPipeline(input: CreateSlackPipelineInput!): CreateSlackPipelinePayload
  createStructuredScope(input: CreateStructuredScopeInput!): CreateStructuredScopePayload
  createSurveyAnswer(input: CreateSurveyAnswerInput!): CreateSurveyAnswerPayload
  createSwag(input: CreateSwagInput!): CreateSwagPayload
  createTaxForm(input: CreateTaxFormInput!): CreateTaxFormPayload
  createUserBountiesReport(input: CreateUserBountiesReportInput!): CreateUserBountiesReportPayload
  createUserLufthansaAccount(input: CreateUserLufthansaAccountInput!): CreateUserLufthansaAccountPayload
  deleteBiDirectionalJiraIntegration(input: DeleteBiDirectionalJiraIntegrationInput!): DeleteBiDirectionalJiraIntegrationPayload
  deleteJiraWebhook(input: DeleteJiraWebhookInput!): DeleteJiraWebhookPayload
  deletePhabricatorIntegration(input: DeletePhabricatorIntegrationInput!): DeletePhabricatorIntegrationPayload
  deleteSlackPipeline(input: DeleteSlackPipelineInput!): DeleteSlackPipelinePayload
  deleteTeamMember(input: DeleteTeamMemberInput!): DeleteTeamMemberPayload
  deleteTeamSlackIntegration(input: DeleteTeamSlackIntegrationInput!): DeleteTeamSlackIntegrationPayload
  deleteUserLufthansaAccount(input: DeleteUserLufthansaAccountInput!): DeleteUserLufthansaAccountPayload
  disableTwoFactorAuthentication(input: DisableTwoFactorAuthenticationInput!): DisableTwoFactorAuthenticationPayload
  dismissProgramHealthAcknowledgement(input: DismissProgramHealthAcknowledgementMutationInput!): DismissProgramHealthAcknowledgementMutationPayload
  enableTwoFactorAuthentication(input: EnableTwoFactorAuthenticationInput!): EnableTwoFactorAuthenticationPayload
  enableUser(input: EnableUserInput!): EnableUserPayload
  enrollForProgram(input: EnrollForProgramInput!): EnrollForProgramPayload
  generateMfaOtp(input: GenerateMfaOtpInput!): GenerateMfaOtpPayload
  generateTaxFormUrl(input: GenerateTaxFormUrlInput!): GenerateTaxFormUrlPayload
  leavePrivateProgram(input: LeavePrivateProgramInput!): LeavePrivateProgramPayload
  lockReport(input: LockReportInput!): LockReportPayload
  markReportAsNeedsMoreInfo(input: MarkReportAsNeedsMoreInfoInput!): MarkReportAsNeedsMoreInfoPayload
  markReportAsNoise(input: MarkReportAsNoiseInput!): MarkReportAsNoisePayload
  markReportAsSignal(input: MarkReportAsSignalInput!): MarkReportAsSignalPayload
  rejectInvitation(input: RejectInvitationInput!): RejectInvitationPayload
  updateAutomaticInvites(input: UpdateAutomaticInvitesInput!): UpdateAutomaticInvitesPayload
  updateBackupCodes(input: UpdateBackupCodesInput!): UpdateBackupCodesPayload
  updateInvitationPreferences(input: UpdateInvitationPreferencesInput!): UpdateInvitationPreferencesPayload
  updateJiraWebhook(input: UpdateJiraWebhookInput!): UpdateJiraWebhookPayload
  updateMe(input: UpdateMeInput!): UpdateMePayload
  updatePhabricatorIntegration(input: UpdatePhabricatorIntegrationInput!): UpdatePhabricatorIntegrationPayload
  updateReportStateToNeedsMoreInfo(input: UpdateReportStateToNeedsMoreInfoInput!): UpdateReportStateToNeedsMoreInfoPayload
  updateReportStructuredScope(input: UpdateReportStructuredScopeInput!): UpdateReportStructuredScopePayload
  updateSlackPipeline(input: UpdateSlackPipelineInput!): UpdateSlackPipelinePayload
  updateSlackUser(input: UpdateSlackUserInput!): UpdateSlackUserPayload
  updateStructuredScope(input: UpdateStructuredScopeInput!): UpdateStructuredScopePayload
  updateTeamFancySlackIntegration(input: UpdateTeamFancySlackIntegrationInput!): UpdateTeamFancySlackIntegrationPayload
  updateTeamMemberVisibility(input: UpdateTeamMemberVisibilityInput!): UpdateTeamMemberVisibilityPayload
  updateTeamSubmissionState(input: UpdateTeamSubmissionStateInput!): UpdateTeamSubmissionStatePayload
  updateTeamSubscription(input: UpdateTeamSubscriptionInput!): UpdateTeamSubscriptionPayload
  updateTeamWeakness(input: UpdateTeamWeaknessInput!): UpdateTeamWeaknessPayload
  updateUserEmail(input: UpdateUserEmailInput!): UpdateUserEmailPayload
  updateUserLufthansaAccount(input: UpdateUserLufthansaAccountInput!): UpdateUserLufthansaAccountPayload
  updateUserPassword(input: UpdateUserPasswordInput!): UpdateUserPasswordPayload
}

# An object with an ID.
interface Node {
  # ID of the object.
  id: ID!
}

# Possible directions for sorting a collection
enum OrderDirection {
  ASC
  DESC
}

# Information about pagination in a connection.
type PageInfo {
  # When paginating forwards, the cursor to continue.
  endCursor: String

  # When paginating forwards, are there more items?
  hasNextPage: Boolean!

  # When paginating backwards, are there more items?
  hasPreviousPage: Boolean!

  # When paginating backwards, the cursor to continue.
  startCursor: String
}

# The connection type for User.
type ParticipantConnection {
  # A list of edges.
  edges: [ParticipantWithReputationEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
  year_range: [Int]
}

# An edge in a connection.
type ParticipantWithReputationEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: User

  # The participant's rank within the team
  rank: Int

  # The participant's reputation within the team
  reputation: Int
}

# A interface for the common fields on an Payout Preference
interface PayoutPreferenceInterface {
  _id: ID!
  default: Boolean
  id: ID!
}

# A user can have payout preferences for different payment services
union PayoutPreferenceUnion = CoinbasePayoutPreferenceType | CurrencycloudBankTransferPayoutPreferenceType | HackeronePayrollPayoutPreferenceType | PaypalPayoutPreferenceType

# A Paypal Payout Preference
type PaypalPayoutPreferenceType implements Node, PayoutPreferenceInterface {
  _id: ID!
  default: Boolean
  email: String
  id: ID!
}

# All available permissions
enum PermissionEnum {
  program_management
}

# A Phabricator integration for a team
type PhabricatorIntegration implements Node {
  base_url: String
  created_at: String!
  description: String
  id: ID!
  process_h1_comment_added: Boolean!
  process_h1_status_change: Boolean!
  process_phabricator_comment_added: Boolean!
  process_phabricator_status_change: Boolean!
  project_tags: String
  team: Team!
  title: String
  updated_at: String!
}

# Different possible profile picture sizes
enum ProfilePictureSizes {
  # 110x110
  large

  # 82x82
  medium

  # 62x62
  small

  # 260x260
  xtralarge
}

# A program_health_acknowledgement for a team_member
type ProgramHealthAcknowledgement implements Node {
  acknowledged: Boolean
  created_at: String
  dismissed: Boolean
  id: ID!
  reason: ProgramHealthAcknowledgementReasonEnum
  team_member: TeamMember!
}

# The connection type for ProgramHealthAcknowledgement.
type ProgramHealthAcknowledgementConnection {
  # A list of edges.
  edges: [ProgramHealthAcknowledgementEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type ProgramHealthAcknowledgementEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: ProgramHealthAcknowledgement
}

# reason which reflect the state of a program health acknowledgement
enum ProgramHealthAcknowledgementReasonEnum {
  failed
  ok
  paused
  review
}

# Root entity of the Hackerone Schema
type Query implements Node {
  bank_transfer_reference: BankTransferReference
  clusters(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: ClusterOrder = {direction: ASC, field: BROWSING_FRIENDLY}
  ): ClusterConnection
  external_program(handle: String!): ExternalProgram
  id: ID!
  me: User

  # Fetches an object given its ID.
  node(
    # ID of the object.
    id: ID!
  ): Node
  query: Query!
  report(id: Int!): Report @deprecated(reason: "Query for a Report node at the root level is not recommended.")
  reports(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    database_id: Int = null

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int

    # Relay classic does not have support for starting paginationsomewhere in the
    # middle, see https://github.com/facebook/relay/issues/1312 Workaround is to
    # add a page argument till Relay supports this
    limit: Int = null
    order_by: ReportOrderInput = {direction: DESC, field: id}

    # Relay classic does not have support for starting paginationsomewhere in the
    # middle, see https://github.com/facebook/relay/issues/1312 Workaround is to
    # add a page argument till Relay supports this
    page: Int = null
    pre_submission_review_states: [ReportPreSubmissionReviewStateEnum] = null
    substate: ReportStateEnum
    without_scope: Boolean = null
  ): ReportConnection
  resource(url: URI): ResourceInterface
  session: Session
  severity_calculator: SeverityCalculator
  surveys(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    category: SurveyCategoryEnum

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): SurveyConnectionType
  team(handle: String!): Team @deprecated(reason: "Query for a Team node at the root level is not recommended. Ref T12456")
  teams(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    enrollable: Boolean

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: TeamOrderInput
    permissions: [PermissionEnum] = []
  ): TeamConnection
  user(username: String!): User @deprecated(reason: "Query for a User node at the root level is not recommended. Ref T12456")
  users(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): UserConnection
}

# Autogenerated input type of RejectInvitation
input RejectInvitationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  handle: String!
}

# Autogenerated return type of RejectInvitation
type RejectInvitationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  me: User
}

# A HackerOne report
type Report implements Node, ResourceInterface {
  _id: ID!
  activities(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    not_types: [ActivityTypes]
    order_by: ActivityOrderInput
    types: [ActivityTypes]

    # A timestamp encoded as a string that. When provided, only activities with a
    # updated_at greater than this value will be resolved. Example:
    # activities(updated_at_after: "2017-11-30 13:37:12 UTC")
    updated_at_after: String
  ): ActivityConnection
  allow_singular_disclosure_after: String
  allow_singular_disclosure_at: String
  assignee: AssigneeUnion
  attachments: [Attachment]
  bounties: [Bounty]
  bounty_awarded_at: String
  bug_reporter_agreed_on_going_public_at: String
  cloned_from: Report
  closed_at: String
  comments_closed: Boolean
  created_at: String!
  cve_ids: [String]
  disclosed_at: String
  first_program_activity_at: String
  i_can_anc_review: Boolean
  id: ID!
  latest_activity_at: String
  latest_public_activity_at: String
  latest_public_activity_of_reporter_at: String
  latest_public_activity_of_team_at: String
  mediation_requested_at: String
  original_report: Report
  pre_submission_review_state: String
  reference: ID
  reference_link: String
  reporter: User
  severity: Severity
  singular_disclosure_allowed: Boolean
  singular_disclosure_disabled: Boolean
  stage: String
  stale: Boolean
  state: String
  structured_scope: StructuredScope
  substate: String!
  suggested_bounty: String
  summaries: [Summary]
  swag: [Swag]
  swag_awarded_at: String
  team: Team
  team_member_agreed_on_going_public_at: String
  title: String
  triaged_at: String

  # A pre-submission trigger that notified the hacker before submission. This
  # field is only present for reports filed after February 14, 2016.
  triggered_pre_submission_trigger: Trigger
  url: URI!
  vulnerability_information: String
  vulnerability_information_html: String
  weakness: Weakness
}

# A interface for the common fields on an HackerOne Report Activity
interface ReportActivityInterface {
  attachments: [Attachment]
  automated_response: Boolean
  genius_execution_id: ID @deprecated(reason: "This is about to be replaced by .genius_execution")
  report: Report
}

# The connection type for Report.
type ReportConnection {
  # Groups and counts reports by the severity rating
  count_by_severity: [CountBySeverity]!

  # A list of edges.
  edges: [ReportEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type ReportEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Report
}

# Filters which can be used to query reports
enum ReportFilterEnum {
  assigned
  assigned_to_me
  bounty_awarded
  going_public_team
  going_public_user
  hacker_requested_mediation
  ineligible_for_bounty
  needs_first_program_response
  no_bounty_awarded
  no_swag_awarded
  not_public
  public
  reporter_is_active
  stale
  swag_awarded
  unassigned
}

# Fields on which a collection of reports can be ordered
enum ReportOrderField {
  created_at
  id
  latest_activity_at
}

input ReportOrderInput {
  direction: OrderDirection!
  field: ReportOrderField!
}

# Pre submission review states a report can be in
enum ReportPreSubmissionReviewStateEnum {
  pre_submission_accepted
  pre_submission_needs_more_info
  pre_submission_pending
  pre_submission_rejected
}

# States a report can be in
enum ReportStateEnum {
  closed
  duplicate
  informative
  needs_more_info
  new
  not_applicable
  open
  pre_submission
  resolved
  spam
  triaged
}

# The connection type for User.
type ReporterConnection {
  # A list of edges.
  edges: [UserEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# Represents a type that can be retrieved by a URL.
interface ResourceInterface {
  url: URI!
}

# A HackerOne session
type Session implements Node {
  csrf_token: String! @deprecated(reason: "This token is used to support legacy operations in HackerOne's frontend")
  id: ID!
}

# A HackerOne severity for a report
type Severity implements Node {
  _id: ID!
  attack_complexity: SeverityAttackComplexityEnum
  attack_vector: SeverityAttackVectorEnum
  author_type: SeverityAuthorEnum
  availability: SeverityAvailabilityEnum
  confidentiality: SeverityConfidentialityEnum
  created_at: String
  id: ID!
  integrity: SeverityIntegrityEnum
  privileges_required: SeverityPrivilegesRequiredEnum
  rating: SeverityRatingEnum
  scope: SeverityScopeEnum
  score: Float
  user_id: Int
  user_interaction: SeverityUserInteractionEnum
}

# Severity attack complexity
enum SeverityAttackComplexityEnum {
  high
  low
}

# Severity attack vector
enum SeverityAttackVectorEnum {
  adjacent
  local
  network
  physical
}

# Severity author
enum SeverityAuthorEnum {
  Team
  User
}

# Severity availability
enum SeverityAvailabilityEnum {
  high
  low
  none
}

# Calculate CVSS Severity score and rating
type SeverityCalculator implements Node {
  calculated_max_severity(availability_requirement: SeveritySecurityRequirementEnum, confidentiality_requirement: SeveritySecurityRequirementEnum, integrity_requirement: SeveritySecurityRequirementEnum): SeverityRatingEnum
  id: ID!
}

# Severity confidentiality
enum SeverityConfidentialityEnum {
  high
  low
  none
}

# Severity integrity
enum SeverityIntegrityEnum {
  high
  low
  none
}

# Severity privileges required
enum SeverityPrivilegesRequiredEnum {
  high
  low
  none
}

# Severity rating
enum SeverityRatingEnum {
  critical
  high
  low
  medium
  none
}

# Severity scope
enum SeverityScopeEnum {
  changed
  unchanged
}

# Severity security requirement rating
enum SeveritySecurityRequirementEnum {
  high
  low
  medium
  none
}

# Severity user interaction
enum SeverityUserInteractionEnum {
  none
  required
}

# SLA types
enum SlaTypeEnum {
  first_program_response
  report_triage
}

# Slack channel
type SlackChannel implements Node {
  # ID of the object.
  id: ID!
  name: String!
}

# A Slack integration for a team
type SlackIntegration implements Node {
  channel: String @deprecated(reason: "this field is not used in our new Slack integration")
  channels: [SlackChannel]
  id: ID!
  should_fetch_slack_channels: Boolean!
  should_fetch_slack_users: Boolean!
  team: Team!
  team_url: String!
  users: [SlackUser]
}

# A Slack Pipeline Configuration for notifications
type SlackPipeline implements Node, ResourceInterface {
  # The primary key from the database
  _id: ID!
  channel: String!
  descriptive_label: String
  id: ID!
  notification_report_agreed_on_going_public: Boolean!
  notification_report_assignee_changed: Boolean!
  notification_report_became_public: Boolean!
  notification_report_bounty_paid: Boolean!
  notification_report_bounty_suggested: Boolean!
  notification_report_bug_closed_as_spam: Boolean!
  notification_report_bug_duplicate: Boolean!
  notification_report_bug_informative: Boolean!
  notification_report_bug_needs_more_info: Boolean!
  notification_report_bug_new: Boolean!
  notification_report_bug_not_applicable: Boolean!
  notification_report_closed_as_resolved: Boolean!
  notification_report_comments_closed: Boolean!
  notification_report_created: Boolean!
  notification_report_internal_comment_added: Boolean!
  notification_report_manually_disclosed: Boolean!
  notification_report_not_eligible_for_bounty: Boolean!
  notification_report_public_comment_added: Boolean!
  notification_report_reopened: Boolean!
  notification_report_swag_awarded: Boolean!
  notification_report_triaged: Boolean!
  team: Team!
  updated_at: String!
  url: URI!
}

# The connection type for SlackPipeline.
type SlackPipelineConnection {
  # A list of edges.
  edges: [SlackPipelineEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type SlackPipelineEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: SlackPipeline
}

# Slack user
type SlackUser implements Node {
  # The id provided by Slack
  _id: String!
  avatar_small: String!
  deleted: Boolean!
  email: String!

  # ID of the object.
  id: ID!
  name: String!
  real_name: String
}

# A static participant for a team
type StaticParticipant implements Node {
  _id: ID!
  avatar(size: ProfilePictureSizes!): String!
  bio: String
  external_url: String
  id: ID!
  name: String!
  year: String
}

# The connection type for StaticParticipant.
type StaticParticipantConnection {
  # A list of edges.
  edges: [StaticParticipantEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type StaticParticipantEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: StaticParticipant
}

# A defined scope of a HackerOne program
type StructuredScope implements Node, ResourceInterface {
  _id: ID!
  archived_at: String
  asset_identifier: String!
  asset_type: StructuredScopedAssetTypeEnum
  availability_requirement: SeveritySecurityRequirementEnum
  confidentiality_requirement: SeveritySecurityRequirementEnum
  created_at: String!
  eligible_for_bounty: Boolean
  eligible_for_submission: Boolean
  id: ID!
  instruction: String
  integrity_requirement: SeveritySecurityRequirementEnum
  max_severity: SeverityRatingEnum
  reference: String
  rendered_instruction: String
  reports(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): ReportConnection
  structured_scope_versions(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): StructuredScopeVersionConnection
  team: Team
  updated_at: String
  url: URI!
}

# An edge in a connection.
type StructuredScopeEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: StructuredScope
}

# A versioned log of a scope of a HackerOne program
type StructuredScopeVersion implements Node, ResourceInterface {
  _id: ID!
  archived_at: String
  created_at: String!
  id: ID!
  instruction: String
  max_severity: String
  team: Team
  url: URI!
}

# The connection type for StructuredScopeVersion.
type StructuredScopeVersionConnection {
  # A list of edges.
  edges: [StructuredScopeVersionEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
}

# An edge in a connection.
type StructuredScopeVersionEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: StructuredScopeVersion
}

# Structured Scope asset type enum
enum StructuredScopedAssetTypeEnum {
  APPLE_STORE_APP_ID
  CIDR
  DOWNLOADABLE_EXECUTABLES
  GOOGLE_PLAY_APP_ID
  HARDWARE
  OTHER
  OTHER_APK
  OTHER_IPA
  SOURCE_CODE
  TESTFLIGHT
  URL
  WINDOWS_APP_STORE_APP_ID
}

# The connection type for StructuredScope.
type StructuredScopesConnection {
  # A list of edges.
  edges: [StructuredScopeEdge]
  max_updated_at: String

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# Submission states
enum SubmissionStateEnum {
  disabled
  open
  paused
}

# Team subscription action enum
enum SubscriptionActionEnum {
  subscribe_to_all
  unsubscribe_from_all
}

# A HackerOne summary for a report
type Summary implements Node {
  _id: ID!
  category: String! @deprecated(reason: "The implementation of this field contains hard to reason about polymorphism")
  content: String!
  created_at: String!
  id: ID!
  updated_at: String!
  user: User!
}

# A HackerOne survey
type Survey implements Node, ResourceInterface {
  category: String!
  id: ID!
  question: String!
  structured_responses(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): SurveyStructuredResponseConnectionType
  url: URI!
}

# Survey categories
enum SurveyCategoryEnum {
  invitation_rejection
}

# The connection type for Survey.
type SurveyConnectionType {
  # A list of edges.
  edges: [SurveyEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type SurveyEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Survey
}

# Prepared survey response reasons
type SurveyStructuredResponse implements Node {
  _id: ID!
  enabled: Boolean!
  helper_text: String
  id: ID!
  reason: String!
  survey: Survey
}

# The connection type for SurveyStructuredResponse.
type SurveyStructuredResponseConnectionType {
  # A list of edges.
  edges: [SurveyStructuredResponseEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type SurveyStructuredResponseEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: SurveyStructuredResponse
}

# A HackerOne swag awarded for a report
type Swag implements Node {
  _id: ID!
  address: Address @deprecated(reason: "This field is deprecated. The preferred way to access this data is using swag.user.address.")
  created_at: String
  id: ID!
  report: Report
  sent: Boolean!
  team: Team
  user: User
}

# The connection type for Swag.
type SwagConnection {
  # A list of edges.
  edges: [SwagEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
}

# An edge in a connection.
type SwagEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Swag
}

# A tax form for a user
type TaxForm implements Node {
  created_at: String!
  hello_sign_client_id: String
  id: ID!
  signed_at: String
  status: TaxFormStateEnum!
  type: TaxFormTypeEnum!
  url: String
}

# Status of a tax form
enum TaxFormStateEnum {
  expired
  needs_review
  rejected
  requested
  unavailable
  valid
}

# Type of a tax form
enum TaxFormTypeEnum {
  W8BEN
  W8BENE
  W9
  W9Corporate
}

# A HackerOne team
type Team implements Node, ResourceInterface {
  # The primary key from the database
  _id: ID!
  about: String
  abuse: Boolean
  activities(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    not_types: [ActivityTypes]
    order_by: ActivityOrderInput
    types: [ActivityTypes]

    # A timestamp encoded as a string that. When provided, only activities with a
    # updated_at greater than this value will be resolved. Example:
    # activities(updated_at_after: "2017-11-30 13:37:12 UTC")
    updated_at_after: String
  ): ActivityConnection
  automatic_invites: Boolean
  base_bounty: Int
  bug_count: Int
  child_teams(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): TeamConnection
  common_responses(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: CommonResponseOrder = {direction: ASC, field: title}
  ): CommonResponseConnection
  created_at: String
  currency: String
  fancy_slack_integration: Boolean
  fancy_slack_integration_enabled: Boolean!
  first_response_time: Float
  hackerone_to_jira_events_configuration: HackeroneToJiraEventsConfiguration
  handle: String!
  has_avatar: Boolean
  has_policy: Boolean
  i_can_create_jira_webhook: Boolean
  i_can_destroy_jira_webhook: Boolean!
  i_can_view_base_bounty: Boolean
  i_can_view_jira_integration: Boolean
  i_can_view_jira_webhook: Boolean
  i_can_view_phabricator_integration: Boolean
  i_can_view_program_health: Boolean!
  i_can_view_reports_resolved: Boolean
  i_can_view_weaknesses: Boolean
  i_cannot_create_jira_webhook_reasons: [TeamCannotCreateJiraWebhookReasons]!
  id: ID!
  inbox_views(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: TeamInboxViewOrder = {direction: ASC, field: position}
    visible: Boolean
  ): TeamInboxViewConnection
  internet_bug_bounty: Boolean
  jira_integration: JiraIntegration
  jira_oauth: JiraOauth
  jira_phase_3_enabled: Boolean!
  jira_webhook: JiraWebhook
  maximum_number_of_team_mediation_requests: Float
  name: String!
  new_staleness_threshold: Int
  offers_bounties: Boolean
  offers_swag: Boolean
  open_soft_launch_invitations(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): InvitationUnionConnection @deprecated(reason: "This should be a generic invitation connection.\n       Used interim until generic invitation type is defined")
  participants(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    limit: Int = null
    year: Int = null
  ): ParticipantConnection
  phabricator_integration: PhabricatorIntegration
  policy_html: String
  profile_picture(size: ProfilePictureSizes!): String!
  report_submission_form_intro: String
  report_template: String
  reporters(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): ReporterConnection
  reports(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    database_id: Int = null

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int

    # Relay classic does not have support for starting paginationsomewhere in the
    # middle, see https://github.com/facebook/relay/issues/1312 Workaround is to
    # add a page argument till Relay supports this
    limit: Int = null
    order_by: ReportOrderInput = {direction: DESC, field: id}

    # Relay classic does not have support for starting paginationsomewhere in the
    # middle, see https://github.com/facebook/relay/issues/1312 Workaround is to
    # add a page argument till Relay supports this
    page: Int = null
    pre_submission_review_states: [ReportPreSubmissionReviewStateEnum] = null
    state: ReportStateEnum
    substate: ReportStateEnum
    violates_minimum_sla: SlaTypeEnum
    without_scope: Boolean = null
  ): ReportConnection
  review_requested_at: String
  sla_failed_count: Int
  sla_missed_count: Int
  slack_integration: SlackIntegration
  slack_pipelines(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): SlackPipelineConnection
  state: TeamState!
  static_participants(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): StaticParticipantConnection
  structured_scopes(
    # Returns the elements in the list that come after the specified cursor.
    after: String
    archived: Boolean = null
    asset_type: String = null

    # Returns the elements in the list that come before the specified cursor.
    before: String
    eligible_for_submission: Boolean = null

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    search: String = null
  ): StructuredScopesConnection
  submission_state: SubmissionStateEnum!
  target_signal: Float
  team_member_groups(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): TeamMemberGroupConnection
  team_members(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: TeamMemberOrder = {direction: ASC, field: username}
  ): TeamMemberConnection
  triage_active: Boolean
  triage_time: Float
  triaged_staleness_threshold: Int
  twitter_handle: String
  updated_at: String
  url: URI!
  weaknesses(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    cluster_id: ID = null

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: WeaknessOrder = {direction: ASC, field: name}
    search: String = null
    team_weakness_state: [TeamWeaknessStates] = [enabled, disabled, hidden]
  ): TeamWeaknessConnection
  website: String
  whitelisted_hackers(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): ReporterConnection
}

# Different reasons why a team cannot create a jira webhook
enum TeamCannotCreateJiraWebhookReasons {
  CANNOT_VIEW
  FEATURE_GATED
  PROGRAM_PERMISSION_REQUIRED
}

# The connection type for Team.
type TeamConnection {
  # A list of edges.
  edges: [TeamEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type TeamEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Team
}

# A team report filter preset
type TeamInboxView implements Node {
  _id: ID!
  assigned_to_group_ids: [Int!]!
  assigned_to_user_ids: [Int!]!
  built_in: Boolean!
  created_at: String!
  filters: [ReportFilterEnum!]!
  hackathons: [Int!]!
  id: ID!
  key: String!
  name: String!
  position: Int!
  reporter_ids: [Int!]!
  severities: [String!]!
  substates: [ReportStateEnum!]!
  team: Team!
  text_query: String!
  updated_at: String!
  visible: Boolean!
}

# The connection type for TeamInboxView.
type TeamInboxViewConnection {
  # A list of edges.
  edges: [TeamInboxViewEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type TeamInboxViewEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: TeamInboxView
}

input TeamInboxViewOrder {
  direction: OrderDirection!
  field: TeamInboxViewOrderField!
}

# Fields on which a collection of team inbox views can be ordered
enum TeamInboxViewOrderField {
  position
}

# A HackerOne team member
type TeamMember implements Node {
  # The primary key from the database
  _id: ID!
  auto_subscribe: Boolean
  concealed: Boolean
  created_at: String!
  i_can_leave_team: Boolean!
  id: ID!
  permissions: [String]!
  slack_user_id: String
  team: Team!
  user: User!
}

# The connection type for TeamMember.
type TeamMemberConnection {
  # A list of edges.
  edges: [TeamMemberEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type TeamMemberEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: TeamMember
}

# A HackerOne team member group
type TeamMemberGroup implements Node {
  _id: ID!
  created_at: String

  # ID of the object.
  id: ID!
  name: String!
  permissions: [String]!
}

# The connection type for TeamMemberGroup.
type TeamMemberGroupConnection {
  # A list of edges.
  edges: [TeamMemberGroupEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
}

# An edge in a connection.
type TeamMemberGroupEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: TeamMemberGroup
}

input TeamMemberOrder {
  direction: OrderDirection!
  field: TeamMemberOrderField!
}

# Fields on which a collection of team members can be ordered
enum TeamMemberOrderField {
  username
}

# Fields on which a collection of Teams can be ordered
enum TeamOrderField {
  missing_pressure
  name
}

input TeamOrderInput {
  direction: OrderDirection!
  field: TeamOrderField!
}

# Different possible team states
enum TeamState {
  da_mode
  inactive
  public_mode
  sandboxed
  soft_launched
}

# Team configuration of a weakness
type TeamWeakness implements Node {
  id: ID!
  instruction: String
  state: TeamWeaknessStates
  team: Team!
  weakness: Weakness!
}

# The connection type for Weakness.
type TeamWeaknessConnection {
  # A list of edges.
  edges: [TeamWeaknessEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type TeamWeaknessEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: Weakness
  team_weakness: TeamWeakness
}

# Possible states of how a weakness can be configured for a team
enum TeamWeaknessStates {
  disabled
  enabled
  hidden
}

# A HackerOne trigger
type Trigger implements Node {
  _id: ID!
  id: ID!
  title: String!
}

# Tshirt size
enum TshirtSizeEnum {
  M_Large
  M_Medium
  M_Small
  M_XLarge
  M_XXLarge
  W_Large
  W_Medium
  W_Small
  W_XLarge
  W_XXLarge
}

# Represents a RFC compliant URI string. It is often used to fetch an object.
scalar URI

# Autogenerated input type of UpdateAutomaticInvites
input UpdateAutomaticInvitesInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  enabled: Boolean!
  handle: String!
}

# Autogenerated return type of UpdateAutomaticInvites
type UpdateAutomaticInvitesPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team: Team
}

# Autogenerated input type of UpdateBackupCodes
input UpdateBackupCodesInput {
  backup_codes: [String]!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  password: String!
  signature: String!
  totp_code: String!
  totp_secret: String!
}

# Autogenerated return type of UpdateBackupCodes
type UpdateBackupCodesPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [String]
  me: User
}

# Autogenerated input type of UpdateInvitationPreferences
input UpdateInvitationPreferencesInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  invitation_preference: InvitationPreferenceTypeEnum!
}

# Autogenerated return type of UpdateInvitationPreferences
type UpdateInvitationPreferencesPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# Autogenerated input type of UpdateJiraWebhook
input UpdateJiraWebhookInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  jira_webhook_id: ID!
  process_assignee_change: Boolean
  process_comment_add: Boolean
  process_priority_change: Boolean
  process_resolution_change: Boolean
  process_status_change: Boolean
}

# Autogenerated return type of UpdateJiraWebhook
type UpdateJiraWebhookPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  jira_webhook: JiraWebhook!
}

# Autogenerated input type of UpdateMe
input UpdateMeInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  tshirt_size: String!
}

# Autogenerated return type of UpdateMe
type UpdateMePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# Autogenerated input type of UpdatePhabricatorIntegration
input UpdatePhabricatorIntegrationInput {
  api_token: String
  base_url: String

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  description: String
  process_h1_comment_added: Boolean
  process_h1_status_change: Boolean
  process_phabricator_comment_added: Boolean
  process_phabricator_status_change: Boolean
  team_id: ID!
  title: String
}

# Autogenerated return type of UpdatePhabricatorIntegration
type UpdatePhabricatorIntegrationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team: Team
}

# Autogenerated input type of UpdateReportStateToNeedsMoreInfo
input UpdateReportStateToNeedsMoreInfoInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  message: String!
  report_id: ID!
}

# Autogenerated return type of UpdateReportStateToNeedsMoreInfo
type UpdateReportStateToNeedsMoreInfoPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  report: Report
}

# Autogenerated input type of UpdateReportStructuredScope
input UpdateReportStructuredScopeInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  report_id: ID!
  structured_scope_id: ID
}

# Autogenerated return type of UpdateReportStructuredScope
type UpdateReportStructuredScopePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  report: Report
}

# Autogenerated input type of UpdateSlackPipeline
input UpdateSlackPipelineInput {
  channel: String!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  descriptive_label: String
  notification_report_agreed_on_going_public: Boolean!
  notification_report_assignee_changed: Boolean!
  notification_report_became_public: Boolean!
  notification_report_bounty_paid: Boolean!
  notification_report_bounty_suggested: Boolean!
  notification_report_bug_closed_as_spam: Boolean!
  notification_report_bug_duplicate: Boolean!
  notification_report_bug_informative: Boolean!
  notification_report_bug_needs_more_info: Boolean!
  notification_report_bug_new: Boolean!
  notification_report_bug_not_applicable: Boolean!
  notification_report_closed_as_resolved: Boolean!
  notification_report_comments_closed: Boolean!
  notification_report_created: Boolean!
  notification_report_internal_comment_added: Boolean!
  notification_report_manually_disclosed: Boolean!
  notification_report_not_eligible_for_bounty: Boolean!
  notification_report_public_comment_added: Boolean!
  notification_report_reopened: Boolean!
  notification_report_swag_awarded: Boolean!
  notification_report_triaged: Boolean!
  slack_pipeline_id: ID!
}

# Autogenerated return type of UpdateSlackPipeline
type UpdateSlackPipelinePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  slack_pipeline: SlackPipeline!
}

# Autogenerated input type of UpdateSlackUser
input UpdateSlackUserInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  slack_user_id: String!
  team_member_id: ID!
}

# Autogenerated return type of UpdateSlackUser
type UpdateSlackUserPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team_member: TeamMember!
}

# Autogenerated input type of UpdateStructuredScope
input UpdateStructuredScopeInput {
  asset_identifier: String
  availability_requirement: String

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  confidentiality_requirement: String
  eligible_for_bounty: Boolean
  eligible_for_submission: Boolean
  instruction: String
  integrity_requirement: String
  reference: String
  structured_scope_id: ID!
}

# Autogenerated return type of UpdateStructuredScope
type UpdateStructuredScopePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  query: Query
  structured_scope: StructuredScope
}

# Autogenerated input type of UpdateTeamFancySlackIntegration
input UpdateTeamFancySlackIntegrationInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  fancy_slack_integration: Boolean!
  team_id: ID!
}

# Autogenerated return type of UpdateTeamFancySlackIntegration
type UpdateTeamFancySlackIntegrationPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team: Team
}

# Autogenerated input type of UpdateTeamMemberVisibility
input UpdateTeamMemberVisibilityInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  concealed: Boolean!
  team_member_id: ID!
}

# Autogenerated return type of UpdateTeamMemberVisibility
type UpdateTeamMemberVisibilityPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team_member: TeamMember
}

# Autogenerated input type of UpdateTeamSubmissionState
input UpdateTeamSubmissionStateInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  handle: String!
  submission_state: SubmissionStateEnum!
}

# Autogenerated return type of UpdateTeamSubmissionState
type UpdateTeamSubmissionStatePayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team: Team
}

# Autogenerated input type of UpdateTeamSubscription
input UpdateTeamSubscriptionInput {
  action: SubscriptionActionEnum
  auto_subscribe: Boolean!

  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  team_member_id: ID!
}

# Autogenerated return type of UpdateTeamSubscription
type UpdateTeamSubscriptionPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  team_member: TeamMember
}

# Autogenerated input type of UpdateTeamWeakness
input UpdateTeamWeaknessInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  instruction: String
  state: TeamWeaknessStates!
  team_weakness_id: ID!
}

# Autogenerated return type of UpdateTeamWeakness
type UpdateTeamWeaknessPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  query: Query
  team_weakness: TeamWeakness
}

# Autogenerated input type of UpdateUserEmail
input UpdateUserEmailInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  email: String!
  password: String!
}

# Autogenerated return type of UpdateUserEmail
type UpdateUserEmailPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: [Error]
  me: User
  was_successful: Boolean!
}

# Autogenerated input type of UpdateUserLufthansaAccount
input UpdateUserLufthansaAccountInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  first_name: String!
  last_name: String!
  number: String!
}

# Autogenerated return type of UpdateUserLufthansaAccount
type UpdateUserLufthansaAccountPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# Autogenerated input type of UpdateUserPassword
input UpdateUserPasswordInput {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  current_password: String!
  password: String!
  password_confirmation: String!
}

# Autogenerated return type of UpdateUserPassword
type UpdateUserPasswordPayload {
  # A unique identifier for the client performing the mutation.
  clientMutationId: String
  errors: Hash
  me: User
}

# A HackerOne user
type User implements Node, ResourceInterface {
  _id: ID!
  address: Address
  authentication_service: AuthenticationServiceEnum!
  badges(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): BadgesUsersConnection
  bio: String
  bounties(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    currency: CurrencyCode = null

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): BountyConnection
  created_at: String!
  demo_hacker: Boolean!
  disabled: Boolean!
  duplicate_users(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): UserConnection
  email: String
  i_can_update_username: Boolean
  id: ID!
  impact: Float
  impact_percentile: Float
  invitation_preference: InvitationPreferenceTypeEnum
  location: String
  lufthansa_account: LufthansaAccount
  member_of_verified_team: Boolean
  membership(team_handle: String!): TeamMember
  memberships(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): TeamMemberConnection
  name: String
  next_update_username_date: String
  otp_backup_codes: [String]
  payout_preferences: [PayoutPreferenceUnion]
  profile_picture(size: ProfilePictureSizes!): String!
  profile_pictures: Hash! @deprecated(reason: "Returns all the possible profile pictures instead of just the one you want use .profile_picture instead.")
  program_health_acknowledgements(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): ProgramHealthAcknowledgementConnection
  rank: Int
  remaining_reports(team_handle: String!): Int
  reports(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    database_id: Int = null

    # Returns the first _n_ elements from the list.
    first: Int
    handle: String

    # Returns the last _n_ elements from the list.
    last: Int

    # Relay classic does not have support for starting paginationsomewhere in the
    # middle, see https://github.com/facebook/relay/issues/1312 Workaround is to
    # add a page argument till Relay supports this
    limit: Int = null
    order_by: ReportOrderInput = {direction: DESC, field: id}

    # Relay classic does not have support for starting paginationsomewhere in the
    # middle, see https://github.com/facebook/relay/issues/1312 Workaround is to
    # add a page argument till Relay supports this
    page: Int = null
    pre_submission_review_states: [ReportPreSubmissionReviewStateEnum] = null
    substate: ReportStateEnum
    without_scope: Boolean = null
  ): ReportConnection
  reputation: Int
  signal: Float
  signal_percentile: Float
  soft_launch_invitation(team_handle: String!): InvitationsSoftLaunch
  swag(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): SwagConnection
  tax_form: TaxForm
  teams(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String
    enrollable: Boolean

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
    order_by: TeamOrderInput
    permissions: [PermissionEnum] = []
  ): TeamConnection
  totp_enabled: Boolean
  totp_supported: Boolean
  triage_user: Boolean
  tshirt_size: TshirtSizeEnum
  unconfirmed_email: String
  url: URI!
  username: String!
  website: String
  whitelisted_teams(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): TeamConnection
}

# The connection type for User.
type UserConnection {
  # A list of edges.
  edges: [UserEdge]

  # Information to aid in pagination.
  pageInfo: PageInfo!
  total_count: Int!
}

# An edge in a connection.
type UserEdge {
  # A cursor for use in pagination.
  cursor: String!

  # The item at the end of the edge.
  node: User
}

# The type of vulnerability on a HackerOne report
type Weakness implements Node {
  _id: ID!
  clusters(
    # Returns the elements in the list that come after the specified cursor.
    after: String

    # Returns the elements in the list that come before the specified cursor.
    before: String

    # Returns the first _n_ elements from the list.
    first: Int

    # Returns the last _n_ elements from the list.
    last: Int
  ): ClusterConnection
  created_at: String!
  description: String
  external_id: String
  id: ID!
  name: String!
  updated_at: String!
}

input WeaknessOrder {
  direction: OrderDirection!
  field: WeaknessOrderField!
}

# Fields on which a collection of weaknesses can be ordered
enum WeaknessOrderField {
  name
}
