"""
Can only be resolved by authenticated users.

When the condition fails, the following can be returned (following this priority):
1) `OperationInfo`/`OperationMessage` if those types are allowed at the return type
2) `null` in case the field is not mandatory (e.g. `String` or `[String]`)
3) An empty list in case the field is a list (e.g. `[String]!`)
4) An empty `Connection` in case the return type is a relay connection
2) Otherwise, an error will be raised
"""
directive @isAuthenticated repeatable on FIELD_DEFINITION

type AssigneeType implements Node {
  """The Globally Unique ID of this object"""
  id: ID!
  user: UserType!
  owner: Boolean!
}

union CreateIssuePayload = IssueType | OperationInfo

"""Date (isoformat)"""
scalar Date

"""Decimal (fixed-point)"""
scalar Decimal

input DjangoModelFilterInput {
  pk: ID!
}

type FavoriteType implements Node {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  user: UserType!
  issue: IssueType!
}

"""A connection to a list of items."""
type FavoriteTypeConnection {
  """Pagination data for this connection"""
  pageInfo: PageInfo!

  """Contains the nodes in this connection"""
  edges: [FavoriteTypeEdge!]!

  """Total quantity of existing nodes."""
  totalCount: Int
}

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

  """The item at the end of the edge"""
  node: FavoriteType!
}

input IssueFilter {
  name: StrFilterLookup
  AND: IssueFilter
  OR: IssueFilter
  NOT: IssueFilter
  DISTINCT: Boolean
  search: String
}

input IssueInputSubclass {
  name: String!
  milestone: MilestoneInputPartial!
  priority: Int
  kind: String
  tags: [NodeInput!]
  extra: Int
}

input IssueOrder {
  name: Ordering
}

type IssueType implements Node & Named {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  milestone: MilestoneType!
  priority: Int!
  kind: String
  nameWithPriority: String!
  nameWithKind: String!
  tags: [TagType!]!
  issueAssignees: [AssigneeType!]!
  staffAssignees: [StaffType!]!
  favoriteSet(
    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): FavoriteTypeConnection!
  milestoneName: String!
  milestoneNameWithoutOnlyOptimization: String!
  privateName: String
}

"""A connection to a list of items."""
type IssueTypeConnection {
  """Pagination data for this connection"""
  pageInfo: PageInfo!

  """Contains the nodes in this connection"""
  edges: [IssueTypeEdge!]!

  """Total quantity of existing nodes."""
  totalCount: Int
}

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

  """The item at the end of the edge"""
  node: IssueType!
}

type IssueTypeOffsetPaginated {
  pageInfo: OffsetPaginationInfo!

  """Total count of existing results."""
  totalCount: Int!

  """List of paginated results."""
  results: [IssueType!]!
}

input MilestoneFilter {
  name: StrFilterLookup
  project: DjangoModelFilterInput
  search: String
  AND: MilestoneFilter
  OR: MilestoneFilter
  NOT: MilestoneFilter
  DISTINCT: Boolean
}

input MilestoneInputPartial {
  id: ID
  name: String
  issues: [MilestoneIssueInputPartial!]
  project: ProjectInputPartial
}

input MilestoneIssueInputPartial {
  name: String
  tags: [TagInputPartial!]
}

input MilestoneOrder {
  name: Ordering
  project: ProjectOrder
}

type MilestoneType implements Node & Named {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  dueDate: Date
  project: ProjectType!
  issues(filters: IssueFilter, order: IssueOrder, pagination: OffsetPaginationInput): [IssueType!]!
  firstIssue: IssueType
  firstIssueRequired: IssueType!
  graphqlPath: String!
  mixedAnnotatedPrefetch: String!
  mixedPrefetchAnnotated: String!
  issuesPaginated(pagination: OffsetPaginationInput, order: IssueOrder): IssueTypeOffsetPaginated!
  issuesWithFilters(
    filters: IssueFilter

    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): IssueTypeConnection!
  myIssues: [IssueType!]!
  myBugsCount: Int!
  asyncField(value: String!): String!
}

"""A connection to a list of items."""
type MilestoneTypeConnection {
  """Pagination data for this connection"""
  pageInfo: PageInfo!

  """Contains the nodes in this connection"""
  edges: [MilestoneTypeEdge!]!

  """Total quantity of existing nodes."""
  totalCount: Int
}

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

  """The item at the end of the edge"""
  node: MilestoneType!
}

type MilestoneTypeOffsetPaginated {
  pageInfo: OffsetPaginationInfo!

  """Total count of existing results."""
  totalCount: Int!

  """List of paginated results."""
  results: [MilestoneType!]!
}

type MilestoneTypeSubclass implements Node & Named {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  dueDate: Date
  project: ProjectType!
  issues(filters: IssueFilter, order: IssueOrder, pagination: OffsetPaginationInput): [IssueType!]!
  firstIssue: IssueType
  firstIssueRequired: IssueType!
  graphqlPath: String!
  mixedAnnotatedPrefetch: String!
  mixedPrefetchAnnotated: String!
  issuesPaginated(pagination: OffsetPaginationInput, order: IssueOrder): IssueTypeOffsetPaginated!
  issuesWithFilters(
    filters: IssueFilter

    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): IssueTypeConnection!
  myIssues: [IssueType!]!
  myBugsCount: Int!
  asyncField(value: String!): String!
}

type Mutation {
  createIssue(input: IssueInputSubclass!): CreateIssuePayload!
}

interface Named {
  name: String!
}

"""An object with a Globally Unique ID"""
interface Node {
  """The Globally Unique ID of this object"""
  id: ID!
}

"""Input of an object that implements the `Node` interface."""
input NodeInput {
  id: ID!
}

type OffsetPaginationInfo {
  offset: Int!
  limit: Int
}

input OffsetPaginationInput {
  offset: Int! = 0
  limit: Int
}

type OperationInfo {
  """List of messages returned by the operation."""
  messages: [OperationMessage!]!
}

type OperationMessage {
  """The kind of this message."""
  kind: OperationMessageKind!

  """The error message."""
  message: String!

  """
  The field that caused the error, or `null` if it isn't associated with any particular field.
  """
  field: String

  """The error code, or `null` if no error code was set."""
  code: String
}

enum OperationMessageKind {
  INFO
  WARNING
  ERROR
  PERMISSION
  VALIDATION
}

enum Ordering {
  ASC
  ASC_NULLS_FIRST
  ASC_NULLS_LAST
  DESC
  DESC_NULLS_FIRST
  DESC_NULLS_LAST
}

"""Information to aid in pagination."""
type PageInfo {
  """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

  """When paginating forwards, the cursor to continue."""
  endCursor: String
}

input ProjectInputPartial {
  id: ID
  name: String
  milestones: [MilestoneInputPartial!]
}

input ProjectOrder {
  id: Ordering
  name: Ordering
}

type ProjectType implements Node & Named {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  dueDate: Date
  isSmall: Boolean!
  isDelayed: Boolean!
  cost: Decimal @isAuthenticated
  milestones(filters: MilestoneFilter, order: MilestoneOrder, pagination: OffsetPaginationInput): [MilestoneType!]!
  milestonesCount: Int!
  customMilestonesModelProperty: [MilestoneType!]!
  firstMilestone: MilestoneType
  firstMilestoneRequired: MilestoneType!
  milestoneConn(
    filters: MilestoneFilter
    order: MilestoneOrder

    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): MilestoneTypeConnection!
  milestonesPaginated(pagination: OffsetPaginationInput, filters: MilestoneFilter, order: MilestoneOrder): MilestoneTypeOffsetPaginated!
  customMilestones: [MilestoneType!]!
}

type ProjectTypeSubclass implements Node & Named {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  dueDate: Date
  isSmall: Boolean!
  isDelayed: Boolean!
  cost: Decimal @isAuthenticated
  milestones(filters: MilestoneFilter, order: MilestoneOrder, pagination: OffsetPaginationInput): [MilestoneType!]!
  milestonesCount: Int!
  customMilestonesModelProperty: [MilestoneType!]!
  firstMilestone: MilestoneType
  firstMilestoneRequired: MilestoneType!
  milestoneConn(
    filters: MilestoneFilter
    order: MilestoneOrder

    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): MilestoneTypeConnection!
  milestonesPaginated(pagination: OffsetPaginationInput, filters: MilestoneFilter, order: MilestoneOrder): MilestoneTypeOffsetPaginated!
  customMilestones: [MilestoneType!]!
}

type Query {
  project(
    """The ID of the object."""
    id: ID!
  ): ProjectTypeSubclass
  milestone(
    """The ID of the object."""
    id: ID!
  ): MilestoneTypeSubclass
}

type RoleType implements Node & Named {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  description: String!
}

type StaffType implements Node {
  """The Globally Unique ID of this object"""
  id: ID!
  email: String!
  isActive: Boolean!
  isSuperuser: Boolean!
  isStaff: Boolean!
}

input StrFilterLookup {
  """Exact match. Filter will be skipped on `null` value"""
  exact: String

  """Assignment test. Filter will be skipped on `null` value"""
  isNull: Boolean

  """
  Exact match of items in a given list. Filter will be skipped on `null` value
  """
  inList: [String!]

  """Case-insensitive exact match. Filter will be skipped on `null` value"""
  iExact: String

  """
  Case-sensitive containment test. Filter will be skipped on `null` value
  """
  contains: String

  """
  Case-insensitive containment test. Filter will be skipped on `null` value
  """
  iContains: String

  """Case-sensitive starts-with. Filter will be skipped on `null` value"""
  startsWith: String

  """Case-insensitive starts-with. Filter will be skipped on `null` value"""
  iStartsWith: String

  """Case-sensitive ends-with. Filter will be skipped on `null` value"""
  endsWith: String

  """Case-insensitive ends-with. Filter will be skipped on `null` value"""
  iEndsWith: String

  """
  Case-sensitive regular expression match. Filter will be skipped on `null` value
  """
  regex: String

  """
  Case-insensitive regular expression match. Filter will be skipped on `null` value
  """
  iRegex: String
}

input TagInputPartial {
  id: ID
  name: String
}

type TagType implements Node & Named {
  """The Globally Unique ID of this object"""
  id: ID!
  name: String!
  issues(
    """Returns the items in the list that come before the specified cursor."""
    before: String = null

    """Returns the items in the list that come after the specified cursor."""
    after: String = null

    """Returns the first n items from the list."""
    first: Int = null

    """Returns the items in the list that come after the specified cursor."""
    last: Int = null
  ): IssueTypeConnection!
  issuesWithSelectedRelatedMilestoneAndProject: [IssueType!]!
}

type UserType implements Node {
  """The Globally Unique ID of this object"""
  id: ID!
  email: String!
  isActive: Boolean!
  isSuperuser: Boolean!
  isStaff: Boolean!
  role: RoleType
  roleName: String
  roleDescription: String
  fullName: String!
}