schema {
  query: Query
  mutation: Mutation
}

"""
Marks a type or field as exposed in the public graph. Anything not marked @public is stripped from the public schema. Exposure is independent of the @auth/@anonymous auth decision.
"""
directive @public on FIELD_DEFINITION | OBJECT | INPUT_OBJECT | ENUM | UNION | INTERFACE | SCALAR | INPUT_FIELD_DEFINITION

"""
Marks a top-level Query or Mutation field as requiring authentication. Every top-level Query and Mutation field must carry either @auth or @anonymous.
"""
directive @auth on FIELD_DEFINITION

"""
Marks a top-level Query or Mutation field as accessible to anonymous users without authentication. Every top-level Query and Mutation field must carry either @auth or @anonymous.
"""
directive @anonymous on FIELD_DEFINITION

"""
Groups operations and types under a named heading in the API reference navigation. Repeatable so a member can appear under more than one category.
"""
directive @category(name: String!) repeatable on FIELD_DEFINITION | OBJECT | INPUT_OBJECT | ENUM | UNION | INTERFACE | SCALAR

"""A monetary amount with up to two decimal places. Ex. 111.11"""
scalar Amount @public

"""An AWS region. Ex. us-east-2"""
scalar AWSRegion @public

"""ISO 3166-1 2 letter country code"""
scalar CountryCode @public

"""Three letter ISO 4217 currency code. Ex. USD"""
scalar Currency @public

"""ISO 8601 formatted date in the format YYYY-MM-DD"""
scalar Date @public

"""ISO 8601 formatted date time. Ex. 2023-11-23T14:30:00Z"""
scalar DateTime @public

"""An email address"""
scalar Email @public

"""An IPv4 or IPv6 address"""
scalar IpAddress @public

"""A JSON string"""
scalar JSON @public

"""E.164 formatted phone number. Ex. +14155554345"""
scalar Phone @public

"""A URL with protocol and port. ex. https://example.com"""
scalar URL @public

"""
Operational return type representing success or failure with a message.
"""
type OperationResult @public {
  success: Boolean! @public
  message: String @public
}

"""
PageInfo type for cursor-based pagination following the Relay specification for cursor based pagination.
"""
type PageInfo @public {
  hasNextPage: Boolean! @public
  hasPreviousPage: Boolean! @public
  startCursor: String @public
  endCursor: String @public
}

"""
Represents a node in the graph following the the Relay specification for nodes.
"""
interface Node @public {
  id: ID!
}

type Query @public {
  """Performs no operation and returns success."""
  noop: OperationResult @public @anonymous @category(name: "Common")
  info: Info! @public @anonymous @category(name: "Common")
}

type Mutation @public {
  """Performs no operation and returns success."""
  noop: OperationResult @public @anonymous @category(name: "Common")
}

"""Provides public operational information"""
type Info @public @category(name: "Common") {
  region: String! @public
}