API Reference

Contacts

Read, create, and update device contacts.

Type Definitions

bash
type Contact {
  id: ID!
  prefix: String!
  firstName: String!
  middleName: String!
  lastName: String!
  suffix: String!
  nickname: String!
  photoId: String!          # use GET /fs?id=<photoId>
  phoneNumbers: [ContactPhoneNumber!]!
  emails: [ContentItem!]!
  addresses: [ContentItem!]!
  events: [ContentItem!]!   # birthdays, anniversaries
  source: String!           # account type e.g. "com.google"
  starred: Boolean!
  contactId: ID!
  thumbnailId: String!
  notes: String!
  groups: [ContactGroup!]!
  organization: Organization
  websites: [ContentItem!]!
  ims: [ContentItem!]!
  ringtone: String!
  updatedAt: String!
}

type ContactPhoneNumber {
  value: String!
  type: Int!     # 1=home 2=mobile 3=work
  label: String!
  normalizedNumber: String!
}

type ContentItem {
  value: String!
  type: Int!
  label: String!
}

type Organization {
  company: String!
  title: String!
}

type ContactGroup {
  id: ID!
  name: String!
  contactCount: Int!
}

type ContactSource {
  name: String!
  accountType: String!
}

input ContactInput {
  firstName: String
  lastName: String
  phoneNumbers: [ContactPhoneNumberInput]
  emails: [ContentItemInput]
  organization: OrganizationInput
}

Operations

query

contacts

Search contacts. Leave query empty to list all.

bash
query GetContacts($offset: Int!, $limit: Int!, $query: String!) {
  contacts(offset: $offset, limit: $limit, query: $query) {
    id firstName lastName phoneNumbers { value type }
    emails { value } source starred updatedAt
  }
}
query

contactCount

Count contacts matching a query.

bash
query GetContactCount($query: String!) {
  contactCount(query: $query)
}
query

contactSources

List available contact account sources.

bash
query GetContactSources {
  contactSources { name accountType }
}
query

contactGroups

List all contact groups.

bash
query GetContactGroups {
  contactGroups { id name contactCount }
}
mutation

createContact

Create a new contact.

bash
mutation CreateContact($input: ContactInput!) {
  createContact(input: $input) { id firstName lastName phoneNumbers { value } }
}
mutation

updateContact

Update an existing contact. Only supplied fields are modified.

bash
mutation UpdateContact($id: ID!, $input: ContactInput!) {
  updateContact(id: $id, input: $input) { id firstName lastName updatedAt }
}
mutation

deleteContacts

Delete all contacts matching a query.

bash
mutation DeleteContacts($query: String!) {
  deleteContacts(query: $query)
}
mutation

createContactGroup

Create a contact group in a specific account.

bash
mutation CreateContactGroup($name: String!, $accountName: String!, $accountType: String!) {
  createContactGroup(name: $name, accountName: $accountName, accountType: $accountType) {
    id name contactCount
  }
}
mutation

updateContactGroup

Rename a contact group.

bash
mutation UpdateContactGroup($id: ID!, $name: String!) {
  updateContactGroup(id: $id, name: $name) { id name }
}
mutation

deleteContactGroup

Delete a contact group. Contacts in the group are not deleted, only ungrouped.

bash
mutation DeleteContactGroup($id: ID!) {
  deleteContactGroup(id: $id)
}