Unions

Actor#

An object that can act on other objects.

union Actor = Agent | Contact | Rule | UserIntegration

Agent

An agent is a user on Groove that is part of an organization.

To find all active agents, along with the teams they belong to, ordered by name:

query Agents {
agents {
edges {
node {
account {
id
subdomain
}
avatarUrl
createdAt
email
id
name
role
state
subdomain
preferences {
edges {
node {
key
value
}
}
}
teams {
edges {
node {
id
name
}
}
pageInfo {
hasNextPage
}
}
oauthCredentials {
edges {
node {
uid
provider
accessToken
refreshToken
expiresAt
createdAt
updatedAt
}
}
}
username
updatedAt
twoFactorAuthCode {
uri
code
}
}
}
}
}

To query for invited agents:

query Agents {
agents(filter: { state: INVITED }) {
edges {
node {
id
name
}
}
}
}

To reverse order the search:

query Agents {
agents(orderBy: { field: NAME, direction: DESC }) {
edges {
node {
id
name
}
}
}
}

To fetch agents ordered by the most times you assigned them to a conversation:

query Agents {
agents(orderBy: { field: ASSIGNMENT_COUNT, direction: DESC }) {
nodes {
id
name
}
}
}

To fetch a single agent:

query Node {
node(id: $agentId) {
... on Agent {
id
name
}
}
}
  1. A set of actions that will be performed on matching conversations.

To fetch all rules and their conditions:

query Rules {
rules {
nodes {
createdAt
creator {
id
}
description
id
name
position
state
updatedAt
}
}
}

By default rules are sorted by their user-defined row order. To sort by name instead:

query Rules {
rules(orderBy: { field: NAME, direction: ASC }) {
nodes {
id
}
}
}

Possible types#

NameDescription
Agent An agent is a user on Groove that is part of an organization. To find all active agents, along with the teams they belong to, ordered by name.
Contact A contact contains the personal information associated with someone you have interacted with using Groove. They are identified by some unique contact detail such as an email address, a Twitter handle, or a phone number. This depends on how the contact was created. A contact is often a customer who initated a conversation. It could also be someone who was copied in on a conversation.
Rule Rules help you automate certain parts of your workflow. Each rule contains: 1. A set of conditions that match on incoming conversations, and; 2. A set of actions that will be performed on matching conversations. To fetch all rules and their conditions.

Author#

An object that can author things, for example messages or events.

union Author = Agent | Contact

Agent

An agent is a user on Groove that is part of an organization.

To find all active agents, along with the teams they belong to, ordered by name:

query Agents {
agents {
edges {
node {
account {
id
subdomain
}
avatarUrl
createdAt
email
id
name
role
state
subdomain
preferences {
edges {
node {
key
value
}
}
}
teams {
edges {
node {
id
name
}
}
pageInfo {
hasNextPage
}
}
oauthCredentials {
edges {
node {
uid
provider
accessToken
refreshToken
expiresAt
createdAt
updatedAt
}
}
}
username
updatedAt
twoFactorAuthCode {
uri
code
}
}
}
}
}

To query for invited agents:

query Agents {
agents(filter: { state: INVITED }) {
edges {
node {
id
name
}
}
}
}

To reverse order the search:

query Agents {
agents(orderBy: { field: NAME, direction: DESC }) {
edges {
node {
id
name
}
}
}
}

To fetch agents ordered by the most times you assigned them to a conversation:

query Agents {
agents(orderBy: { field: ASSIGNMENT_COUNT, direction: DESC }) {
nodes {
id
name
}
}
}

To fetch a single agent:

query Node {
node(id: $agentId) {
... on Agent {
id
name
}
}
}

Possible types#

NameDescription
Agent An agent is a user on Groove that is part of an organization. To find all active agents, along with the teams they belong to, ordered by name.
Contact A contact contains the personal information associated with someone you have interacted with using Groove. They are identified by some unique contact detail such as an email address, a Twitter handle, or a phone number. This depends on how the contact was created. A contact is often a customer who initated a conversation. It could also be someone who was copied in on a conversation.

ChangeTypeUnion#

An object that can initiate a change.

union ChangeTypeUnion =
AgentChanged
| ChannelChanged
| CommentDeleted
| CommentEdited
| CommentReacted
| ContactChange
| ContactOpenedMessage
| ConversationDeleted
| ConversationMerged
| ConversationRestored
| ConversationStarred
| ConversationUnstarred
| EmailMessage
| FacebookMessage
| FollowerAdded
| FollowerRemoved
| ForwardedMessage
| IntegrationAdded
| IntegrationExternalChange
| IntegrationRemoved
| MessageMoved
| Note
| Rating
| Reply
| ShopifyExternalChange
| Snoozed
| StateChanged
| SubjectChanged
| Tagged
| TeamChanged
| TwitterMessage
| Unsnoozed
| Untagged
| WidgetMessage

Possible types#

NameDescription
AgentChanged A conversation was reassigned to another agent.
ChannelChanged A conversation was moved to another channel.
CommentDeleted A comment was deleted.
CommentEdited A comment was edited.
CommentReacted A reaction was left on a comment.
ContactChange A conversation was reassigned to another contact.
ContactOpenedMessage A contact opened a message.
ConversationDeleted A conversation was moved to trash.
ConversationMerged A conversation was merged into another conversation.
ConversationRestored A conversation was restored from trash.
ConversationStarred The conversation was starred.
ConversationUnstarred The conversation was unstarred.
EmailMessage A message created in Groove as a result of an incoming email. Both contacts and agents can author these type of messages. For example, if an agent replies directly to a contact.
FacebookMessage A message sent to or received from Facebook.
FollowerAdded A conversation is followed by an agent.
FollowerRemoved A conversation is unfollowed by an agent.
ForwardedMessage A message forwarded by an agent from Groove to a third party.
IntegrationAdded An integration was added to a conversation.
IntegrationExternalChange A change to a conversation was triggered by a linked integration.
IntegrationRemoved An integration was removed from a conversation.
MessageMoved A message was moved from one conversation to start another.
Note A message created by an agent in Groove, visible only to other agents.
Rating A rating is feedback on a conversation message from a contact for an agent.
Reply An email message from an agent to a contact.
ShopifyExternalChange A change that happened on Shopify.
Snoozed A conversation was snoozed.
StateChanged The state of the conversation changed.
SubjectChanged A conversation subject was updated.
Tagged A tag was added to a conversation.
TeamChanged A conversation was reassigned to another team.
TwitterMessage A message sent to or received from Twitter.
Unsnoozed A conversation was unsnoozed.
Untagged A tag was removed from a conversation.
WidgetMessage A message received from a contact using the Widget.

ChannelErrorTypeUnion#

No description

union ChannelErrorTypeUnion = EmailEngineError

Possible types#

NameDescription
EmailEngineError Email engine error that occured when interacting with underlying mailbox.

ConditionSourceUnion#

No description

union ConditionSourceUnion = CustomField

Possible types#

NameDescription
CustomField Custom fields provide agents with the ability to define extra data on a contact or company, along with the means of specifying how that information is entered and displayed.

CustomFieldSubjectType#

An object that can have custom fields applied to it.

union CustomFieldSubjectType =
Company
| Contact
| EmailConversation
| FacebookConversation
| TwitterConversation
| WidgetConversation

EmailConversation

A Groove conversation initiated in an email channel.

To fetch a specific conversation by ID:

query Conversation {
node(id: "cnv_12345678") {
... on Conversation {
assigned {
at
agent {
id
name
}
team {
id
name
}
}
counts {
attachments
interactions
messages
notes
stateChanges
}
createdAt
deletedAt
drafts {
nodes {
id
}
}
followers {
nodes {
id
email
}
}
id
number
snoozed {
by { id }
until
}
starred
state
stateUpdatedAt
subject
systemUpdatedAt
tags {
nodes {
id
name
}
}
updatedAt
}
}
})

To fetch all conversations in a specific channel or folder:

query Conversations {
conversations(filter: { channel: "ch_4567890", folder: "fol_8901234" }) {
nodes {
... on Conversation {
id
number
}
}
pageInfo {
hasNextPage
}
}
}

To find conversations in "all channels" that apply to a specific folder, omit the channel.

query Conversations {
conversations(filter: { folder: "fol_8901234" }) {
nodes {
... on Conversation {
id
number
}
}
pageInfo {
hasNextPage
}
}
}

By default, conversations are returned with the newest conversations first. To sort showing oldest first:

query Conversations {
conversations(orderBy: { field: UPDATED_AT, direction: ASC }) {
nodes {
... on Conversation {
id
number
}
}
pageInfo {
hasNextPage
}
}
}

FacebookConversation

A Groove conversation initiated from Facebook.

To fetch a specific Facebook conversation by ID:

query Conversation {
node(id: "cnv_12345678") {
... on FacebookConversation {
facebookId
}
}
})

To fetch all possible fields:

query Conversation {
node(id: "cnv_12345678") {
__typename
... on Conversation {
assigned {
at
agent {
id
name
}
team {
id
name
}
}
counts {
attachments
interactions
messages
notes
stateChanges
}
createdAt
contact {
id
email
}
deletedAt
drafts {
nodes {
id
}
}
followers {
nodes {
id
email
}
}
id
number
snoozed {
by { id }
until
}
starred
state
stateUpdatedAt
summaryMessage {
id
bodyPlainText
}
subject
systemUpdatedAt
tags {
nodes {
id
name
}
}
updatedAt
... on FacebookConversation {
facebookId
}
... on TwitterConversation {
twitterId
}
... on WidgetConversation {
browser
referrer
pageTitle
pageUrl
platform
referrer
}
}
}
})

TwitterConversation

A Groove conversation initiated from Twitter.

To fetch a specific Twitter conversation by ID:

query Conversation {
node(id: "cnv_12345678") {
... on TwitterConversation {
twitterId
}
}
})

To fetch all possible fields:

query Conversation {
node(id: "cnv_12345678") {
__typename
... on Conversation {
assigned {
at
agent {
id
name
}
team {
id
name
}
}
counts {
attachments
interactions
messages
notes
stateChanges
}
createdAt
contact {
id
email
}
deletedAt
drafts {
nodes {
id
}
}
followers {
nodes {
id
email
}
}
id
number
snoozed {
by { id }
until
}
starred
state
stateUpdatedAt
summaryMessage {
id
bodyPlainText
}
subject
systemUpdatedAt
tags {
nodes {
id
name
}
}
updatedAt
... on FacebookConversation {
facebookId
}
... on TwitterConversation {
twitterId
}
... on WidgetConversation {
browser
referrer
pageTitle
pageUrl
platform
referrer
}
}
}
})

WidgetConversation

A Groove conversation initiated from a Groove Widget.

To fetch a specific Widget conversation by ID:

query Conversation {
node(id: "cnv_12345678") {
... on WidgetConversation {
browser
referrer
pageTitle
pageUrl
platform
referrer
}
}
})

To fetch all possible fields:

query Conversation {
node(id: "cnv_12345678") {
__typename
... on Conversation {
assigned {
at
agent {
id
name
}
team {
id
name
}
}
counts {
attachments
interactions
messages
notes
stateChanges
}
createdAt
contact {
id
email
}
deletedAt
drafts {
nodes {
id
}
}
followers {
nodes {
id
email
}
}
id
number
snoozed {
by { id }
until
}
starred
state
stateUpdatedAt
summaryMessage {
id
bodyPlainText
}
subject
systemUpdatedAt
tags {
nodes {
id
name
}
}
updatedAt
... on FacebookConversation {
facebookId
}
... on TwitterConversation {
twitterId
}
... on WidgetConversation {
browser
referrer
pageTitle
pageUrl
platform
referrer
}
}
}
})

Possible types#

NameDescription
Company A company represents an organization containing one or more contacts.
Contact A contact contains the personal information associated with someone you have interacted with using Groove. They are identified by some unique contact detail such as an email address, a Twitter handle, or a phone number. This depends on how the contact was created. A contact is often a customer who initated a conversation. It could also be someone who was copied in on a conversation.
EmailConversation A Groove conversation initiated in an email channel. To fetch a specific conversation by ID.
FacebookConversation A Groove conversation initiated from Facebook. To fetch a specific Facebook conversation by ID.
TwitterConversation A Groove conversation initiated from Twitter. To fetch a specific Twitter conversation by ID.
WidgetConversation A Groove conversation initiated from a Groove Widget. To fetch a specific Widget conversation by ID.

DraftTypeUnion#

No description

union DraftTypeUnion = NoteDraft | ReplyDraft

IncomingServerTypeUnion#

No description

union IncomingServerTypeUnion = ImapServer

Possible types#

NameDescription
ImapServer A server for retrieving emails using the IMAP protocol.

IntegrationUnion#

No description

union IntegrationUnion =
AccountIntegration
| ChannelIntegration
| JiraServerIntegration
| RechargeIntegration
| SalesforceIntegration
| ShopifyIntegration
| ShopifyV2Integration
| UserIntegration

OutgoingServerTypeUnion#

No description

union OutgoingServerTypeUnion = SmtpServer

Possible types#

NameDescription
SmtpServer A server for sending emails using the SMTP protocol.

Recipient#

An object that can receive email replies.

union Recipient = Agent | Contact

Agent

An agent is a user on Groove that is part of an organization.

To find all active agents, along with the teams they belong to, ordered by name:

query Agents {
agents {
edges {
node {
account {
id
subdomain
}
avatarUrl
createdAt
email
id
name
role
state
subdomain
preferences {
edges {
node {
key
value
}
}
}
teams {
edges {
node {
id
name
}
}
pageInfo {
hasNextPage
}
}
oauthCredentials {
edges {
node {
uid
provider
accessToken
refreshToken
expiresAt
createdAt
updatedAt
}
}
}
username
updatedAt
twoFactorAuthCode {
uri
code
}
}
}
}
}

To query for invited agents:

query Agents {
agents(filter: { state: INVITED }) {
edges {
node {
id
name
}
}
}
}

To reverse order the search:

query Agents {
agents(orderBy: { field: NAME, direction: DESC }) {
edges {
node {
id
name
}
}
}
}

To fetch agents ordered by the most times you assigned them to a conversation:

query Agents {
agents(orderBy: { field: ASSIGNMENT_COUNT, direction: DESC }) {
nodes {
id
name
}
}
}

To fetch a single agent:

query Node {
node(id: $agentId) {
... on Agent {
id
name
}
}
}

Possible types#

NameDescription
Agent An agent is a user on Groove that is part of an organization. To find all active agents, along with the teams they belong to, ordered by name.
Contact A contact contains the personal information associated with someone you have interacted with using Groove. They are identified by some unique contact detail such as an email address, a Twitter handle, or a phone number. This depends on how the contact was created. A contact is often a customer who initated a conversation. It could also be someone who was copied in on a conversation.

RuleConditionSourceUnion#

No description

union RuleConditionSourceUnion = CustomField

Possible types#

NameDescription
CustomField Custom fields provide agents with the ability to define extra data on a contact or company, along with the means of specifying how that information is entered and displayed.

ValueTypeUnion#

All possible custom field value types.

union ValueTypeUnion =
Address
| File
| IpAddress
| Link
| Money
| Session
| Text
| UserAgent

Possible types#

NameDescription
Address A full address.
File A file attached to a contact or company.
IpAddress An IP address.
Link A text link.
Money A amount with the linked defined currency.
Session A contact visit session as recorded by the Widget.
Text A text string. It can represent either a single line, multiple lines, or an email.
UserAgent A characteristic string used to identify visitors.