passlane 2.0.0

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!
  users: [User]!
  # // TODO; make this return a cursor for pagination (check Relay pagination)
  credentials(grep: String): [Credentials]
}

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

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 AddCredentialsGroupIn {
  vaultId: Int
  credentials: [CredentialsIn!]!
}

input DeleteCredentialsIn {
  grep: String!
  index: Int
}

type Mutation {
  addCredentials(input: AddCredentialsIn!): Credentials!
  addCredentialsGroup(input: AddCredentialsGroupIn!): Int!
  addUser(user: UserIn!): User!
  deleteCredentials(input: DeleteCredentialsIn!): Int!
  migrate(oldKey: String!, newKey: String!): Int!
}

type Query {
  me: User!
}