Unions
Actor
An object that can act on other objects.
union Actor = Agent | Contact | Rule | UserIntegration
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
}
}
}
- 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
}
}
}
Author
An object that can author things, for example messages or events.
union Author = Agent | Contact
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
}
}
}
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
ChannelErrorTypeUnion
No description
union ChannelErrorTypeUnion = EmailEngineError
ConditionSourceUnion
No description
union ConditionSourceUnion = CustomField
CustomFieldSubjectType
An object that can have custom fields applied to it.
union CustomFieldSubjectType = Company | Contact | EmailConversation | FacebookConversation | TwitterConversation | WidgetConversation
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
}
}
}
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
}
}
}
})
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
}
}
}
})
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
}
}
}
})
DraftTypeUnion
No description
union DraftTypeUnion = NoteDraft | ReplyDraft
IncomingServerTypeUnion
No description
union IncomingServerTypeUnion = ImapServer
IntegrationUnion
No description
union IntegrationUnion = AccountIntegration | ChannelIntegration | JiraServerIntegration | RechargeIntegration | SalesforceIntegration | ShopifyIntegration | ShopifyV2Integration | UserIntegration
OutgoingServerTypeUnion
No description
union OutgoingServerTypeUnion = SmtpServer
Recipient
An object that can receive email replies.
union Recipient = Agent | Contact
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
}
}
}
RuleConditionSourceUnion
No description
union RuleConditionSourceUnion = CustomField
ValueTypeUnion
All possible custom field value types.
union ValueTypeUnion = Address | File | IpAddress | Link | Money | Session | Text | UserAgent