Skip to main content

API Reference

Last updated on June 11th, 2026

Supported Operations

The two root types of a GraphQL schema are the Query type and the Mutation type. These types define the entry points for retrieving and modifying data, respectively. The fields under these types define the capabilities of our GraphQL API.

Schema-Defined Types

All types in our GraphQL schema fall into one of the following categories:

Directives

Directives are used to modify the behavior of the GraphQL schema. They are used to annotate fields, fragments, and operations.

GraphQL Schema (SDL)

Download the schema at https://developer.firstdollar.com/partner.schema.graphql

schema.graphql
directive @auditLoggingEncryptionContext(machineUser: String!) on FIELD_DEFINITION

"""Marks a mutation as idempotent"""
directive @idempotent(key: String = "input.idempotencyKey") on FIELD_DEFINITION

directive @noAuditLogging on FIELD_DEFINITION

"""Controls the rate of traffic."""
directive @rateLimit(
"""Number of seconds before limit is reset."""
duration: Int! = 60

"""Number of occurrences allowed over duration."""
limit: Int! = 60
) on FIELD_DEFINITION | OBJECT

"""An Account belonging to a Health Wallet."""
type Account {
"""Whether or not the individual's enrollment in this offering is active"""
active: Boolean!

"""The amount of money that is available to be spent for this account"""
availableBalance: Money!

"""The Benefit this account belongs to."""
benefit: Benefit

"""When the Account was created"""
createdAt: DateTime!

"""
The total amount of money in this account.
Note that `currentBalance` and `availableBalance` may differ when there
are ongoing money movement processes.
"""
currentBalance: Money!

"""
The annual election amount for this account enrollment.
Null for enrollments without an election amount set.
Only applicable for HSA and FSA account types, for now.
This will change when we add support for additional account types.
"""
electionAmount: Money

"""The end date of the offering for this individual"""
endsAt: DateTime

"""
A summary of the funding this account has received. Funding corresponds to deposit transactions
that increase the balance of the account.
"""
fundingSummary: AccountFundingSummary!

"""
The full, unmasked account number associated with the HSA account for the individual, if available
"""
hsaAccountNumber: String

"""
The routing number associated with the HSA account for the individual, if available
"""
hsaRoutingNumber: String

"""The ID of the account"""
id: ID!

"""The initial contribution for this account"""
initialContribution: InitialContribution

"""The recurring contributions for this account"""
recurringContribution: RecurringContribution

"""Transactions posted against this Account"""
transactions(
"""Return the Transaction that come after the specified cursor"""
after: String

"""The number of Transactions to retrieve per page"""
first: Int

"""Filter criteria used to match Transactions"""
where: TransactionsFilterInput
): TransactionResults!
}

"""The possible enrollment statuses for an Individual"""
enum AccountEnrollmentStatus {
"""The Individual has an active enrollment in at least one offering"""
ENROLLED

"""The Individual has no active enrollments in any offerings"""
UNENROLLED
}

"""
A summary of the funding an account has received. Funding corresponds only to deposit transactions
that increase the balance of the account.
"""
type AccountFundingSummary {
"""
The total amount of funds this account has received across its lifecycle.
"""
total: Money!
}

"""
Banking account number is a string of 5 to 17 alphanumeric values for representing an generic account number
"""
scalar AccountNumber

input ActivateCardInput {
"""The ID of the card to activate."""
cardId: ID!

"""
When specified, the operation only proceeds if the card belongs to this
Individual; otherwise it returns the standard not-found response.
"""
individualId: ID
}

union ActivateCardResponse = ActivateCardResult | BadRequestError | InternalServerError

type ActivateCardResult {
"""The activated card."""
card: Card!
}

"""A request to adjudicate a Claim originating from an External System"""
input AdjudicateClaimInput {
"""The claim data for adjudication"""
claimMetadata: JSON!

"""Base-64 encoded file evidence associated with the claim"""
evidence: [ClaimEvidenceInput!]!

"""The ID of the Claim in the originating system"""
externalId: ID!
}

"""
A union representing the possible return types when adjudicating a Claim
"""
union AdjudicateClaimResponse = AdjudicateClaimResult | BadRequestError | InternalServerError

type AdjudicateClaimResult {
claimAdjudication: ClaimAdjudication!
}

"""An Individual's tax forms for a single tax year."""
type AnnualTaxForms {
"""Informational forms, not filed with the IRS."""
informationalForms: [IndividualTaxForm!]!

"""Forms that are (or will be) filed with the IRS."""
requiredForms: [IndividualTaxForm!]!

"""The tax year these forms cover (e.g. "2026")."""
taxYear: YearString!
}

"""Returned when there is an error in the request."""
type BadRequestError implements Error {
"""An alphanumeric identifier for this error."""
code: String!

"""A user-facing error message."""
message: String!

"""
Returns true if the client can safely retry the request, false otherwise.
"""
retryable: Boolean!
}

"""A Benefit offered to an individual in a Benefits Program"""
type Benefit {
"""The configuration of the Benefit."""
configuration: BenefitConfiguration!

"""
Active coverage levels configured for this offering, ordered by displayOrder.
"""
coverageLevels: [CoverageLevel!]!

"""A description of the Benefit"""
description: String!

"""The end date of the Benefit"""
endDate: LocalDate

"""A unique identifier for the Benefit"""
id: ID!

"""A human-readable name for the Benefit"""
name: String!

"""The start date of the Benefit"""
startDate: LocalDate!

"""The type of Benefit"""
type: BenefitType!
}

"""
The Benefit Configuration describes the parameters and controls all aspects of the Benefit.
"""
type BenefitConfiguration {
"""Describes the controls and behaviors around Benefit Funding."""
funding: BenefitFundingConfiguration!
}

"""Filter criteria used when querying for a benefit"""
input BenefitFilterInput {
"""The ID of the benefit"""
id: ID!
}

"""Describes the parameters and behaviors of Funding for the Benefit."""
type BenefitFundingConfiguration {
"""
The Initial Funding for a Benefit defines the initial amount of Funds made available to an Individual.
"""
initialFunding: BenefitInitialFundingConfiguration!

"""
The Funding Limits for a Benefit govern the maximum amount of funds that can be made available
to a given account.
"""
limits: BenefitFundingLimitsConfiguration!
}

"""
The Funding Limits for a Benefit govern the maximum amount of funds that can be made available
to a given account.
"""
type BenefitFundingLimitsConfiguration {
"""
The maximum amount of funding permitted for an account belonging an Individual. If the value is null,
no maximum limit is applied to funding for accounts created against this benefit.
"""
individual: Money
}

"""
The Initial Funding for a Benefit defines the initial amount of Funds made available to an Individual.
"""
type BenefitInitialFundingConfiguration {
"""
The initial amount of funds made available to an account belonging an Individual. If the value is $0.00 or null,
no initial funding will occur for Individuals enrolled in the Benefit.
"""
individual: Money
}

"""
A union representing the possible return types when querying for a benefit
"""
union BenefitResponse = BadRequestError | Benefit | InternalServerError

"""Represents a template used when creating a benefit"""
type BenefitTemplate {
"""
If defined, Benefits created from this template inherit (and may override) this configuration.
"""
configuration: BenefitConfiguration

"""A description of the benefit provided by this template"""
description: String!

"""A unique identifier for the benefit template"""
id: ID!

"""
A human-readable name for the benefit template (e.g. 'Health Savings Account')
"""
name: String!

"""The type of benefit the template represents"""
type: BenefitType!
}

"""Filter criteria used when querying for benefit templates"""
input BenefitTemplatesFilterInput {
"""If specified, only returns Benefit Templates matching this ID"""
id: ID

"""If specified, only returns Benefit Templates matching this name"""
name: String

"""If specified, only returns Benefit Templates matching this type"""
type: BenefitType
}

"""
A union representing the possible return types when querying for benefit templates
"""
union BenefitTemplatesResponse = BadRequestError | BenefitTemplatesResults | InternalServerError

"""Represents a page of benefit templates"""
type BenefitTemplatesResults {
nodes: [BenefitTemplate!]!
pageInfo: PageInfo!
}

"""Enumerates the possible types of benefits"""
enum BenefitType {
"""Commuter/Transit Account"""
COMMUTER

"""Dependent Care Flexible Spending Account"""
DCFSA

"""Directed Spend Account"""
DIRECTED_SPEND

"""General Purpose Flexible Spending Arrangement"""
FSA

"""Health Reimbursement Arrangement"""
HRA

"""Health Savings Account"""
HSA

"""Limited Purpose Flexible Spending Arrangement"""
LPFSA

"""Lifestyle Spending Account"""
LSA

"""Remote Work Account"""
REMOTE_WORK

"""Rewards Account"""
REWARDS

"""
Traditional Health Reimbursement Arrangement with per-participant funding limits
"""
TRADITIONAL_HRA
}

"""A program containing benefits offered to individuals"""
type BenefitsProgram {
"""Benefits offered by this program"""
benefits: [Benefit!]!

"""A unique identifier for the program"""
id: ID!

"""The name of the program"""
name: String!

"""The ID for the organization to which this program belongs"""
organizationId: ID!
}

"""Filter criteria used when querying for a benefits program"""
input BenefitsProgramFilterInput {
"""ID of the program"""
id: ID!
}

"""
A union representing the possible return types when querying for a benefits program
"""
union BenefitsProgramResponse = BadRequestError | BenefitsProgram | InternalServerError

"""Filter criteria used when querying for benefits programs"""
input BenefitsProgramsFilterInput {
"""
If specified, only returns Benefits Programs associated with these Organization IDs
"""
organizationIds: [ID!]
}

"""
A union representing the possible return types when querying for benefits programs
"""
union BenefitsProgramsResponse = BadRequestError | BenefitsProgramsResults | InternalServerError

"""Represents a page of benefits programs"""
type BenefitsProgramsResults {
nodes: [BenefitsProgram!]!
pageInfo: PageInfo!
}

"""
The `BigInt` scalar type represents non-fractional signed whole numeric values.
"""
scalar BigInt

input CancelCardInput {
"""The ID of the card to cancel."""
cardId: ID!

"""A key for ensuring request idempotency."""
idempotencyKey: String!
individualId: ID

"""The reason the card is being cancelled."""
reason: CardActionReason!

"""When true, issues a replacement card in the same operation."""
reissue: Boolean! = false
}

union CancelCardResponse = BadRequestError | CancelCardResult | InternalServerError

type CancelCardResult {
"""The ID of the cancelled card."""
cancelledCardId: ID!

"""
The ID of the replacement card, when `reissue` was true; otherwise null.
"""
reissuedCardId: ID
}

"""
A physical or virtual card issued to an Individual for a Benefits Program.
"""
type Card {
"""The Benefits Program this card draws from."""
benefitsProgramId: ID!

"""The full name of the cardholder."""
cardholderName: PersonName!

"""The card expiration in MMYY format."""
expiration: String!

"""
Where a physical card is on its journey to the cardholder, or DIGITAL for virtual cards.
"""
fulfillmentStatus: CardFulfillmentStatus!

"""The ID of the card, used for all operations against the card."""
id: ID!

"""The Individual this card belongs to."""
individualId: ID!

"""The last four digits of the card number."""
last4: String!

"""The current status of the card."""
status: CardStatus!

"""Whether the card is physical or virtual."""
type: CardType!

"""Whether the cardholder is the account holder or a dependent."""
userType: CardUserType!
}

"""The reason a card is being locked or cancelled."""
enum CardActionReason {
"""
The cardholder reports one or more transactions as fraudulent. A lock with
this reason is permanent: the card cannot be unlocked afterwards and must be
cancelled (optionally with a replacement via `cancelCard`'s `reissue`).
"""
FRAUDULENT_CHARGES

"""The cardholder lost physical access to the card."""
LOST

"""Another, unlisted reason."""
OTHER

"""The cardholder reports the card as stolen."""
STOLEN
}

input CardFilterInput {
"""The ID of the card."""
id: ID!

"""
When specified, the card is only returned if it belongs to this Individual.
A card that exists but belongs to a different Individual returns the same
not-found response as a card that does not exist.
"""
individualId: ID
}

"""Where a card is on its journey to the cardholder."""
enum CardFulfillmentStatus {
"""A virtual card is available digitally."""
DIGITAL

"""The card has been issued."""
ISSUED

"""A physical card has been ordered."""
ORDERED

"""Physical card fulfillment was rejected."""
REJECTED

"""A physical card has been re-ordered."""
REORDERED

"""A physical card has been shipped."""
SHIPPED
}

union CardResponse = BadRequestError | Card | InternalServerError

"""The lifecycle status of a card."""
enum CardStatus {
"""Active and usable."""
ACTIVE

"""Temporarily locked; transactions are blocked until unlocked."""
SUSPENDED

"""Permanently cancelled; cannot be reactivated."""
TERMINATED

"""Issued but not yet activated by the cardholder."""
UNACTIVATED
}

"""Whether a card is physical or virtual."""
enum CardType {
"""A physical card mailed to the cardholder for point-of-sale use."""
PHYSICAL

"""A virtual card for digital use."""
VIRTUAL
}

"""Whether the cardholder is the account holder or a dependent."""
enum CardUserType {
ACCOUNT_HOLDER
DEPENDENT
}

"""Controls which cardholders' cards a list query returns."""
enum CardUserTypeFilter {
"""Only the account holder's own cards (default)."""
ACCOUNT_HOLDER_ONLY

"""Only dependents' cards."""
DEPENDENTS_ONLY

"""Both the account holder's and their dependents' cards."""
INCLUDE_DEPENDENTS
}

input CardsFilterInput {
"""
When specified, only returns cards associated with these Benefits. A card
matches when the Benefit belongs to the same Benefits Program as the card.
"""
benefitIds: [ID!]

"""
When specified, only returns cards associated with Benefits of these types
(e.g. HSA). A card matches when its Benefits Program contains a Benefit of
one of these types.
"""
benefitTypes: [BenefitType!]

"""
When specified, only returns cards associated with these Benefits Programs.
"""
benefitsProgramIds: [ID!]

"""When specified, only returns these specific cards."""
cardIds: [ID!]

"""When specified, only returns cards belonging to these Individuals."""
individualIds: [ID!]

"""
When specified, only returns cards whose last four digits match one of these values.
"""
last4: [String!]

"""When specified, only returns cards in these statuses."""
statuses: [CardStatus!]

"""
When specified, only returns cards of these types (physical or virtual).
"""
types: [CardType!]

"""
Controls whether account-holder cards, dependent cards, or both are
returned. Defaults to account-holder cards only. A value other than
`ACCOUNT_HOLDER_ONLY` requires `individualIds`.
"""
userType: CardUserTypeFilter
}

union CardsResponse = BadRequestError | CardsResults | InternalServerError

type CardsResults {
nodes: [Card!]!
pageInfo: PageInfo!
}

"""A Claim Adjudication"""
type ClaimAdjudication {
"""
The results of adjudication. NULL indicates that results are processing or an error occurred.
This will evolve to a strongly typed schema in the future.
"""
adjudicationResults: JSON

"""
The metadata included for adjudication. This will evolve to a strongly typed schema in the future.
"""
claimMetadata: JSON!

"""The ID of the Claim in the External System"""
externalId: ID!

"""The ID of the Claim Adjudication"""
id: ID!

"""The status of the Claim Adjudication"""
status: ClaimAdjudicationStatus!
}

"""Filter criteria used when querying for a Claim Adjudication"""
input ClaimAdjudicationInput {
"""The ID of the Claim Adjudication"""
id: ID!
}

"""
A union representing the possible return types when querying for a Claim Adjudication
"""
union ClaimAdjudicationResponse = BadRequestError | ClaimAdjudication | InternalServerError

enum ClaimAdjudicationStatus {
"""The Claim Adjudication has been successfully processed"""
COMPLETE

"""The Claim Adjudication is in an error state and could not be processed"""
ERROR

"""The Claim Adjudication is received and pending processing"""
PENDING

"""The Claim Adjudication is currently being processed"""
PROCESSING
}

"""Filter criteria used when querying for Claim Adjudications"""
input ClaimAdjudicationsFilterInput {
"""
If specified, only returns Claim Adjudications matching these External System IDs
"""
externalIds: [ID!]

"""
If specified, only returns Claim Adjudications matching these Claim Adjudication IDs
"""
ids: [ID!]

"""If specified, only returns Claim Adjudications matching these Statuses"""
statuses: [ClaimAdjudicationStatus!]
}

"""
A union representing the possible return types when querying for Claim Adjudications
"""
union ClaimAdjudicationsResponse = BadRequestError | ClaimAdjudicationsResults | InternalServerError

"""Represents a page of Claim Adjudications"""
type ClaimAdjudicationsResults {
nodes: [ClaimAdjudication!]!
pageInfo: PageInfo!
}

"""Base-64 encoded file evidence associated with a Claim"""
input ClaimEvidenceInput {
"""Base-64 encoded file data"""
data: String!

"""The MIME type of the file"""
mimeType: String!
}

"""
Box-level data for a 5498-SA (HSA contributions), matching the values printed on the member's form. Only the
member-specific boxes are exposed: Box 1 (Archer MSA contributions) is always $0.00 since these are HSAs, and
Box 6 (the HSA / Archer MSA / MA MSA checkbox) is always HSA, as indicated by the form's `formType`. Money
boxes render as $0.00 on the PDF when null here.
"""
type ContributionsTaxFormData {
"""
Box 3: contributions deposited after the end of the tax year (through the tax-filing deadline of the
following year) that were designated for this tax year, net of corrections. On PRELIMINARY versions produced
before the contribution window closes, this value may not yet be final.
"""
contributionsMadeInSubsequentYear: Money

"""
Box 2: the total contributions deposited during the tax (calendar) year, whether designated for that tax
year or for the prior tax year, plus any qualified HSA funding distributions, net of corrections. Excludes
rollovers (reported in Box 4).
"""
contributionsMadeInTaxYear: Money

"""
Box 5: the fair market value of the HSA (cash plus any investments) at the end of the tax year.
"""
fmv: Money

"""
Box 4: rollover contributions received for the tax year. Not included in Box 2. Direct trustee-to-trustee
transfers are not reported on the form, consistent with IRS instructions.
"""
rolloverContributions: Money
}

"""A country code as defined by ISO 3166-1 alpha-2"""
scalar CountryCode

"""A coverage level configured for a Benefit offering."""
type CoverageLevel {
"""Coverage amount; null when none is configured for this level."""
amount: Money

"""Relative order for UI display; null when not configured."""
displayOrder: Int

"""
The public ULID of this coverage level. Pass this value as coverageLevelId when enrolling.
"""
id: ID!

"""Human-readable name, e.g. "Employee Only" or "Family"."""
name: String!
}

"""An input type used when creating a benefit"""
input CreateBenefitInput {
"""The ID of the benefits program to which the benefit belongs"""
benefitsProgramId: ID!

"""
The description of the benefit. If unspecified, defaults to the description from the template.
"""
description: String

"""The end date of the Benefit."""
endDate: LocalDate

"""
The name of the benefit. If unspecified, defaults to the name from the template.
"""
name: String

"""The start date of the Benefit."""
startDate: LocalDate!

"""The ID of the template to use when creating the benefit"""
templateId: ID!
}

"""A union representing the possible return types when creating a benefit"""
union CreateBenefitResponse = BadRequestError | CreateBenefitResult | InternalServerError

"""The successful result of creating a benefit"""
type CreateBenefitResult {
"""The benefit that was created"""
benefit: Benefit!
}

"""An input type used when creating a benefits program"""
input CreateBenefitsProgramInput {
"""The name of the program"""
name: String!

"""The ID for the organization to which this program belongs"""
organizationId: ID!
}

"""
A union representing the possible return types when creating a benefits program
"""
union CreateBenefitsProgramResponse = BadRequestError | CreateBenefitsProgramResult | InternalServerError

"""The successful result of creating a benefits program"""
type CreateBenefitsProgramResult {
"""The program that was created"""
benefitsProgram: BenefitsProgram!
}

"""Input for creating a new enrollment for a dependent in a benefit"""
input CreateDependentBenefitEnrollmentInput {
"""Public ULID of the offering"""
benefitId: ID!

"""First Dollar User ID of the dependent"""
dependentId: ID!

"""End datetime of eligibility (optional - NULL = indefinite)"""
eligibilityEndDate: DateTime

"""
Start datetime of eligibility (optional - defaults to current datetime)
"""
eligibilityStartDate: DateTime

"""Idempotency key for duplicate request prevention"""
externalReferenceId: String
}

"""Union response for createDependentBenefitEnrollment mutation"""
union CreateDependentBenefitEnrollmentResponse = BadRequestError | CreateDependentBenefitEnrollmentResult | InternalServerError

"""Successful result of creating a new enrollment"""
type CreateDependentBenefitEnrollmentResult {
"""The benefit enrollment that was created"""
enrollment: DependentBenefitEnrollment!
}

"""Input for creating a new dependent"""
input CreateDependentInput {
"""First Dollar User ID of the account holder"""
accountHolderUid: ID!

"""The dependent's physical address"""
address: PhysicalAddressInput

"""Optional benefit enrollments to create atomically with the dependent"""
benefitEnrollments: [DependentBenefitEnrollmentInput!]

"""The dependent's date of birth"""
dateOfBirth: LocalDate!

"""The dependent's email address"""
email: EmailAddress

"""Idempotency key for duplicate request prevention (24-hour TTL)"""
externalReferenceId: String

"""The dependent's first name"""
firstName: String!

"""The dependent's last name"""
lastName: String!

"""The dependent's phone number"""
phoneNumber: PhoneNumber

"""Relationship type between dependent and account holder"""
relationshipType: DependentRelationshipType!

"""The dependent's SSN for user creation"""
ssn: String
}

"""Union response for createDependent mutation"""
union CreateDependentResponse = BadRequestError | CreateDependentResult | InternalServerError

"""Successful result of creating a dependent"""
type CreateDependentResult {
"""The dependent that was created"""
dependent: Dependent!
}

"""An input type used when creating a Division"""
input CreateDivisionInput {
"""The physical address of the Division"""
address: PhysicalAddressInput

"""The Employer Identification Number (EIN) of the Division"""
ein: String

"""
A partner-scoped external identifier for the Division. Must be unique within the partner.
"""
externalId: String

"""The user-displayable name of the Division"""
name: String!

"""The ID of the parent Organization"""
organizationId: ID!

"""
The ID of the parent Division. If provided, the new Division is nested under this Division
rather than directly under the Organization.
"""
parentDivisionId: ID
}

"""
A union representing the possible return types when creating a Division
"""
union CreateDivisionResponse = BadRequestError | CreateDivisionResult | InternalServerError

"""The successful result of creating a Division"""
type CreateDivisionResult {
"""The Division that was created"""
division: Division!
}

"""An input type used for creating an Individual"""
input CreateIndividualInput {
"""The Individual to create"""
individual: IndividualInput!
}

"""
A union representing the possible return types when creating an Individual
"""
union CreateIndividualResponse = BadRequestError | CreateIndividualResult | InternalServerError

"""The successful result of creating an Individual"""
type CreateIndividualResult {
"""The Individual that was created"""
individual: Individual!
}

"""Input for creating or updating a single organization membership"""
input CreateOrUpdateOrganizationMembershipInput {
"""The Individual's external user ID from the organization's system"""
externalUserId: String

"""The ID of the Individual"""
individualId: ID!

"""The ID of the Organization"""
organizationId: ID!
}

"""
Union representing possible return types when creating or updating an organization membership
"""
union CreateOrUpdateOrganizationMembershipResponse = BadRequestError | CreateOrUpdateOrganizationMembershipResult | InternalServerError

"""
The successful result of creating or updating an organization membership
"""
type CreateOrUpdateOrganizationMembershipResult {
"""The organization membership data"""
membership: OrganizationMembership!

"""The status of the operation"""
status: OrganizationOperationStatus!

"""The ID of the individual"""
uid: ID!
}

"""An input type used when creating an Organization Group"""
input CreateOrganizationGroupInput {
"""The physical address of the Organization Group"""
address: PhysicalAddressInput

"""The Employer Identification Number (EIN) of the Organization Group"""
ein: String

"""
A partner-scoped external identifier for the Organization Group. Must be unique within the partner.
"""
externalId: String

"""The user-displayable name of the Organization Group"""
name: String!

"""
The US phone number of the Organization Group (10 digits, no punctuation)
"""
phone: PhoneNumber
}

"""
A union representing the possible return types when creating an Organization Group
"""
union CreateOrganizationGroupResponse = BadRequestError | CreateOrganizationGroupResult | InternalServerError

"""The successful result of creating an Organization Group"""
type CreateOrganizationGroupResult {
"""The Organization Group that was created"""
organizationGroup: OrganizationGroup!
}

"""An input type used when creating an Organization"""
input CreateOrganizationInput {
"""The physical address of the Organization"""
address: PhysicalAddressInput

"""The Employer Identification Number (EIN) of the Organization"""
ein: String

"""
A partner-scoped external identifier for the Organization. Must be unique within the partner.
"""
externalId: String

"""The user-displayable name of the Organization"""
name: String!

"""The ID of the Organization Group this Organization belongs to"""
organizationGroupId: ID
}

"""
A union representing the possible return types when creating an Organization
"""
union CreateOrganizationResponse = BadRequestError | CreateOrganizationResult | InternalServerError

"""The successful result of creating an Organization"""
type CreateOrganizationResult {
"""The Organization that was created"""
organization: Organization!
}

"""
A field whose value is a Currency: https://en.wikipedia.org/wiki/ISO_4217.
"""
scalar Currency

"""
A date-time string, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.This scalar is serialized to a string in ISO 8601 format and parsed from a string in ISO 8601 format.
"""
scalar DateTime

"""An enum representing the days of the week"""
enum DaysOfWeek {
FRIDAY
MONDAY
SATURDAY
SUNDAY
THURSDAY
TUESDAY
WEDNESDAY
}

"""Input for deactivating a single organization membership"""
input DeactivateOrganizationMembershipInput {
"""The ID of the Individual"""
individualId: ID!

"""The ID of the Organization"""
organizationId: ID!
}

"""
Union representing possible return types when deactivating an organization membership
"""
union DeactivateOrganizationMembershipResponse = BadRequestError | DeactivateOrganizationMembershipResult | InternalServerError

"""The successful result of deactivating an organization membership"""
type DeactivateOrganizationMembershipResult {
"""Whether the deactivation was successful"""
success: Boolean!
}

"""A dependent associated with an account holder"""
type Dependent {
"""First Dollar User ID of the account holder (parent/spouse)"""
accountHolderUid: ID!

"""
All benefit enrollments for this dependent
Uses DataLoader for N+1 prevention
"""
benefitEnrollments: [DependentBenefitEnrollment!]!

"""When this dependent was created"""
createdAt: DateTime

"""The dependent's date of birth"""
dateOfBirth: LocalDate

"""The dependent's email address"""
email: EmailAddress

"""The dependent's first name"""
firstName: String!

"""First Dollar User ID for the dependent user"""
id: ID!

"""The dependent's last name"""
lastName: String!

"""The dependent's phone number"""
phoneNumber: PhoneNumber

"""Relationship type between this dependent and the account holder"""
relationshipType: DependentRelationshipType
}

"""Association between a dependent and a benefit offering"""
type DependentBenefitEnrollment {
"""Public ULID of the offering"""
benefitId: ID!

"""Name of the benefit"""
benefitName: String

"""Type of the benefit (HSA, FSA, etc.)"""
benefitType: String

"""When this enrollment was created"""
createdAt: DateTime!

"""How this enrollment was created"""
createdVia: DependentCreationSource!

"""End datetime of eligibility (NULL = currently active)"""
eligibilityEndDate: DateTime

"""Start datetime of eligibility"""
eligibilityStartDate: DateTime

"""Partner-provided ID for reconciliation and idempotency"""
externalReferenceId: String

"""Internal database ID"""
id: ID!

"""When this enrollment was last updated"""
updatedAt: DateTime!
}

"""Input for creating a benefit enrollment as part of dependent creation"""
input DependentBenefitEnrollmentInput {
"""Public ULID of the offering"""
benefitId: ID!

"""End datetime of eligibility (optional - NULL = indefinite)"""
eligibilityEndDate: DateTime

"""
Start datetime of eligibility (optional - defaults to current datetime)
"""
eligibilityStartDate: DateTime

"""Idempotency key for duplicate request prevention"""
externalReferenceId: String
}

"""How the dependent-benefit association was created"""
enum DependentCreationSource {
"""Created via admin API"""
ADMIN_API

"""Created via Partner API"""
API

"""Created via consumer app (Health Wallet)"""
CONSUMER_API

"""Created via family card issuing flow"""
FAMILY_CARD

"""Created via historic data migration"""
MIGRATION
}

"""Filter criteria for querying a single dependent"""
input DependentFilterInput {
"""First Dollar User ID of the dependent"""
id: ID!
}

"""The relationship type between dependent and account holder"""
enum DependentRelationshipType {
"""Child (biological, adopted, or stepchild)"""
CHILD

"""Other eligible dependent"""
OTHER

"""Spouse or domestic partner"""
SPOUSE
}

"""Union response for dependent query"""
union DependentResponse = BadRequestError | Dependent | InternalServerError

"""Filter criteria for querying multiple dependents"""
input DependentsFilterInput {
"""
First Dollar User ID of the account holder
If specified, only returns dependents for this account holder
"""
accountHolderUid: ID!
}

"""Union response for dependents query"""
union DependentsResponse = BadRequestError | DependentsResults | InternalServerError

"""Paginated list of dependents"""
type DependentsResults {
"""List of dependents in this page"""
nodes: [Dependent!]!

"""Pagination metadata"""
pageInfo: PageInfo!
}

"""
Box-level data for a 1099-SA (HSA distributions), matching the values printed on the member's form. Only the
member-specific boxes are exposed: Box 5 (the HSA / Archer MSA / MA MSA checkbox) is always HSA, as indicated
by the form's `formType`. Money boxes render as $0.00 on the PDF when null here.
"""
type DistributionsTaxFormData {
"""
Box 3: the one-character IRS distribution code printed on the form. "1" (normal), "2" (excess
contributions), "3" (disability), "4" (death), "5" (prohibited transaction), or "6" (death distribution
after the year of death to a nonspouse beneficiary).
"""
distributionCode: String

"""
Box 2: earnings on excess contributions that were distributed along with a return of excess contributions
(these earnings are also included in Box 1). Populated only when such a distribution occurred; null otherwise.
"""
earningsOnExcessContributions: Money

"""
Box 4: the fair market value of the account on the owner's date of death. Populated only on
death-distribution forms; null otherwise.
"""
fmvOnDateOfDeath: Money

"""
Box 1: the total distributions taken from the HSA during the tax year, net of any returned (reimbursed)
distributions and reversals.
"""
grossDistribution: Money
}

"""
A Division is a subdivision of an Organization — for example, a department, office,
or business unit that needs its own benefit packages, members, or bank accounts.
"""
type Division {
"""The physical address of the Division"""
address: PhysicalAddress

"""Child Divisions nested under this Division"""
divisions: [Division!]!

"""The Employer Identification Number (EIN) of the Division"""
ein: String

"""A partner-scoped external identifier for the Division"""
externalId: String

"""The unique ID for the Division"""
id: ID!

"""The user-displayable name of the Division"""
name: String!

"""The parent Organization that this Division belongs to"""
parentOrganization: Organization!
}

"""Filter criteria used when querying for a Division"""
input DivisionFilterInput {
"""The external ID of the Division (unique per partner)"""
externalId: String

"""The ID of the Division"""
id: ID
}

"""
A union representing the possible return types when querying for a Division
"""
union DivisionResponse = BadRequestError | Division | InternalServerError

"""Filter criteria used when querying for Divisions"""
input DivisionsFilterInput {
"""If specified, only returns Divisions matching these external IDs"""
externalIds: [String!]

"""If specified, only returns Divisions matching these IDs"""
ids: [ID!]

"""If specified, only returns Divisions matching these names"""
names: [String!]

"""The ID of the parent Organization whose Divisions to list"""
organizationId: ID!
}

"""
A union representing the possible return types when querying for Divisions
"""
union DivisionsResponse = BadRequestError | DivisionsResults | InternalServerError

"""Represents a page of Divisions"""
type DivisionsResults {
nodes: [Division!]!
pageInfo: PageInfo!
}

"""A secure link to download a page of content."""
type DownloadLink {
"""The URL string that should be used to retrieve the content"""
downloadUrl: String!

"""
The date and time that this download link will expire in ISO 8601 format.
"""
expires: String!

"""
These are request headers, where the keys are the header names and the values the header values, that MUST be
passed along when GETting files with the downloadUrl. Note these headers may contain decryption keys to use
when pulling down content and thus should be considered sensitive.
"""
requestHeaders: JSONObject!
}

"\n A string representing a duration conforming to the ISO8601 standard,\n such as: P1W1DT13H23M34S\n P is the duration designator (for period) placed at the start of the duration representation.\n Y is the year designator that follows the value for the number of years.\n M is the month designator that follows the value for the number of months.\n W is the week designator that follows the value for the number of weeks.\n D is the day designator that follows the value for the number of days.\n T is the time designator that precedes the time components of the representation.\n H is the hour designator that follows the value for the number of hours.\n M is the minute designator that follows the value for the number of minutes.\n S is the second designator that follows the value for the number of seconds.\n\n Note the time designator, T, that precedes the time value.\n\n Matches moment.js, Luxon and DateFns implementations\n ,/. is valid for decimal places and +/- is a valid prefix\n "
scalar Duration

"""
A field whose value conforms to the standard internet email address format as specified in HTML Spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address.
"""
scalar EmailAddress

"""An input type used when enrolling an Individual in a Benefit"""
input EnrollIndividualInBenefitInput {
"""The ID of the Benefit to enroll the Individual in"""
benefitId: ID!

"""
Coverage level public ULID. Must reference an active coverage level configured for this offering.

Required for TRADITIONAL_HRA enrollments — the resolver derives `employerInitialContributionAmount`,
`employerRecurringContributionAmount`, and the per-period final-remainder amount from the coverage
level record, so partners do not pass those amounts directly for Traditional HRA.
"""
coverageLevelId: ID

"""
The health insurance coverage type for HSA accounts. This field is optional and only applies to HSA offerings.
"""
coverageType: HealthInsuranceCoverageType

"""
The annual election amount for the benefit enrollment.
Subject to IRS contribution limits based on benefit type and coverage type.
Amount should be provided in cents (lowestDenominationAmount).
Only applicable for HSA and FSA benefit types, for now.
This will change when we add support for additional benefit types.
"""
electionAmount: MoneyInput

"""
The amount of funds from an employee to be used as an initial contribution upon Benefit Enrollment. If provided, this must be positive, non-zero amount.

Not accepted for TRADITIONAL_HRA enrollments — contribution amounts are derived from the selected `coverageLevelId`. Supplying this field on a TRADITIONAL_HRA enrollment returns a BadRequestError.
"""
employeeInitialContributionAmount: MoneyInput

"""
The amount of funds from an employee to be contributed on a recurring schedule to the Benefit. If provided, this must be positive, non-zero amount.

Not accepted for TRADITIONAL_HRA enrollments — contribution amounts are derived from the selected `coverageLevelId`. Supplying this field on a TRADITIONAL_HRA enrollment returns a BadRequestError.
"""
employeeRecurringContributionAmount: MoneyInput

"""
The amount of funds from an employer to be used as an initial contribution upon Benefit Enrollment. If provided, this must be positive, non-zero amount.

Not accepted for TRADITIONAL_HRA enrollments — contribution amounts are derived from the selected `coverageLevelId`. Supplying this field on a TRADITIONAL_HRA enrollment returns a BadRequestError.
"""
employerInitialContributionAmount: MoneyInput

"""
The amount of funds from an employer to be contributed on a recurring schedule to the Benefit. If provided, this must be positive, non-zero amount.

Not accepted for TRADITIONAL_HRA enrollments — contribution amounts are derived from the selected `coverageLevelId`. Supplying this field on a TRADITIONAL_HRA enrollment returns a BadRequestError.
"""
employerRecurringContributionAmount: MoneyInput

"""
The End Date of the Individual Enrollment. If unspecified, defaults to the End Date of the Benefit.
"""
endDate: LocalDate

"""The ID of the Individual to enroll in the program"""
individualId: ID!

"""
The Start Date of the Individual Enrollment. If unspecified, defaults to the Start Date of the Benefit.
"""
startDate: LocalDate

"""
For Benefits that require verification, the ID of a Verification to validate prior to enrollment. The associated
Verification must be in a valid state for enrollment and must belong to the Individual specified by `individualId`.

This field is optional - if omitted, the system will attempt to find an existing valid verification for the Individual.
If no valid verification is found, enrollment will fail. For Benefits that do not require verification, this attribute is ignored.
"""
verificationId: ID
}

"""
A union representing the possible return types when enrolling an Individual in a Benefit
"""
union EnrollIndividualInBenefitResponse = BadRequestError | EnrollIndividualInBenefitResult | InternalServerError

"""The successful result of enrolling an Individual in a Benefit"""
type EnrollIndividualInBenefitResult {
"""The Benefit"""
benefit: Benefit!

"""The Individual that was enrolled in the Benefit"""
individual: Individual!
}

"""All errors extend this core `Error` interface."""
interface Error {
"""An alphanumeric identifier for this error."""
code: String!

"""A user-facing error message."""
message: String!

"""
Returns true if the client can safely retry the request, false otherwise.
"""
retryable: Boolean!
}

"""An input type used when funding a benefit for an individual"""
input FundBenefitForIndividualInput {
"""
The amount of funds to make available to the individual. This must be positive, non-zero amount
in USD currency or the request will be rejected as invalid.
"""
amount: MoneyInput!

"""The ID of the benefit the individual is enrolled in"""
benefitId: ID!

"""A unique idempotency key for this request."""
idempotencyKey: String!

"""The ID of the individual who should receive these funds"""
individualId: ID!
}

"""
A union representing the possible return types when funding an individual in a benefit
"""
union FundBenefitForIndividualResponse = BadRequestError | FundBenefitForIndividualResult | InternalServerError

"""The successful result of funding an individual in a benefit"""
type FundBenefitForIndividualResult {
"""The ID of the benefit that was funded"""
benefitId: ID!

"""The ID of the individual who was funded"""
individualId: ID!

"""The ID of the transaction corresponding to this funding request"""
transactionId: ID!
}

"""The input type used to request the generation of new report results."""
input GenerateReportInput {
"""
Uniquely identifies which report should be generated. The set of possible values for `reportCode` is outlined
in the First Dollar API documentation.
"""
reportCode: String!

"""
The set of parameters to pass with this report generation request. This keys in this field are the
parameter names and the values are the parameter values. The possible parameters for each individual `reportCode`
are specified in the First Dollar API documentation.
"""
reportParameters: JSONObject

"""
This field allows the caller to specify a subset of columns in the report for generation. If this value is not
specified, all requested columns will be returned.
"""
requestedColumns: [String!]
}

"""The possible return types when submitting a report generation request."""
union GenerateReportResponse = BadRequestError | InternalServerError | ReportExecution

enum HealthInsuranceCoverageType {
FAMILY
INDIVIDUAL
NONE
}

"""A Health Wallet belonging to an Individual"""
type HealthWallet {
"""The accounts belonging to this Health Wallet"""
accounts: [Account!]!

"""
A summary object describing Balance aggregates across all accounts in a Health Wallet.
"""
balanceSummary: HealthWalletBalanceSummary!

"""The ID of the Health Wallet"""
id: ID!
}

"""
A summary object describing Balance aggregates across all accounts in a Health Wallet.
"""
type HealthWalletBalanceSummary {
"""
The total available balance across all accounts belonging to this Health Wallet
"""
totalAvailableBalance: Money!

"""
The total current balance across all accounts belonging to this Health Wallet.
Note that `currentBalance` and `availableBalance` may differ when there
are ongoing money movement processes.
"""
totalCurrentBalance: Money!
}

"""Filter criteria used when querying for Health Wallet Accounts"""
input HealthWalletFilterInput {
"""
If specified, returns a filtered list of accounts based on the specified statuses
If not specified or array is empty, returns full lost of accounts
"""
statuses: [AccountEnrollmentStatus!]
}

"""An Individual"""
type Individual {
"""The Individual's primary address"""
address: PhysicalAddress

"""The Individual's date of birth"""
dateOfBirth: LocalDate

"""
List of dependents associated with this individual
Returns empty array if feature flag disabled
"""
dependents: [Dependent!]!

"""The Individual's email address"""
email: EmailAddress

"""The Individual's Health Wallet"""
healthWallet(where: HealthWalletFilterInput): HealthWallet

"""The ID of the Individual"""
id: ID!

"""The Individual's language preference for all communications"""
language: SupportedLanguage

"""The Individual's mailing address"""
mailingAddress: PhysicalAddress

"""The Individual's name"""
name: IndividualName!

"""Organization memberships for this individual"""
organizationMemberships(
"""Return the memberships that come after the specified cursor"""
after: String

"""The number of memberships to retrieve per page"""
first: Int = 100

"""Filter criteria used to match organization memberships"""
where: OrganizationMembershipsFilterInput
): OrganizationMembershipsResults!

"""The Individual's phone number"""
phoneNumber: PhoneNumber

"""The Individual's Tax Identification Number"""
tin: String

"""The Individual's Verifications"""
verifications: [Verification!]!
}

"""Filter criteria used when querying for an Individual"""
input IndividualFilterInput {
"""The ID of the Individual"""
id: ID!
}

"""An Individual"""
input IndividualInput {
"""The Individual's primary address"""
address: PhysicalAddressInput

"""The Individual's date of birth"""
dateOfBirth: LocalDate

"""The Individual's email address"""
email: EmailAddress

"""The Individual's language preference for all communications"""
language: SupportedLanguage

"""The Individual's mailing address"""
mailingAddress: PhysicalAddressInput

"""The Individual's name"""
name: IndividualNameInput!

"""The Individual's phone number"""
phoneNumber: PhoneNumber

"""The Individual's Tax Identification Number"""
tin: String
}

"""An Individual's name"""
type IndividualName {
"""The Individual's first name"""
firstName: String!

"""The Individual's last name"""
lastName: String!

"""The Individual's middle name, if any"""
middleName: String
}

"""An Individual's name"""
input IndividualNameInput {
"""The Individual's first name"""
firstName: String!

"""The Individual's last name"""
lastName: String!

"""The Individual's middle name, if any"""
middleName: String
}

"""
A union representing the possible return types when querying for an Individual
"""
union IndividualResponse = BadRequestError | Individual | InternalServerError

"""Metadata for a single tax form version."""
type IndividualTaxForm {
"""The date this form version was produced."""
formDate: LocalDate!

"""The IRS form name, e.g. "1099-SA"."""
formName: String!
formType: TaxFormType!
id: ID!
status: TaxFormStatus!
taxYear: YearString!

"""The date through which the form's values are valid."""
validAsOfDate: LocalDate!
}

"""Filter criteria used when querying for Individuals"""
input IndividualsFilterInput {
"""
If specified, only returns Individuals who are enrolled in these Benefits
"""
benefitIds: [ID!]

"""
If specified, only returns Individuals who are enrolled in these Benefits Programs
"""
benefitsProgramIds: [ID!]

"""If specified, only returns Individuals matching these Individual IDs"""
ids: [ID!]

"""
If specified, only returns Individuals who are members of these Organizations
"""
organizationIds: [ID!]

"""
If specified, returns a filtered list of Individuals based on the specified statuses
"""
statuses: [AccountEnrollmentStatus!]
}

"""
A union representing the possible return types when querying for Individuals
"""
union IndividualsResponse = BadRequestError | IndividualsResults | InternalServerError

"""Represents a page of Individuals"""
type IndividualsResults {
nodes: [Individual!]!
pageInfo: PageInfo!
}

"""An initial contribution for an account"""
type InitialContribution {
"""The amount of the employee's initial contribution"""
employeeContributionAmount: Money!

"""
The amount of the employer's initial contribution on behalf of the employee
"""
employerContributionAmount: Money!
}

"""Returned when an error is encountered that is not expected."""
type InternalServerError implements Error {
"""An alphanumeric identifier for this error."""
code: String!

"""A user-facing error message."""
message: String!

"""
Returns true if the client can safely retry the request, false otherwise.
"""
retryable: Boolean!
}

input IssueCardInput {
"""The Benefits Program to issue the card for."""
benefitsProgramId: ID!

"""A key for ensuring request idempotency."""
idempotencyKey: String!

"""
The Individual to issue the card to (an account holder or a dependent).
"""
individualId: ID!

"""
The type of card to issue. Dependent cards support physical cards only.
"""
type: CardType!
}

union IssueCardResponse = BadRequestError | InternalServerError | IssueCardResult

type IssueCardResult {
"""The newly issued card."""
card: Card!
}

"""
The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
"""
scalar JSON

"""
The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).
"""
scalar JSONObject

"""
A local date string (i.e., with no associated timezone) in `YYYY-MM-DD` format, e.g. `2020-01-01`.
"""
scalar LocalDate

"""
A local time string (i.e., with no associated timezone) in 24-hr `HH:mm[:ss[.SSS]]` format, e.g. `14:25` or `14:25:06` or `14:25:06.123`. This scalar is very similar to the `LocalTime`, with the only difference being that `LocalEndTime` also allows `24:00` as a valid value to indicate midnight of the following day. This is useful when using the scalar to represent the exclusive upper bound of a time block.
"""
scalar LocalEndTime

"""
A local time string (i.e., with no associated timezone) in 24-hr `HH:mm[:ss[.SSS]]` format, e.g. `14:25` or `14:25:06` or `14:25:06.123`.
"""
scalar LocalTime

"""The locale in the format of a BCP 47 (RFC 5646) standard string"""
scalar Locale

input LockCardInput {
"""The ID of the card to lock."""
cardId: ID!
individualId: ID

"""The reason the card is being locked."""
reason: CardActionReason!
}

union LockCardResponse = BadRequestError | InternalServerError | LockCardResult

type LockCardResult {
"""The locked card."""
card: Card!
}

"""
Represents an amount of money, e.g. an account balance which may be positive or negative.
"""
type Money {
"""
The amount of money in the standard denomination of the target currency.
In `USD`, for example, this represents dollars, where `$1.00` is represented as `1`, and $1.50 is represented as `1.50`.
"""
amount: Float!

"""
The ISO-4217 currency associated with this money. Note that only `USD` is supported at this time.
"""
currency: Currency!

"""The amount and currency formatted for display e.g. $10.00"""
display(
"""Used to change the format when displaying money as a formatted string"""
format: MoneyDisplayFormat = DEFAULT
): String!

"""
The amount of money in the smallest denomination of the target currency.
In `USD`, for example, this represents cents. However, for zero-decimal currencies, this will match the `amount`.
"""
lowestDenominationAmount: SafeInt!
}

"""Used to change the format when displaying money as a formatted string"""
enum MoneyDisplayFormat {
"""
The accounting format, where negative numbers will be wrapped in parentheses instead of prefixed with a `-` sign.
"""
ACCOUNTING

"""
The default format, where negative numbers are prefixed with a `-` sign.
"""
DEFAULT
}

"""
Represents an amount of money, e.g. an account balance which may be positive or negative.
"""
input MoneyInput {
"""
The ISO-4217 currency associated with this money. Note that only `USD` is supported at this time.
"""
currency: Currency!

"""
The amount of money in the smallest denomination of the target currency.
In `USD`, for example, this represents cents.
"""
lowestDenominationAmount: SafeInt!
}

"""
Mutations describe the actions you can perform to modify data in our GraphQL API.
"""
type Mutation {
"""Activates a card that an Individual has received."""
activateCard(input: ActivateCardInput!): ActivateCardResponse

"""Adjudicate Claim"""
adjudicateClaim(input: AdjudicateClaimInput!): AdjudicateClaimResponse

"""
Permanently cancels a card. Optionally issues a replacement card in the same
operation by setting `reissue: true`; the replacement's ID is returned as
`reissuedCardId`.
"""
cancelCard(input: CancelCardInput!): CancelCardResponse

"""Create a new Benefit"""
createBenefit(input: CreateBenefitInput!): CreateBenefitResponse

"""Create a new Benefits Program"""
createBenefitsProgram(input: CreateBenefitsProgramInput!): CreateBenefitsProgramResponse

"""
Create a new dependent with optional benefit enrollments
Supports idempotency via externalReferenceId
"""
createDependent(input: CreateDependentInput!): CreateDependentResponse

"""
Create a new enrollment for a dependent in a benefit offering.
Returns error if dependent is already enrolled in this offering.
Use updateDependentBenefitEnrollment to modify existing enrollments.
Supports idempotency via externalReferenceId
"""
createDependentBenefitEnrollment(input: CreateDependentBenefitEnrollmentInput!): CreateDependentBenefitEnrollmentResponse

"""Create a new Division within an Organization"""
createDivision(input: CreateDivisionInput!): CreateDivisionResponse

"""Create Individual"""
createIndividual(input: CreateIndividualInput!): CreateIndividualResponse

"""Create or update an organization membership for a single individual"""
createOrUpdateOrganizationMembership(input: CreateOrUpdateOrganizationMembershipInput!): CreateOrUpdateOrganizationMembershipResponse

"""Create a new Organization"""
createOrganization(input: CreateOrganizationInput!): CreateOrganizationResponse

"""Create a new Organization Group"""
createOrganizationGroup(input: CreateOrganizationGroupInput!): CreateOrganizationGroupResponse

"""Deactivate an organization membership for a single individual"""
deactivateOrganizationMembership(input: DeactivateOrganizationMembershipInput!): DeactivateOrganizationMembershipResponse

"""Enroll an Individual in a Benefit"""
enrollIndividualInBenefit(input: EnrollIndividualInBenefitInput!): EnrollIndividualInBenefitResponse

"""
Adds an amount of funds to a Benefit for an Individual. On success, the total funds available to the Individual
in this Benefit is increased by the amount specified in the request.
"""
fundBenefitForIndividual(input: FundBenefitForIndividualInput!): FundBenefitForIndividualResponse

"""
Submits a report generation request. Report generation is asynchronous, so the generated reports can be retrieved
by polling the `report` query for updated status and results.
"""
generateReport(input: GenerateReportInput!): GenerateReportResponse

"""
Issues a new card to an Individual for a Benefits Program. The Individual may
be an account holder or a dependent; pass the dependent's own Individual ID
to issue a dependent card. Card availability depends on the Program's
configuration and the member's enrollment and account state.
"""
issueCard(input: IssueCardInput!): IssueCardResponse

"""
Temporarily locks a card, blocking new transactions. Locks with reason `LOST`,
`STOLEN`, or `OTHER` are reversible with `unlockCard`. A lock with reason
`FRAUDULENT_CHARGES` is permanent: the card cannot be unlocked afterwards and
must be cancelled (optionally with a replacement via `cancelCard`'s `reissue`).
"""
lockCard(input: LockCardInput!): LockCardResponse

"""
Remove a dependent from a benefit offering (soft delete).
Sets eligibility_end_date to current date.
"""
removeDependentBenefitEnrollment(input: RemoveDependentBenefitEnrollmentInput!): RemoveDependentBenefitEnrollmentResponse

"""
Reverses a previous 'fundBenefitForIndividual' transaction for an Individual. On success, the total funds
available to the Individual in this Benefit is decreased by the amount specified in the request (or, when
'amount' is omitted, the full original funding amount). Supports partial reversals.

Reversed funds are returned to the funding source for the Benefit. Subsequent return of funds further
upstream, where applicable, is handled separately and is not in the scope of this mutation.

Available for all Benefit types.
"""
reverseBenefitFundingForIndividual(input: ReverseBenefitFundingForIndividualInput!): ReverseBenefitFundingForIndividualResponse

"""
Sets the election amount for a Benefit and Individual. This operation is only available for PENDING enrollments.
Returns an error for ACTIVE enrollments. Subject to IRS contribution limits.
"""
setElectionAmountForBenefitAndIndividual(input: SetElectionAmountForBenefitAndIndividualInput!): SetElectionAmountForBenefitAndIndividualResponse

"""
Sets the initial contributions for a Benefit and Individual. This operation is only available for Benefits with a pending status.
"""
setInitialContributionsForBenefitAndIndividual(input: SetInitialContributionsForBenefitAndIndividualInput!): SetInitialContributionsForBenefitAndIndividualResponse

"""
Sets the recurring contribution schedule for a Benefit. This operation is only available for Benefits
that support recurring contributions.
"""
setRecurringContributionScheduleForBenefit(input: SetRecurringContributionScheduleForBenefitInput!): SetRecurringContributionScheduleForBenefitResponse

"""
Sets the recurring contributions for a Benefit and Individual. This operation is only available for Benefits
that support recurring contributions.
"""
setRecurringContributionsForBenefitAndIndividual(input: SetRecurringContributionsForBenefitAndIndividualInput!): SetRecurringContributionsForBenefitAndIndividualResponse

"""
Transfers an Individual's Benefit Enrollment from one Organization to another. This operation is only available
for HSA Benefits.
"""
transferBenefitForIndividual(input: TransferBenefitForIndividualInput!): TransferBenefitForIndividualResponse

"""
Unenroll an individual from a Benefit.

If the Benefit Enrollment is an HSA, this API is unavailable. 'transferBenefitForIndividual' should be
used instead.
"""
unenrollIndividualFromBenefit(input: UnenrollIndividualFromBenefitInput!): UnenrollIndividualFromBenefitResponse

"""
Removes a temporary lock from a card, allowing transactions again. A card
locked with reason `FRAUDULENT_CHARGES` cannot be unlocked; cancel the card
instead (optionally with a replacement via `cancelCard`'s `reissue`).
"""
unlockCard(input: UnlockCardInput!): UnlockCardResponse

"""Update an existing Benefit"""
updateBenefit(input: UpdateBenefitInput!): UpdateBenefitResponse

"""Update an existing Benefits Program"""
updateBenefitsProgram(input: UpdateBenefitsProgramInput!): UpdateBenefitsProgramResponse

"""
Update an existing dependent's information
Does NOT update benefit enrollments - use separate enroll/unenroll mutations
"""
updateDependent(input: UpdateDependentInput!): UpdateDependentResponse

"""
Update an existing enrollment for a dependent in a benefit offering.
Returns error if dependent is not enrolled in this offering.
Use createDependentBenefitEnrollment to create new enrollments.
"""
updateDependentBenefitEnrollment(input: UpdateDependentBenefitEnrollmentInput!): UpdateDependentBenefitEnrollmentResponse

"""Update an existing Division"""
updateDivision(input: UpdateDivisionInput!): UpdateDivisionResponse

"""Update an existing Individual"""
updateIndividual(input: UpdateIndividualInput!): UpdateIndividualResponse

"""Update an existing Organization"""
updateOrganization(input: UpdateOrganizationInput!): UpdateOrganizationResponse

"""Update an existing Organization Group"""
updateOrganizationGroup(input: UpdateOrganizationGroupInput!): UpdateOrganizationGroupResponse

"""Creates a new Verification for an Individual"""
verifyIndividual(input: VerifyIndividualInput!): VerifyIndividualResponse
}

"""A string that cannot be passed as an empty value"""
scalar NonEmptyString

"""
The directions in which a list of items can be ordered when providing an `orderBy` argument.
"""
enum OrderDirection {
"""Sort by ascending order."""
ASC

"""Sort by descending order."""
DESC
}

"""
An Organization manages Benefits Programs on behalf of Individuals. An example of an Organization
is an employer, a charity, etc. An Organization has a relationship (e.g. employer-employee) with Individuals.

Organizations are typically customers of the API consumer.
"""
type Organization {
"""The physical address of the Organization"""
address: PhysicalAddress

"""Divisions belonging to this Organization"""
divisions(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match Divisions"""
where: OrganizationDivisionsFilterInput
): DivisionsResults!

"""The Employer Identification Number (EIN) of the Organization"""
ein: String

"""A partner-scoped external identifier for the Organization"""
externalId: String

"""The unique ID for the Organization"""
id: ID!

"""The user-displayable name of the Organization"""
name: String!

"""The Organization Group this Organization belongs to, if any"""
organizationGroup: OrganizationGroup

"""A short code that uniquely identifies the Organization"""
shortCode: String! @deprecated(reason: "Use id instead")
}

"""Filter criteria for querying Divisions on an Organization"""
input OrganizationDivisionsFilterInput {
"""If specified, only returns Divisions matching these IDs"""
ids: [ID!]

"""If specified, only returns Divisions matching these names"""
names: [String!]
}

"""Filter criteria used when querying for an Organization"""
input OrganizationFilterInput {
"""The external ID of the Organization (unique per partner)"""
externalId: String

"""The ID of the Organization"""
id: ID
}

"""
An Organization Group is an administrative container that groups related Organizations
under one umbrella. For example, a holding company with multiple subsidiaries.
"""
type OrganizationGroup {
"""The physical address of the Organization Group"""
address: PhysicalAddress

"""The Employer Identification Number (EIN) of the Organization Group"""
ein: String

"""A partner-scoped external identifier for the Organization Group"""
externalId: String

"""The unique ID for the Organization Group"""
id: ID!

"""The user-displayable name of the Organization Group"""
name: String!

"""The Organizations that belong to this group"""
organizations(after: String, first: Int = 100): OrganizationGroupOrganizationsResults!

"""
The US phone number of the Organization Group (10 digits, no punctuation)
"""
phone: PhoneNumber
}

"""Filter criteria used when querying for an Organization Group"""
input OrganizationGroupFilterInput {
"""The external ID of the Organization Group (unique per partner)"""
externalId: String

"""The ID of the Organization Group"""
id: ID
}

"""A page of Organizations belonging to an Organization Group"""
type OrganizationGroupOrganizationsResults {
nodes: [Organization!]!
pageInfo: PageInfo!
}

"""
A union representing the possible return types when querying for an Organization Group
"""
union OrganizationGroupResponse = BadRequestError | InternalServerError | OrganizationGroup

"""Filter criteria used when querying for Organization Groups"""
input OrganizationGroupsFilterInput {
"""
If specified, only returns Organization Groups matching these external IDs
"""
externalIds: [String!]

"""If specified, only returns Organization Groups matching these IDs"""
ids: [ID!]

"""If specified, only returns Organization Groups matching these names"""
names: [String!]
}

"""
A union representing the possible return types when querying for Organization Groups
"""
union OrganizationGroupsResponse = BadRequestError | InternalServerError | OrganizationGroupsResults

"""Represents a page of Organization Groups"""
type OrganizationGroupsResults {
nodes: [OrganizationGroup!]!
pageInfo: PageInfo!
}

"""Organization membership details including external user ID"""
type OrganizationMembership {
"""The Individual's external user ID"""
externalUserId: String

"""The unique ID for this organization membership"""
id: ID!

"""The date and time when this membership was marked as inactive"""
inactiveAt: DateTime

"""The organization this membership belongs to"""
organization: Organization!

"""The roles the user has for this organization"""
roles: [OrganizationRole!]!

"""The status of this organization membership"""
status: OrganizationMembershipStatus!

"""The unique public ULID for this organization membership"""
ulid: String
}

"""The status of an organization membership"""
enum OrganizationMembershipStatus {
"""The organization membership is active"""
ACTIVE

"""The organization membership is inactive"""
INACTIVE
}

"""Filter criteria for organization memberships"""
input OrganizationMembershipsFilterInput {
"""
If true, returns only active memberships. If false, returns all memberships (both active and inactive).
Defaults to true (active only).
"""
activeOnly: Boolean

"""Filter by organization IDs"""
organizationIds: [ID!]
}

"""Results for organization memberships query with pagination"""
type OrganizationMembershipsResults {
"""List of organization memberships"""
nodes: [OrganizationMembership!]!

"""Pagination information"""
pageInfo: PageInfo!
}

"""The status of an organization membership operation"""
enum OrganizationOperationStatus {
"""The membership was created"""
CREATED

"""The operation failed"""
FAILED

"""The membership was updated"""
UPDATED
}

"""
A union representing the possible return types when querying for an Organization
"""
union OrganizationResponse = BadRequestError | InternalServerError | Organization

"""The role of the organization member."""
enum OrganizationRole {
"""
An Admin role indicates that the user is an administrator of an organization. The administrator
role is distinct and independent from the Member role. An Admin may also be a Member, but in general
it is expected that admins and members will be distinct.
"""
ADMIN

"""
A Member role indicates that the user has consumer accounts associated with this organization. A Member
may also hold admin roles.
"""
MEMBER

"""
Owner is an Organization Administrator with elevated permissions.
and can be granted to additional admins as required.
"""
OWNER
}

"""Filter criteria used when querying for Organizations"""
input OrganizationsFilterInput {
"""
If specified, only returns Organizations matching these Employer Identification Numbers (EINs)
"""
eins: [String!]

"""If specified, only returns Organizations matching these external IDs"""
externalIds: [String!]

"""If specified, only returns Organizations matching these IDs"""
ids: [ID!]

"""If specified, only returns Organizations matching these names"""
names: [String!]
}

"""
A union representing the possible return types when querying for Organizations
"""
union OrganizationsResponse = BadRequestError | InternalServerError | OrganizationsResults

"""Represents a page of Organizations"""
type OrganizationsResults {
nodes: [Organization!]!
pageInfo: PageInfo!
}

"""Metadata used when paging over a list of items"""
type PageInfo {
"""
When paging forward, this cursor is used to continue. It should be the cursor belonging to the last item in the previous page
"""
endCursor: String

"""
When paging forward, this flag indicates whether there are more items in the list
"""
hasNextPage: Boolean!
}

"""Input type used when paging over a list of items"""
input PageInput {
"""When paging forward, retrieve items after this cursor"""
after: String

"""
When paging forward, indicates the number of items to retrieve after the cursor
"""
first: Int
}

"""The full name of a cardholder."""
type PersonName {
firstName: String!
lastName: String!
middleName: String
}

"""
A field whose value conforms to the standard E.164 format as specified in: https://en.wikipedia.org/wiki/E.164. Basically this is +17895551234.
"""
scalar PhoneNumber

"""A physical address"""
type PhysicalAddress {
"""The first line of an address e.g. `123 Main St`"""
addressLine1: String!

"""The second line of an address e.g. `Apt 111`"""
addressLine2: String

"""The city e.g. `Austin`"""
city: String!

"""The country e.g. `USA`"""
country: CountryCode

"""The state e.g. `Texas`"""
state: String!

"""The zip code e.g. `78704`"""
zip: PostalCode!
}

"""A physical address"""
input PhysicalAddressInput {
"""The first line of an address e.g. `123 Main St`"""
addressLine1: String!

"""The second line of an address e.g. `Apt 111`"""
addressLine2: String

"""The city e.g. `Austin`"""
city: String!

"""The country e.g. `USA`"""
country: CountryCode

"""The two letter state code e.g. `TX`"""
state: String!

"""The zip code e.g. `78704`"""
zip: PostalCode!
}

"""
A field whose value conforms to the standard postal code formats for United States, United Kingdom, Germany, Canada, France, Italy, Australia, Netherlands, Spain, Denmark, Sweden, Belgium, India, Austria, Portugal, Switzerland or Luxembourg.
"""
scalar PostalCode

"""Queries describe the data you can retrieve from our GraphQL API."""
type Query {
"""Returns a Benefit by ID"""
benefit(where: BenefitFilterInput!): BenefitResponse

"""Returns Benefit Templates"""
benefitTemplates(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match benefit templates"""
where: BenefitTemplatesFilterInput
): BenefitTemplatesResponse

"""Returns a Benefits Program by ID"""
benefitsProgram(where: BenefitsProgramFilterInput!): BenefitsProgramResponse

"""Returns Benefits Programs matching the filter criteria"""
benefitsPrograms(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match Benefits Programs"""
where: BenefitsProgramsFilterInput
): BenefitsProgramsResponse

"""
A single card, specified by ID, belonging to one of this partner's members.
"""
card(where: CardFilterInput!): CardResponse

"""
Cards for this partner's members, newest first. Returns cards across all of
the partner's members by default; narrow to specific members with
`where.individualIds`. Filters that match nothing return an empty list, not
an error.
"""
cards(after: String, first: Int = 25, where: CardsFilterInput): CardsResponse

"""Returns a Claim Adjudication by ID"""
claimAdjudication(where: ClaimAdjudicationInput!): ClaimAdjudicationResponse

"""Lists Claim Adjudications based on the specified filter criteria"""
claimAdjudications(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match Claim Adjudications"""
where: ClaimAdjudicationsFilterInput
): ClaimAdjudicationsResponse

"""Fetch a single dependent by ID"""
dependent(where: DependentFilterInput!): DependentResponse

"""
List all dependents for the authenticated partner
Supports cursor-based pagination
"""
dependents(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page (default: 25, max: 100)"""
first: Int = 25

"""Filter criteria used to match dependents"""
where: DependentsFilterInput!
): DependentsResponse

"""Returns a Division by ID"""
division(where: DivisionFilterInput!): DivisionResponse

"""Returns Divisions for an Organization matching the filter criteria"""
divisions(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match Divisions"""
where: DivisionsFilterInput!
): DivisionsResponse

"""Returns an Individual by ID"""
individual(where: IndividualFilterInput!): IndividualResponse

"""Lists Individuals based on the specified filter criteria"""
individuals(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match Individuals"""
where: IndividualsFilterInput
): IndividualsResponse

"""Returns an Organization by ID"""
organization(where: OrganizationFilterInput!): OrganizationResponse

"""Returns an Organization Group by ID"""
organizationGroup(where: OrganizationGroupFilterInput!): OrganizationGroupResponse

"""Returns Organization Groups matching the filter criteria"""
organizationGroups(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match Organization Groups"""
where: OrganizationGroupsFilterInput
): OrganizationGroupsResponse

"""Returns Organizations matching the filter criteria"""
organizations(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page"""
first: Int = 100

"""Filter criteria used to match Organizations"""
where: OrganizationsFilterInput
): OrganizationsResponse

"""A simple ping query to test the API."""
ping: String

"""
Retrieves a report that was previously generated with the `generateReport` mutation. Note that if the report is still
being processed that the status field on the `ReportExecution` object will indicate this, and the data in the
`results` field will be null. Thus, this method can be polled to determine when report generation is complete.
"""
report(
"""
Specifies the page of the report to be returned, if report generation is complete. Since reports may be large, they
are generated page-by-page with a standard row count and and thus don't use cursor-based paging, instead they use
page-number based retrieval to return the specified pre-generated page. The page number is 1-based. If this value is
not specified, the first page will be returned in the `results` field if report generation is complete.
"""
page: Int

"""The ReportFilterInput specifies which report execution to retrieve."""
where: ReportFilterInput!
): ReportResponse

"""A single statement, specified by ID, belonging to an Individual."""
statement(where: StatementFilterInput!): StatementResponse

"""
Statements for an Individual, ordered by period start date, most recent first
(fixed order; no orderBy parameter). Today only HSA Benefits produce statements;
filters selecting other Benefit types return an empty list.
"""
statements(
"""Return the elements in the list that come after the specified cursor"""
after: String

"""The number of elements to retrieve per page (default: 25)"""
first: Int = 25

"""Filter criteria used to match statements"""
where: StatementsFilterInput!
): StatementsResponse

"""A single tax form, with box-level data, specified by ID."""
taxForm(where: TaxFormFilterInput!): TaxFormResponse

"""
Issues a secure, expiring download link for the rendered PDF of a tax form (the member copy). Perform a GET
against the returned link's `downloadUrl`, passing along all of the returned `requestHeaders`. Links expire;
issue a fresh link per download rather than storing them.
"""
taxFormDownloadLink(where: TaxFormFilterInput!): TaxFormDownloadLinkResponse

"""
Tax forms for an Individual, grouped by tax year. Today only HSA Benefits produce tax forms (1099-SA, 5498-SA);
filters selecting other Benefit types return an empty list.
"""
taxForms(where: TaxFormsFilterInput!): TaxFormsResponse

"""Returns a Verification by ID"""
verification(where: VerificationFilterInput!): VerificationResponse
}

"""A recurring contribution for an account"""
type RecurringContribution {
"""The amount of the employee's recurring contribution"""
employeeContributionAmount: Money!

"""
The amount of the employer's recurring contribution on behalf of the employee
"""
employerContributionAmount: Money!
}

enum RecurringContributionScheduleEnablementStatus {
"""The recurring contribution schedule is active"""
ACTIVE

"""The recurring contribution schedule is not active"""
INACTIVE
}

input RecurringContributionScheduleInput {
"""
The day of the month on which the contributions will be made. Required if the strategy is 'MONTHLY'.
"""
dayOfMonth: Int

"""
The days of the week on which the contributions will be made. Required if the strategy is 'WEEKLY' or 'BI_WEEKLY'. Do not set otherwise.
"""
daysOfWeek: [DaysOfWeek!]

"""
The earliest date on which the recurring contributions can begin. The schedule will run the first date that corresponds to the schedule strategy and strategyOption that is on or after this date. If this is before the benefit start date, the contributions will not begin until on or after the benefit start date.
"""
minRunDate: LocalDate!

"""The frequency at which the contributions will be made"""
strategy: RecurringContributionStrategy!

"""
Determines the days of the month on which the contributions will be made. Required if the strategy is 'SEMI_MONTHLY'. Do not set otherwise.
"""
strategyOption: RecurringContributionStrategyOption
}

"""
An enum representing the possible options for the strategy used to schedule recurring contributions
"""
enum RecurringContributionStrategy {
"""
Contributions are made on a bi-weekly basis on the days specified by the 'daysOfWeek' field.
"""
BI_WEEKLY

"""Contributions are made on a monthly basis"""
MONTHLY

"""
Contributions are made 2 times each month. When this option is set, the 'strategyOption' field must also be set.
"""
SEMI_MONTHLY

"""
Contributions are made on a weekly basis on the days specified by the 'daysOfWeek' field.
"""
WEEKLY
}

"""
An enum representing the possible options for the strategy used to schedule recurring contributions
"""
enum RecurringContributionStrategyOption {
"""Contributions are made on the 15th and last day of each month"""
FIFTEENTH_AND_LAST_DAY

"""Contributions are made on the 1st and 15th of each month"""
FIRST_AND_FIFTEENTH
}

"""Input for removing a dependent from a benefit offering"""
input RemoveDependentBenefitEnrollmentInput {
"""Public ULID of the offering to remove enrollment from"""
benefitId: ID!

"""First Dollar User ID of the dependent"""
dependentId: ID!
}

"""Union response for removeDependentBenefitEnrollment mutation"""
union RemoveDependentBenefitEnrollmentResponse = BadRequestError | InternalServerError | RemoveDependentBenefitEnrollmentResult

"""Successful result of removing an enrollment"""
type RemoveDependentBenefitEnrollmentResult {
"""Success confirmation"""
success: Boolean!
}

"""Report contains information about a generated report."""
type Report {
"""
If requested, this field will be populated with links to download the individual CSV pages of the report. Importantly,
the behavior of this field is a bit different compared to the `results` field based on the `page` input parameter.
If the `page` input parameter was not specified at all, this field will include links for ALL pages of the report
(as these are just links, paging is not as much of a concern here). If the page number WAS specified, this field
will only include the link to that single page.
"""
downloadLinks: [DownloadLink!]

"""
This field contains metadata about the current status of report generation, and fields originally passed in to
generate the report.
"""
execution: ReportExecution!

"""
Contains the actual data result rows for the report. Note that if `reportExecution.status` is not `SUCCEEDED`, this
field will be null. The results here will only be for the page requested (if page was not specified, the
first page will be returned).
"""
results: ReportResults
}

"""
This is the success return type from `generateReport`, and it contains metadata that uniquely identifies the
report generation request, as well as the current status of report generation.
"""
type ReportExecution {
"""
A unique identifier for this report generation request. This value is also passed back to the `report` query
endpoint to retrieve the results for a report.
"""
id: ID!

"""
The original value for the code that was passed in with the report generation request, which identifies which
report was run.
"""
reportCode: String!

"""
The original parameters, if any, passed in to this report generation request.
"""
reportParameters: JSONObject

"""The human-readable descriptive title of this report."""
reportTitle: String!

"""
The original requested columns, if specified, for this report generation request.
"""
requestedColumns: [String!]

"""The current status of the report generation request."""
status: ReportExecutionStatus!
}

"""
The enum states the possible values for the status of the generated report.
"""
enum ReportExecutionStatus {
"""Report execution has completed, but has failed."""
FAILED

"""
Report execution has not yet begun processing, e.g. it may be queued and waiting to run.
"""
NOT_STARTED

"""Report execution is currently processing."""
PROCESSING

"""Report execution has successfully completed processing."""
SUCCEEDED
}

"""
Filter criteria used when retrieving the results for a generated report.
"""
input ReportFilterInput {
"""
The ID of the report execution whose results are to be retrieved, originally returned by the `generateReport` mutation.
"""
id: ID!
}

"""The possible return types when retrieving a generated report."""
union ReportResponse = BadRequestError | InternalServerError | Report

"""
ReportResults represents a single result page containing the data output from a report generation.
"""
type ReportResults {
"""The column header names in the report."""
columnHeaders: [String!]!

"""
The report data is returned as an array of JSON objects. The keys in the object will match the
`columnHeader` names.
"""
rows: [JSONObject!]!

"""The total number of pages for this generated report"""
totalPages: Int!
}

"""
An input type used when reversing a previous funding transaction for a benefit and individual.
"""
input ReverseBenefitFundingForIndividualInput {
"""
Optional partial reversal amount. When omitted, the original funding amount is reversed in full.
When provided, must be a positive non-zero USD amount no greater than the original funding amount.
"""
amount: MoneyInput

"""The ID of the benefit the individual is enrolled in"""
benefitId: ID!

"""Optional human-readable description recorded on the reversal entry."""
description: String

"""
The transaction ID of the prior fundBenefitForIndividual call to reverse. This is the value
returned as 'transactionId' on the original FundBenefitForIndividualResult.
"""
fundingTransactionId: ID!

"""
A unique idempotency key for this reversal request. Repeated calls with the same key return the
prior result.
"""
idempotencyKey: String!

"""The ID of the individual whose funding is being reversed"""
individualId: ID!
}

"""
A union representing the possible return types when reversing a benefit funding for an individual.
"""
union ReverseBenefitFundingForIndividualResponse = BadRequestError | InternalServerError | ReverseBenefitFundingForIndividualResult

"""
The successful result of reversing a benefit funding for an individual.
"""
type ReverseBenefitFundingForIndividualResult {
"""The ID of the benefit whose funding was reversed"""
benefitId: ID!

"""The transaction ID of the original funding that was reversed"""
fundingTransactionId: ID!

"""The ID of the individual whose funding was reversed"""
individualId: ID!

"""
The ID of the new reversal transaction recorded on the Individual's Benefit
"""
reversalTransactionId: ID!
}

"""
In the US, an ABA routing transit number (`ABA RTN`) is a nine-digit code to identify the financial institution.
"""
scalar RoutingNumber

"""
The `SafeInt` scalar type represents non-fractional signed whole numeric values that are considered safe as defined by the ECMAScript specification.
"""
scalar SafeInt

"""
An input type used when setting the election amount for a benefit and individual
"""
input SetElectionAmountForBenefitAndIndividualInput {
"""The ID of the Benefit for which the election amount is being set"""
benefitId: ID!

"""
The annual election amount. Subject to IRS contribution limits.
Amount should be provided in cents (lowestDenominationAmount).
"""
electionAmount: MoneyInput!

"""The ID of the Individual for whom the election amount is being set"""
individualId: ID!
}

"""
A union representing the possible return types when setting the election amount for a benefit and individual
"""
union SetElectionAmountForBenefitAndIndividualResponse = BadRequestError | InternalServerError | SetElectionAmountForBenefitAndIndividualResult

"""
The successful result of setting the election amount for a benefit and individual
"""
type SetElectionAmountForBenefitAndIndividualResult {
"""The ID of the Benefit for which the election amount was set"""
benefitId: ID!

"""The ID of the Individual for whom the election amount was set"""
individualId: ID!
}

"""
An input type used when setting initial contributions for a benefit and individual
"""
input SetInitialContributionsForBenefitAndIndividualInput {
"""
The ID of the Benefit for which the initial contributions are being set
"""
benefitId: ID!

"""
The amount of funds from an employee to be made as an initial contribution to the Benefit. This must be positive, non-zero amount.
"""
employeeInitialContributionAmount: MoneyInput!

"""
The amount of funds from an employer to be made as an initial contribution to the Benefit. This must be positive, non-zero amount.
"""
employerInitialContributionAmount: MoneyInput!

"""
The ID of the Individual who will be receiving the initial contributions
"""
individualId: ID!
}

"""
A union representing the possible return types when setting initial contributions for a benefit and individual
"""
union SetInitialContributionsForBenefitAndIndividualResponse = BadRequestError | InternalServerError | SetInitialContributionsForBenefitAndIndividualResult

"""
The successful result of setting initial contributions for a benefit and individual
"""
type SetInitialContributionsForBenefitAndIndividualResult {
"""The ID of the Benefit for which the initial contributions were set"""
benefitId: ID!

"""
The ID of the Individual who will be receiving the initial contributions
"""
individualId: ID!
}

input SetRecurringContributionScheduleForBenefitInput {
"""
The ID of the Benefit for which the recurring contributions are being set
"""
benefitId: ID!

"""
Whether or not to enable the recurring contribution schedule. Defaults to 'ACTIVE'.
"""
enablementStatus: RecurringContributionScheduleEnablementStatus

"""The schedule for the recurring contributions"""
schedule: RecurringContributionScheduleInput!
}

"""
A union representing the possible return types when setting the recurring contribution schedule for a benefit
"""
union SetRecurringContributionScheduleForBenefitResponse = BadRequestError | InternalServerError | SetRecurringContributionScheduleForBenefitResult

"""
The successful result of setting the recurring contribution schedule for a benefit
"""
type SetRecurringContributionScheduleForBenefitResult {
"""
The ID of the Benefit for which the recurring contribution schedule was set
"""
benefitId: ID!
}

"""
An input type used when setting recurring contributions for a benefit and individual
"""
input SetRecurringContributionsForBenefitAndIndividualInput {
"""
The ID of the Benefit for which the recurring contributions are being set
"""
benefitId: ID!

"""
The amount of funds from an employee to be contributed on a recurring schedule to the Benefit. This must be positive, non-zero amount.
"""
employeeRecurringContributionAmount: MoneyInput!

"""
The amount of funds from an employer to be contributed on a recurring schedule to the Benefit. This must be positive, non-zero amount.
"""
employerRecurringContributionAmount: MoneyInput!

"""
The ID of the Individual who will be receiving the recurring contributions
"""
individualId: ID!
}

"""
A union representing the possible return types when setting recurring contributions for a benefit and individual
"""
union SetRecurringContributionsForBenefitAndIndividualResponse = BadRequestError | InternalServerError | SetRecurringContributionsForBenefitAndIndividualResult

"""
The successful result of setting recurring contributions for a benefit and individual
"""
type SetRecurringContributionsForBenefitAndIndividualResult {
"""The ID of the Benefit for which the recurring contributions were set"""
benefitId: ID!

"""
The ID of the Individual who will be receiving the recurring contributions
"""
individualId: ID!
}

"""Structured data for a single account statement."""
type Statement {
"""The masked account number of the underlying account."""
accountNumberForDisplay: String!

"""The type of the Benefit whose account this statement covers."""
benefitType: BenefitType!

"""The account balance at the end of the statement period."""
endingBalance: Money!
id: ID!

"""
Interest earned by the account over the statement period, when available.
"""
interestEarnedForPeriod: Money

"""
Interest paid to the account during the statement period, when available.
"""
interestPaidForPeriod: Money

"""The last day of the statement period."""
periodEndDate: LocalDate!

"""The first day of the statement period."""
periodStartDate: LocalDate!

"""The account balance at the start of the statement period."""
startingBalance: Money!

"""All transactions that occurred during the statement period."""
transactions: [StatementTransaction!]!
}

"""Filter criteria for querying a single statement"""
input StatementFilterInput {
"""The ID of the statement."""
id: ID!

"""The ID of the Individual who owns the statement."""
individualId: ID!
}

"""Union response for statement query"""
union StatementResponse = BadRequestError | InternalServerError | Statement

"""
A summary of a single statement. Fetch full data with the `statement` query.
"""
type StatementSummary {
id: ID!

"""The last day of the statement period."""
periodEndDate: LocalDate!

"""The first day of the statement period."""
periodStartDate: LocalDate!
}

"""A single transaction appearing on a statement."""
type StatementTransaction {
"""
The amount of the transaction. Positive amounts are credits; negative amounts are debits.
"""
amount: Money!

"""The account balance immediately after this transaction."""
balance: Money!

"""
Optional category providing additional data about this transaction, e.g. a
contribution type for deposits.
"""
category: String

"""The date the transaction occurred."""
date: LocalDate!

"""The description of the transaction."""
description: String!
id: ID!

"""The type of this transaction."""
type: StatementTransactionType!
}

"""The type of a transaction appearing on a statement."""
enum StatementTransactionType {
CHARGE
DEPOSIT
HOLD
HOLD_RELEASE
INTEREST
INTERNAL
INVESTMENTS_DIVIDEND
INVESTMENTS_FEE
INVESTMENTS_ORDER_BUY
INVESTMENTS_ORDER_SELL
INVESTMENTS_TRANSFER_INCOMING
INVESTMENTS_TRANSFER_OUTGOING
PAYMENT
REMOTE_DEPOSIT_CAPTURE
REVERSAL
UNKNOWN
WITHDRAWAL
}

"""Filter criteria for querying multiple statements"""
input StatementsFilterInput {
"""
When specified, only returns statements for accounts associated with these
Benefits. Yields an empty list when the Individual has no statement-bearing
account under any of these Benefits.
"""
benefitIds: [ID!]

"""
When specified, only returns statements for accounts of these Benefit types.
Today only HSA accounts produce statements; other types yield an empty list.
"""
benefitTypes: [BenefitType!]

"""The ID of the Individual whose statements to list."""
individualId: ID!

"""
When specified, only returns statements whose period ends on or before this date.
"""
periodEndsOnOrBefore: LocalDate

"""
When specified, only returns statements whose period starts on or after this date.
"""
periodStartsOnOrAfter: LocalDate
}

"""Union response for statements query"""
union StatementsResponse = BadRequestError | InternalServerError | StatementsResults

"""Paginated list of statement summaries"""
type StatementsResults {
"""List of statement summaries in this page"""
nodes: [StatementSummary!]!

"""Pagination metadata"""
pageInfo: PageInfo!
}

"""
Languages supported by First Dollar
These are cased according to the ISO standard language format.
"""
enum SupportedLanguage {
"""English"""
en

"""Spanish (United States)"""
es_US
}

"""
The box-level data for a tax form; the concrete type depends on the form's `formType`.
"""
union TaxFormData = ContributionsTaxFormData | DistributionsTaxFormData

"""A tax form with its box-level data."""
type TaxFormDetail {
data: TaxFormData!
taxForm: IndividualTaxForm!
}

"""The possible return types when requesting a tax form download link."""
union TaxFormDownloadLinkResponse = BadRequestError | InternalServerError | TaxFormDownloadLinkResult

"""The success result for the `taxFormDownloadLink` query."""
type TaxFormDownloadLinkResult {
"""A secure, expiring link to download the rendered PDF."""
downloadLink: DownloadLink!

"""The tax form this link serves."""
taxForm: IndividualTaxForm!
}

"""Filter criteria identifying a single tax form."""
input TaxFormFilterInput {
"""
The ID of the tax form version, as returned by the `taxForms` or `taxForm` queries. Each correction is a
distinct version with its own ID.
"""
id: ID!

"""The ID of the Individual who owns the tax form."""
individualId: ID!
}

"""The possible return types when retrieving a single tax form."""
union TaxFormResponse = BadRequestError | InternalServerError | TaxFormDetail

"""The lifecycle status of a tax form."""
enum TaxFormStatus {
"""A correction to a previously fileable version."""
CORRECTED

"""The version filed (or fileable) with the IRS."""
FILEABLE

"""An early, informational version; final values may differ."""
PRELIMINARY
}

"""The kind of tax form."""
enum TaxFormType {
"""Form 5498-SA: contributions to an HSA."""
HSA_CONTRIBUTIONS

"""Form 1099-SA: distributions from an HSA."""
HSA_DISTRIBUTIONS
}

"""Filter criteria used when listing an Individual's tax forms."""
input TaxFormsFilterInput {
"""
When specified, only returns tax forms arising from accounts of these Benefit types. Today only HSA accounts
produce tax forms; other types yield an empty list.
"""
benefitTypes: [BenefitType!]

"""When specified, only returns tax forms of these types."""
formTypes: [TaxFormType!]

"""The ID of the Individual whose tax forms to list."""
individualId: ID!

"""
When specified, only returns tax forms for these tax years (e.g. ["2026"]).
"""
taxYears: [YearString!]
}

"""The possible return types when listing an Individual's tax forms."""
union TaxFormsResponse = BadRequestError | InternalServerError | TaxFormsResults

"""The success result for the `taxForms` query."""
type TaxFormsResults {
"""Tax forms grouped by tax year, most recent year first."""
annualTaxForms: [AnnualTaxForms!]!
}

"""
A time string at UTC, such as 10:15:30Z, compliant with the `full-time` format outlined in section 5.6 of the RFC 3339profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.
"""
scalar Time

"""
A field whose value exists in the standard IANA Time Zone Database: https://www.iana.org/time-zones
"""
scalar TimeZone

"""
The javascript `Date` as integer. Type represents date and time as number of milliseconds from start of UNIX epoch.
"""
scalar Timestamp

"""A Transaction posted against an Account."""
type Transaction {
"""
The amount of the Transaction. Positive values indicate a credit while negative values indicate a debit
"""
amount: Money!

"""The balance of the Account immediately after this Transaction"""
balance: Money!

"""The Date of the Transaction"""
date: LocalDate!

"""A description of the Transaction"""
description: String!

"""The ID of the Transaction"""
id: ID!

"""A timestamp of the Transaction, if available"""
timestamp: DateTime

"""The `type` of the Transaction"""
type: TransactionType!
}

"""Represents a page of Transactions against an Account"""
type TransactionResults {
"""The Transactions in this page"""
nodes: [Transaction!]!

"""Pagination metadata"""
pageInfo: PageInfo!
}

"""
Transactions are labeled with a `type` attribute, categorizing the transaction according to its purpose and features.
"""
enum TransactionType {
"""
A Deposit is a settled transaction that increases the current and available balance of a Ledger Account.
"""
DEPOSIT

"""
A Hold is a pending transaction that has, by definition, not settled. A Hold increases or reduces the current balance of
a Ledger Account, leaving available balance unchanged.
"""
HOLD

"""
A Hold Release is a pending transaction that releases (reverses) a Hold. Since it is a pending transaction type, it alters
the current balance of a Ledger Account, leaving available balance unchanged.
"""
HOLD_RELEASE

"""
A Withdrawal is a settled transaction that decreases the current and available balance of a Ledger Account.
"""
WITHDRAWAL
}

"""Filter criteria used when querying for Transactions"""
input TransactionsFilterInput {
"""
When specified, only returns transactions that occurred after the specified DateTime.
"""
after: DateTime

"""
When specified, only returns transactions that occurred before the specified DateTime.
"""
before: DateTime

"""
The `view` to use when returning transactions. If unspecified, defaults to "pending and settled" transactions.
"""
view: TransactionsFilterView = PENDING_AND_SETTLED
}

"""
A `TransactionsFilterView` defines the "view" of returned transactions. Depending on the selected "view",
certain transactions may be included or excluded from the results.
"""
enum TransactionsFilterView {
"""Includes all transactions for the specified account."""
ALL

"""
Includes "pending" transactions (holds which have not been released) and "settled" transactions.
"""
PENDING_AND_SETTLED
}

"""An input type used when transferring a Benefit for an Individual"""
input TransferBenefitForIndividualInput {
"""The ID of the Benefit the Individual is currently enrolled in"""
benefitId: ID!

"""The ID of the Individual whose enrollment will be transferred"""
individualId: ID!

"""The ID of the Benefit receiving the enrollment transfer"""
transferBenefitId: ID!
}

"""
A union representing the possible return types when transferring a Benefit for an Individual
"""
union TransferBenefitForIndividualResponse = BadRequestError | InternalServerError | TransferBenefitForIndividualResult

"""The successful result of transferring a Benefit for an Individual"""
type TransferBenefitForIndividualResult {
"""The Benefit that the enrollment was transferred out of"""
benefit: Benefit!

"""The Individual whose enrollment was transferred"""
individual: Individual!

"""The Benefit that the enrollment was transferred to"""
transferBenefit: Benefit!
}

"""
A field whose value conforms to the standard URL format as specified in RFC3986: https://www.ietf.org/rfc/rfc3986.txt.
"""
scalar URL

"""
A field whose value is a generic Universally Unique Identifier: https://en.wikipedia.org/wiki/Universally_unique_identifier.
"""
scalar UUID

"""An input type used when unenrolling an individual from a benefit"""
input UnenrollIndividualFromBenefitInput {
"""The ID of the benefit the individual is enrolled in"""
benefitId: ID!

"""
The date (YYYY-MM-DD) when unenrollment becomes effective. If unspecified, this request is immediately
effective as of the current date.
"""
effectiveAt: LocalDate

"""The ID of the individual to unenroll from the benefit"""
individualId: ID!
}

"""
A union representing the possible return types when unenrolling an individual from a benefit
"""
union UnenrollIndividualFromBenefitResponse = BadRequestError | InternalServerError | UnenrollIndividualFromBenefitResult

"""The successful result of unenrolling an individual from a benefit"""
type UnenrollIndividualFromBenefitResult {
"""The benefit"""
benefit: Benefit!

"""The individual that was unenrolled from the benefit"""
individual: Individual!
}

input UnlockCardInput {
"""The ID of the card to unlock."""
cardId: ID!
individualId: ID
}

union UnlockCardResponse = BadRequestError | InternalServerError | UnlockCardResult

type UnlockCardResult {
"""The unlocked card."""
card: Card!
}

"""An input type used when updating a benefit"""
input UpdateBenefitInput {
"""The ID of the benefit to update"""
id: ID!

"""A human-readable name for the benefit"""
name: String
}

"""A union representing the possible return types when updating a benefit"""
union UpdateBenefitResponse = BadRequestError | InternalServerError | UpdateBenefitResult

"""The successful result of updating a benefit"""
type UpdateBenefitResult {
"""The benefit that was updated"""
benefit: Benefit!
}

"""An input type used when updating a benefits program"""
input UpdateBenefitsProgramInput {
"""The ID of the program to update"""
id: ID!

"""The name of the program"""
name: String
}

"""
A union representing the possible return types when updating a benefits program
"""
union UpdateBenefitsProgramResponse = BadRequestError | InternalServerError | UpdateBenefitsProgramResult

"""The successful result of updating a benefits program"""
type UpdateBenefitsProgramResult {
"""The program that was updated"""
benefitsProgram: BenefitsProgram!
}

"""Input for updating an existing enrollment for a dependent in a benefit"""
input UpdateDependentBenefitEnrollmentInput {
"""Public ULID of the offering"""
benefitId: ID!

"""First Dollar User ID of the dependent"""
dependentId: ID!

"""
New end datetime of eligibility (optional - omit to keep current value)
"""
eligibilityEndDate: DateTime

"""
New start datetime of eligibility (optional - omit to keep current value)
"""
eligibilityStartDate: DateTime
}

"""Union response for updateDependentBenefitEnrollment mutation"""
union UpdateDependentBenefitEnrollmentResponse = BadRequestError | InternalServerError | UpdateDependentBenefitEnrollmentResult

"""Successful result of updating an existing enrollment"""
type UpdateDependentBenefitEnrollmentResult {
"""The benefit enrollment that was updated"""
enrollment: DependentBenefitEnrollment!
}

"""Input for updating an existing dependent"""
input UpdateDependentInput {
"""New physical address (optional - omit to keep current value)"""
address: PhysicalAddressInput

"""New date of birth (optional - omit to keep current value)"""
dateOfBirth: LocalDate

"""New email address (optional - omit to keep current value)"""
email: EmailAddress

"""New first name (optional - omit to keep current value)"""
firstName: String

"""First Dollar User ID of the dependent to update"""
id: ID!

"""New last name (optional - omit to keep current value)"""
lastName: String

"""New phone number (optional - omit to keep current value)"""
phoneNumber: PhoneNumber

"""New relationship type (optional - omit to keep current value)"""
relationshipType: DependentRelationshipType
}

"""Union response for updateDependent mutation"""
union UpdateDependentResponse = BadRequestError | InternalServerError | UpdateDependentResult

"""Successful result of updating a dependent"""
type UpdateDependentResult {
"""The dependent that was updated"""
dependent: Dependent!
}

"""An input type used when updating a Division"""
input UpdateDivisionInput {
"""The physical address of the Division"""
address: PhysicalAddressInput

"""The Employer Identification Number (EIN) of the Division"""
ein: String

"""
A partner-scoped external identifier for the Division. Must be unique within the partner.
"""
externalId: String

"""The ID of the Division to update"""
id: ID!

"""The user-displayable name of the Division"""
name: String
}

"""
A union representing the possible return types when updating a Division
"""
union UpdateDivisionResponse = BadRequestError | InternalServerError | UpdateDivisionResult

"""The successful result of updating a Division"""
type UpdateDivisionResult {
"""The Division that was updated"""
division: Division!
}

"""An input type used for updating an Individual"""
input UpdateIndividualInput {
"""A new address for the Individual, if applicable"""
address: PhysicalAddressInput

"""A new date of birth for the Individual, if applicable"""
dateOfBirth: LocalDate

"""A new email address for the Individual, if applicable"""
email: EmailAddress

"""The ID of the Individual to update"""
id: ID!

"""A new language preference for the Individual, if applicable"""
language: SupportedLanguage

"""A new mailing address for the Individual, if applicable"""
mailingAddress: PhysicalAddressInput

"""A new name for the Individual, if applicable"""
name: IndividualNameInput

"""A new phone number for the Individual, if applicable"""
phoneNumber: PhoneNumber

"""A new Tax Identification Number for the Individual, if applicable"""
tin: String
}

"""
A union representing the possible return types when updating an Individual
"""
union UpdateIndividualResponse = BadRequestError | InternalServerError | UpdateIndividualResult

"""The successful result of updating an Individual"""
type UpdateIndividualResult {
"""The Individual that was updated"""
individual: Individual!
}

"""An input type used when updating an Organization Group"""
input UpdateOrganizationGroupInput {
"""The physical address of the Organization Group"""
address: PhysicalAddressInput

"""The Employer Identification Number (EIN) of the Organization Group"""
ein: String

"""
A partner-scoped external identifier for the Organization Group. Must be unique within the partner.
"""
externalId: String

"""The ID of the Organization Group to update"""
id: ID!

"""The user-displayable name of the Organization Group"""
name: String

"""
The US phone number of the Organization Group (10 digits, no punctuation)
"""
phone: PhoneNumber
}

"""
A union representing the possible return types when updating an Organization Group
"""
union UpdateOrganizationGroupResponse = BadRequestError | InternalServerError | UpdateOrganizationGroupResult

"""The successful result of updating an Organization Group"""
type UpdateOrganizationGroupResult {
"""The Organization Group that was updated"""
organizationGroup: OrganizationGroup!
}

"""An input type used when updating an Organization"""
input UpdateOrganizationInput {
"""The physical address of the Organization"""
address: PhysicalAddressInput

"""The Employer Identification Number (EIN) of the Organization"""
ein: String

"""
A partner-scoped external identifier for the Organization. Must be unique within the partner.
"""
externalId: String

"""The ID of the Organization to update"""
id: ID!

"""The user-displayable name of the Organization to update"""
name: String!
}

"""
A union representing the possible return types when updating an Organization
"""
union UpdateOrganizationResponse = BadRequestError | InternalServerError | UpdateOrganizationResult

"""The successful result of updating an Organization"""
type UpdateOrganizationResult {
"""The Organization that was updated"""
organization: Organization!
}

"""
A field whose value is a UTC Offset: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
"""
scalar UtcOffset

"""A Verification"""
type Verification {
"""The ID of the Verification"""
id: ID!

"""The status of the Verification."""
status: VerificationStatus!

"""
If present, these verification codes indicate specific facts about the verification and can be used to understand
how it entered its current state.
"""
verificationCodes: [String!]!
}

"""Filter criteria used when querying for a Verification"""
input VerificationFilterInput {
"""The ID of the Verification"""
id: ID!
}

"""
A union representing the possible return types when querying for a Verification
"""
union VerificationResponse = BadRequestError | InternalServerError | Verification

"""A status that summarizes the state of a verification for an entity."""
enum VerificationStatus {
"""
The entity was verified, and aspects of automated verification require review.
"""
NEEDS_REVIEW

"""
The entity was verified, and based on the results, was "rejected' by the system.
Any system component requiring a valid verification will not accept a verification
in this status.
"""
REJECTED

"""The entity has not yet been verified."""
UNVERIFIED

"""
The entity was successfully verified, either via automation or manual review.
"""
VERIFIED
}

"""A request to Verify an Individual"""
input VerifyIndividualInput {
"""A unique idempotency key for this request."""
idempotencyKey: String!

"""The ID of the Individual to Verify."""
individualId: ID!
}

"""
A union representing the possible return types when verifying an Individual
"""
union VerifyIndividualResponse = BadRequestError | InternalServerError | VerifyIndividualResult

"""The successful result of Verifying an Individual."""
type VerifyIndividualResult {
"""The Individual under verification."""
individual: Individual!

"""The verification created for the Individual."""
verification: Verification!
}

"""Represents NULL values"""
scalar Void

"""A year date string in YYYY format"""
scalar YearString