21 January 2019
GraphQLPayments
You can now access payments and related information using the GraphQL schema.
- [GraphQL API] Added the following types to the GraphQL schema: 
Payment,PaymentMethodInfo,PaymentQueryResult,PaymentStatus,Transaction,TransactionState,TransactionType. - [GraphQL API] Changed the 
Querytype:- Added the 
paymentsfield to theQuerytype. - Added the 
paymentfield to theQuerytype. 
 - Added the 
 - [GraphQL API] Changed the 
PaymentInfotype:- Added the 
paymentsfield to thePaymentInfotype. 
 - Added the 
 
Introduced the following changes to the GraphQL schema (in SDL format):
extend type Query {
  payment(
    "Queries with specified ID"
    id: String,
    "Queries with specified key"
    key: String): Payment
  payments(where: String, sort: [String!], limit: Int, offset: Int): PaymentQueryResult!
}
extend type PaymentInfo {
  payments: [Payment!]!
}
"""
Payments hold information about the current state of receiving and/or refunding money.
[documentation](/http-api-projects-payments)
"""
type Payment implements Versioned {
  key: String
  customerRef: Reference
  customer: Customer
  anonymousId: String
  interfaceId: String
  amountPlanned: Money!
  paymentMethodInfo: PaymentMethodInfo!
  paymentStatus: PaymentStatus!
  transactions: [Transaction!]!
  interfaceInteractionsRaw(
    """
    The names of the custom fields to include.
    If neither `includeNames` nor `excludeNames` are provided, then all custom fields are returned.
    """
    includeNames: [String!],
    """
    The names of the custom fields to exclude.
    If neither `includeNames` nor `excludeNames` are provided, then all custom fields are returned.
    """
    excludeNames: [String!]): [[RawCustomField!]!]!
  "This field contains non-typed data. Consider using `customFields` as a typed alternative."
  customFieldsRaw(
    """
    The names of the custom fields to include.
    If neither `includeNames` nor `excludeNames` are provided, then all custom fields are returned.
    """
    includeNames: [String!],
    """
    The names of the custom fields to exclude.
    If neither `includeNames` nor `excludeNames` are provided, then all custom fields are returned.
    """
    excludeNames: [String!]): [RawCustomField!]
  "This field would contain type data"
  customFields: Type
  id: String!
  version: Long!
  createdAt: DateTime!
  lastModifiedAt: DateTime!
  createdBy: Initiator
  lastModifiedBy: Initiator
}
type PaymentMethodInfo {
  paymentInterface: String
  method: String
  name(
    "String is defined for different locales. This argument specifies the desired locale."
    locale: Locale,
    "List of languages the client is able to understand, and which locale variant is preferred."
    acceptLanguage: [Locale!]): String
  nameAllLocales: [LocalizedString!]
}
type PaymentQueryResult {
  offset: Int!
  count: Int!
  total: Long!
  results: [Payment!]!
}
type PaymentStatus {
  interfaceCode: String
  interfaceText: String
  stateRef: Reference
  state: State
}
type Transaction {
  id: String!
  timestamp: DateTime
  type: TransactionType
  amount: Money!
  interactionId: String
  state: TransactionState!
}
enum TransactionState {
  Failure
  Success
  Pending
  Initial
}
enum TransactionType {
  Chargeback
  Refund
  Charge
  CancelAuthorization
  Authorization
}