passlane 2.2.2

A password manager for the command line with online storage and multi-device access
scalar Date

type User {
  id: Int!
  authUserId: String!
  firstName: String
  lastName: String
  email: String!
  vaults: [Vault!]!
  created: Date!
  modified: Date
}

type Vault {
  id: Int!
  personal: Boolean!
  name: String!
  credentials(grep: String): [Credentials]
  paymentCards: [PaymentCard]
  notes: [Note]
}

type Credentials {
  id: Int!
  service: String!
  username: String!
  iv: String
  password: String!
  created: Date!
  modified: Date
}

type Expiry {
  month: Int!
  year: Int!
}

input ExpiryIn {
  month: Int!
  year: Int!
}

type PaymentCard {
  id: Int!
  iv: String!
  name: String!
  nameOnCard: String!
  number: String!
  cvv: String!
  expiry: Expiry!
  color: String
  billingAddress: Address
  created: Date!
  modified: Date
}

type Address {
  id: Int!
  street: String!
  city: String!
  country: String!
  state: String
  zip: String!
}

input AddressIn {
  street: String!
  city: String!
  country: String!
  state: String
  zip: String!
}

input PaymentCardIn {
  iv: String!
  name: String!
  nameOnCard: String!
  number: String!
  cvv: String!
  expiry: ExpiryIn!
  color: String
  billingAddress: AddressIn
}

input CredentialsIn {
  service: String!
  username: String!
  iv: String!
  passwordEncrypted: String!
}

input UserIn {
  authUserId: String!
  firstName: String
  lastName: String
  email: String!
}

input AddCredentialsIn {
  vaultId: Int
  credentials: CredentialsIn!
}

input AddPaymentCardIn {
  vaultId: Int
  payment: PaymentCardIn!
}

input AddCredentialsGroupIn {
  vaultId: Int
  credentials: [CredentialsIn!]!
}

input DeleteCredentialsIn {
  grep: String!
  index: Int
}

type Note {
  id: Int!
  iv: String!
  vaultId: Int!
  title: String!
  content: String!
  created: Date!
  modified: Date
}

input NoteIn {
  iv: String!
  vaultId: Int
  content: String!
  title: String!
}

type Mutation {
  addCredentials(input: AddCredentialsIn!): Credentials!
  addCredentialsGroup(input: AddCredentialsGroupIn!): Int!
  addUser(user: UserIn!): User!
  deleteCredentials(input: DeleteCredentialsIn!): Int!
  migrate(oldKey: String!, newKey: String!): Int!
  addPaymentCard(input: AddPaymentCardIn!): PaymentCard!
  deletePaymentCard(id: Int!): Int!
  addNote(input: NoteIn!): Note!
  deleteNote(id: Int!): Int!
}

type Query {
  me: User!
}