Objects

Account#

No description

type Account {
activatedAt: DateTime
expiresAt: DateTime
id: ID!
state: AccountState!
subdomain: String!
}

Fields#

NameDescription
activatedAt (DateTime) The date and time when the account was activated.
expiresAt (DateTime) The date and time when the account expires.
id (ID!) The current account state.
subdomain (String!) The account subdomain.

AccountIntegration#

No description

type AccountIntegration implements Integration {
createdAt: DateTime!
id: ID!
legacyId: String!
provider: IntegrationProvider!
settings: IntegrationSettings!
uid: String
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

Address#

A full address.

type Address {
city: String
country: String
postalCode: String
state: String
street: String
street2: String
}

Fields#

NameDescription
city (String) The name of the city, district, village, or town.
country (String) The name of the country.
postalCode (String) The ZIP Code or postal code.
state (String) The region of the address.
street (String) The first line of the address.
street2 (String) The second line of the address.

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
}
}
}
type Agent implements Node, Timestamped {
account: Account!
assignmentCount: Int!
avatarUrl: Url!
conversationCount: Int!
createdAt: DateTime!
defaultNotificationPreferences: [AgentNotificationPreference!]!
email: String!
firstName: String
id: ID!
lastName: String
name: String!
notificationPreferences(
after: String
before: String
first: Int = 0
last: Int = 0
): AgentNotificationPreferenceConnection
oauthCredentials(
after: String
before: String
first: Int = 0
last: Int = 0
): OauthCredentialsConnection
preferences(
after: String
before: String
first: Int = 0
last: Int = 0
): AgentPreferenceConnection!
role: AgentRole!
state: AgentState!
status2fa: AgentTwoFactorAuthStatus!
subdomain: String!
teams(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TeamFilter = "[object Object]"
orderBy: TeamOrder = "[object Object]"
): TeamConnection
twoFactorAuthCode: TwoFactorAuthCode
updatedAt: DateTime!
username: String
}

Fields#

NameDescription
account (Account!) The account the agent belongs to.
assignmentCount (Int!) The total number of conversations that the agent is assigned to.
avatarUrl (Url!) A URL pointing to the agent's avatar.
conversationCount (Int!) The number of conversations that the agent is assigned.
createdAt (DateTime!) The date and time that the object was created.
defaultNotificationPreferences ([AgentNotificationPreference!]!) Default agent notification preferences.
email (String!) The agent's email address.
firstName (String) The agent's first name.
id (ID!) The agent's last name.
name (String!) The agent's full name.
notificationPreferences (AgentNotificationPreferenceConnection) List of agent notification preferences.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
oauthCredentials (OauthCredentialsConnection) Lists all oauth credentials linked to agent.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
preferences (AgentPreferenceConnection!) Lists all agent preferences.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
role (AgentRole!) The role of the agent.
state (AgentState!) The state of the agent.
status2fa (AgentTwoFactorAuthStatus!) The agent's 2FA status.
subdomain (String!) Lists all teams in the organization.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TeamFilter)
The fields by which to filter the results.
orderBy (TeamOrder)
The field and direction by which to order the results.
twoFactorAuthCode (TwoFactorAuthCode) Two factor auth code data.
updatedAt (DateTime!) The date and time that the object was last updated.
username (String) The agent's username.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

AgentChanged#

A conversation was reassigned to another agent.

type AgentChanged implements Timestamped {
createdAt: DateTime!
from: Agent
id: ID!
to: Agent
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
from (Agent) The agent that the conversation was previously assigned to.
id (ID!) The agent that the conversation is newly assigned to.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

AgentConnection#

The connection type for Agent.

type AgentConnection {
edges: [AgentEdge]
nodes: [Agent]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([AgentEdge]) A list of edges.
nodes ([Agent]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

AgentEdge#

An edge in a connection.

type AgentEdge {
cursor: String!
node: Agent
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Agent) The item at the end of the edge.

AgentNotificationPreference#

No description

type AgentNotificationPreference implements Node, Timestamped {
agent: Agent!
createdAt: DateTime!
event: String
id: ID!
key: String!
namespace: AgentNotificationPreferenceNotificationNamespaceType!
scopeId: ID
scopeType: String
updatedAt: DateTime!
value: [AgentNotificationPreferenceNotificationType!]!
}

Fields#

NameDescription
agent (Agent!) The agent associated with the preference value.
createdAt (DateTime!) The date and time that the object was created.
event (String) The event type, same as key if preference is not scoped.
id (ID!) The preference key.
namespace (AgentNotificationPreferenceNotificationNamespaceType!) The preference namespace.
scopeId (ID) ID of the relation to which preference pertains to.
scopeType (String) Type of the relation to which preference pertains to.
updatedAt (DateTime!) The date and time that the object was last updated.
value ([AgentNotificationPreferenceNotificationType!]!) The value associated with the preference.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

AgentNotificationPreferenceBulkDeletePayload#

Autogenerated return type of AgentNotificationPreferenceBulkDelete

type AgentNotificationPreferenceBulkDeletePayload {
clientMutationId: String
errors: [UserError!]!
ids: [ID!]
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
ids ([ID!]) The IDs of the notification preferences that were deleted.

AgentNotificationPreferenceBulkUpsertPayload#

Autogenerated return type of AgentNotificationPreferenceBulkUpsert

type AgentNotificationPreferenceBulkUpsertPayload {
clientMutationId: String
errors: [UserError!]!
notificationPreferences: [AgentNotificationPreference!]
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
notificationPreferences ([AgentNotificationPreference!]) Upserted preferences.

AgentNotificationPreferenceConnection#

The connection type for AgentNotificationPreference.

type AgentNotificationPreferenceConnection {
edges: [AgentNotificationPreferenceEdge]
nodes: [AgentNotificationPreference]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([AgentNotificationPreferenceEdge]) A list of edges.
nodes ([AgentNotificationPreference]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

AgentNotificationPreferenceEdge#

An edge in a connection.

type AgentNotificationPreferenceEdge {
cursor: String!
node: AgentNotificationPreference
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (AgentNotificationPreference) The item at the end of the edge.

AgentPreference#

No description

type AgentPreference {
agent: Agent!
key: String!
namespace: String
value: Untyped!
}

Fields#

NameDescription
agent (Agent!) The agent associated with the preference value.
key (String!) The preference key.
namespace (String) The preference namespace.
value (Untyped!) The value associated with the preference.

AgentPreferenceConnection#

The connection type for AgentPreference.

type AgentPreferenceConnection {
edges: [AgentPreferenceEdge]
nodes: [AgentPreference]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([AgentPreferenceEdge]) A list of edges.
nodes ([AgentPreference]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

AgentPreferenceDeletePayload#

Autogenerated return type of AgentPreferenceDelete

type AgentPreferenceDeletePayload {
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

AgentPreferenceEdge#

An edge in a connection.

type AgentPreferenceEdge {
cursor: String!
node: AgentPreference
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (AgentPreference) The item at the end of the edge.

AgentPreferenceUpsertPayload#

Autogenerated return type of AgentPreferenceUpsert

type AgentPreferenceUpsertPayload {
agentPreference: AgentPreference
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
agentPreference (AgentPreference) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

AgentResetLoginAttemptsPayload#

Autogenerated return type of AgentResetLoginAttempts

type AgentResetLoginAttemptsPayload {
agent: Agent
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
agent (Agent) The agent that has just reset login attempts for.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

AgentResetPasswordPayload#

Autogenerated return type of AgentResetPassword

type AgentResetPasswordPayload {
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

AiSuggestion#

No description

type AiSuggestion {
conversationId: String!
id: ID!
type: String!
value: JSON
}

Fields#

NameDescription
conversationId (String!) The id of a ticket that suggestion belongs to.
id (ID!) The type of the suggestion.
value (JSON) The value of suggestion.

AiSuggestionConnection#

The connection type for AiSuggestion.

type AiSuggestionConnection {
edges: [AiSuggestionEdge]
nodes: [AiSuggestion]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([AiSuggestionEdge]) A list of edges.
nodes ([AiSuggestion]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

AiSuggestionEdge#

An edge in a connection.

type AiSuggestionEdge {
cursor: String!
node: AiSuggestion
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (AiSuggestion) The item at the end of the edge.

Article#

An article from a Knowledge Base. Each article can be assigned to one category.

To fetch multiple Knowledge Bases with related articles:

query KbArticles {
articles {
totalCount
totalPageCount
edges {
node {
attachments {
nodes {
id
}
}
body
category {
id
}
createdAt
deletedAt
description
id
ratings {
nodes {
id
}
}
ratingsType
relatedArticles {
nodes {
id
}
}
tags
updatedAt
... on Publishable {
author {
id
email
}
description
featured
meta {
description
robots
}
openGraph {
description
imageUrl
title
}
pageTitle
position
publishedAt
slug
state
title
updater {
id
email
}
}
}
}
}
}

To fetch only the latest 5 articles:

query KbArticles {
articles(
first: 5
filter: { knowledgeBase: "Support" }
orderBy: { field: UPDATED_AT, direction: DESC }
) {
totalCount
totalPageCount
edges {
node {
id
title
}
}
}
}

To search for articles:

query KbArticles {
articles(filter: { knowledgeBase: "Support", keywords: "rad" }) {
totalCount
totalPageCount
edges {
node {
id
title
}
}
}
}
type Article implements Node, Timestamped, Publishable {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): ArticleAttachmentConnection
author: Agent
body: String
category: KbCategory
createdAt: DateTime!
deletedAt: DateTime
description: String
featured: Boolean!
id: ID!
knowledgeBase: KnowledgeBase!
meta: Meta
openGraph: OpenGraph
pageTitle: String
position: Int!
publishedAt: DateTime
ratings(
after: String
before: String
first: Int = 0
last: Int = 0
): ArticleRatingConnection
ratingsType: ArticleRatingTypes
relatedArticles(
after: String
before: String
first: Int = 0
last: Int = 0
): ArticleConnection
slug: String
state: PublishState!
tags: [String!]
title: String
updatedAt: DateTime!
updater: Agent
url: String
}

Publishable

An object that can be published, for example Knowledge Base categories or articles.

For example:

... on Publishable {
author {
id
email
}
description
featured
meta {
description
robots
}
openGraph {
description
imageUrl
title
}
pageTitle
position
publishedAt
slug
state
title
updater {
id
email
}
}

Fields#

NameDescription
attachments (ArticleAttachmentConnection) The list of attachments on the article.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Agent) The author of the object.
body (String) The body of the article.
category (KbCategory) The category that the article is assigned to.
createdAt (DateTime!) The date and time that the object was created.
deletedAt (DateTime) The date and time that the article was deleted.
description (String) The article description.
featured (Boolean!) True if the object is set to be featured; false otherwise.
id (ID!) The Knowledge Base that the article belongs to to.
meta (Meta) The meta data of the object.
openGraph (OpenGraph) The Open Graph information of the object.
pageTitle (String) The HTML page title of the object.
position (Int!) The position that the article should appear in when listed.
publishedAt (DateTime) The date and time that the object was last published.
ratings (ArticleRatingConnection) The article ratings.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
ratingsType (ArticleRatingTypes) The type of the article ratings.
relatedArticles (ArticleConnection) The list of articles linked to this one.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
slug (String) The URL slug of the object.
state (PublishState!) The state of the object.
tags ([String!]) The list of tags on associated with the article.
title (String) The title of the object.
updatedAt (DateTime!) The date and time that the object was last updated.
updater (Agent) The agent that last updated the object.
url (String) The URL of the article.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.
Publishable An object that can be published, for example Knowledge Base categories or articles. For example.

ArticleAttachment#

A file attached to a Knowledge Base article.

type ArticleAttachment implements Node, Timestamped {
createdAt: DateTime!
fileName: String!
id: ID!
mimeType: String!
name: String
size: Int!
updatedAt: DateTime!
url: Url
uuid: String
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
fileName (String!) The name of the attachment.
id (ID!) The attachment MIME type.
name (String) The visible name of the attachment.
size (Int!) The attachment size in bytes.
updatedAt (DateTime!) The date and time that the object was last updated.
url (Url) The location of the attachment.
uuid (String) The universally unique ID.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

ArticleAttachmentConnection#

The connection type for ArticleAttachment.

type ArticleAttachmentConnection {
edges: [ArticleAttachmentEdge]
nodes: [ArticleAttachment]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ArticleAttachmentEdge]) A list of edges.
nodes ([ArticleAttachment]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ArticleAttachmentEdge#

An edge in a connection.

type ArticleAttachmentEdge {
cursor: String!
node: ArticleAttachment
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (ArticleAttachment) The item at the end of the edge.

ArticleConnection#

The connection type for Article.

type ArticleConnection {
edges: [ArticleEdge]
nodes: [Article]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([ArticleEdge]) A list of edges.
nodes ([Article]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

ArticleEdge#

An edge in a connection.

type ArticleEdge {
cursor: String!
node: Article
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Article) The item at the end of the edge.

ArticleRating#

A rating given to an article by a visitor of the Knowledge Base.

type ArticleRating implements Node, Timestamped {
count: Int!
createdAt: DateTime!
id: ID!
updatedAt: DateTime!
value: Int!
}

Fields#

NameDescription
count (Int!) The total number of ratings for the article.
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The date and time that the object was last updated.
value (Int!) The overall rating of the article.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

ArticleRatingConnection#

The connection type for ArticleRating.

type ArticleRatingConnection {
edges: [ArticleRatingEdge]
nodes: [ArticleRating]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ArticleRatingEdge]) A list of edges.
nodes ([ArticleRating]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ArticleRatingEdge#

An edge in a connection.

type ArticleRatingEdge {
cursor: String!
node: ArticleRating
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (ArticleRating) The item at the end of the edge.

Assignment#

The agents and/or teams that are assigned to the conversation.

type Assignment {
agent: Agent
at: DateTime
team: Team
}

Fields#

NameDescription
agent (Agent) The agent that the conversation is assigned to.
at (DateTime) The date and time that the conversation was last assigned.
team (Team) The team that the conversation is assigned to.

AsyncRpcPayload#

Autogenerated return type of AsyncRpc

type AsyncRpcPayload {
clientMutationId: String
errors: [UserError!]!
jobId: ID
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
jobId (ID) The ID of the enqueued job. Use this to poll for results.

Attachment#

A file attached to a message.

type Attachment implements Node, Timestamped {
contentId: String
createdAt: DateTime!
creator: Agent
deliverBy: DateTime
downloadUrl: String
fileName: String
fileSize: String
fileType: String
id: ID!
s3Key: String!
scanReport: AttachmentScanReport
type: AttachmentType
updatedAt: DateTime!
url: String
}

Fields#

NameDescription
contentId (String) The RFC2387 identifier of the attachment, if from an email.
createdAt (DateTime!) The date and time that the object was created.
creator (Agent) The user that created the attachment.
deliverBy (DateTime) The date and time that the message was sent. Used to allow for undoing send.
downloadUrl (String) The public direct download URL of the attachment.
fileName (String) The name of the attachment.
fileSize (String) The attachment size in bytes.
fileType (String) The attachment MIME type.
id (ID!) The attachment s3 key.
scanReport (AttachmentScanReport) The attachment type.
type (AttachmentType) The attachment type.
updatedAt (DateTime!) The date and time that the object was last updated.
url (String) The public URL of the attachment.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

AttachmentConnection#

The connection type for Attachment.

type AttachmentConnection {
edges: [AttachmentEdge]
nodes: [Attachment]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([AttachmentEdge]) A list of edges.
nodes ([Attachment]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

AttachmentEdge#

An edge in a connection.

type AttachmentEdge {
cursor: String!
node: Attachment
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Attachment) The item at the end of the edge.

AttachmentScanReport#

The attachment scan report

type AttachmentScanReport {
matches: [String!]!
status: AttachmentScanReportStatus!
}

BillingFeatureType#

The billing feature name value pair

type BillingFeatureType {
key: String!
name: String!
value: BillingFeatureValueType!
}

Fields#

NameDescription
key (String!) The feature key.
name (String!) The feature name.
value (BillingFeatureValueType!) The feature value.

BillingType#

No description

type BillingType {
availableFeatures: [BillingFeatureType!]!
cardSetupIntents: [CardSetupIntent!]!
creditCards: [CreditCard!]!
discount: Discount
plans(state: [PlanState!] = [TRIAL, PAID]): [Plan!]!
pricings(showAll: Boolean): [Pricing!]!
usages: [BillingUsageType!]!
}

Fetch all available features for the current account:

query FeaturesQuery {
billing {
availableFeatures {
key
name
value
}
}
}

Fetch all usage for the current account:

query FeaturesQuery {
billing {
usage {
key
value
}
}
}

Fields#

NameDescription
availableFeatures ([BillingFeatureType!]!) Fetch all available features for the current account.
cardSetupIntents ([CardSetupIntent!]!) Fetch all pending setup intents for the current account.
creditCards ([CreditCard!]!) Fetch all credit cards for the current account.
discount (Discount) Fetch current active discount for this account.
plans ([Plan!]!) Fetch all plans for the current account.
Arguments
state ([PlanState!])
Limit returned plans to particular states.
pricings ([Pricing!]!) Lists available pricing.
Arguments
showAll (Boolean)
Show all available pricing instead of just account relevant pricing.
usages ([BillingUsageType!]!) Fetch all usage for the current account.

BillingUsageType#

The billing usage name value pair

type BillingUsageType {
key: String!
value: BillingFeatureValueType!
}

Fields#

NameDescription
key (String!) The usage name.
value (BillingFeatureValueType!) The usage value.

Browser#

The web browser used by the contact.

type Browser {
family: String
version: String
}

Fields#

NameDescription
family (String) The name of the browser.
version (String) The version of the browser.

CancelDowngradePayload#

Autogenerated return type of CancelDowngrade

type CancelDowngradePayload {
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

CannedReply#

A canned reply is a prewritten answer to commonly asked customer questions.

To fetch all canned replies:

query CannedReplies {
cannedReplies {
nodes {
body
category {
id
}
createdAt
creator {
id
}
id
name
snippet
subject
updatedAt
lastUsedAt
countUsed
attachments {
id
}
}
}
}

To fetch all canned replies with a given search string:

query CannedReplies {
cannedReplies(filter: { keywords: "foo" }) {
nodes {
id
name
}
}
}

To fetch all canned replies with a given search string in a particular category:

query CannedReplies {
cannedReplies(filter: { keywords: "foo", category_ids: ["crc_123456"] }) {
nodes {
id
name
}
}
}
type CannedReply implements Node, Timestamped, Utilizationabled {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection!
automaticActions: [CannedReplyAutomaticAction!]!
body: String
category: CannedReplyCategory
countUsed: Int!
createdAt: DateTime!
creator: Agent
id: ID!
interpolatedBody(
contactId: ID!
conversationId: ID = 0
messageId: ID = 0
channelId: ID = 0
): String
lastUsedAt: DateTime
mailboxIds: [String!]
name: String
snippet: String
subject: String
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection!) All attachments on this canned reply.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
automaticActions ([CannedReplyAutomaticAction!]!) All automatic actions set on this canned reply.
body (String) The content of the canned reply template.
category (CannedReplyCategory) The category of the canned reply.
countUsed (Int!) The number of times the object has been utilized.
createdAt (DateTime!) The date and time that the object was created.
creator (Agent) The agent that created the canned reply.
id (ID!) The content of the canned reply template with all variables interpolated.
Arguments
contactId (ID!)
The ID of the contact to use for interpolation.
conversationId (ID)
The ID of the conversation to use for interpolation.
messageId (ID)
The ID of the message to use for interpolation.
channelId (ID)
The ID of the channel to use for interpolation.
lastUsedAt (DateTime) The date and time that the object was last used.
mailboxIds ([String!]) Searches for a mailbox that match the id.
name (String) The name of the canned reply.
snippet (String) A short snippet from the canned reply body.
subject (String) The subject line of the canned reply.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.
Utilizationabled An object with utilization fields for when it was last used and how many times it has been used.

CannedReplyAutomaticAction#

No description

type CannedReplyAutomaticAction {
type: String
value: String
}

Fields#

NameDescription
type (String) The type of the canned reply automatic action.
value (String) The value of the canned reply automatic action.

CannedReplyCategory#

A canned reply category is a grouping for canned replies.

To fetch all canned reply categories in the account:

query CannedReplyCategories {
cannedReplyCategories {
nodes {
createdAt
id
name
updatedAt
}
pageInfo {
hasNextPage
}
}
}

To fetch all canned reply categories with a given search string:

query CannedReplyCategories {
cannedReplyCategories(filter: { keyword: "Billing" }) {
nodes {
createdAt
id
name
updatedAt
}
pageInfo {
hasNextPage
}
}
}
type CannedReplyCategory implements Node, Timestamped {
cannedReplies(
after: String
before: String
first: Int = 0
last: Int = 0
filter: CannedReplyFilter = "[object Object]"
orderBy: CannedReplyOrder = "[object Object]"
): CannedReplyConnection
createdAt: DateTime!
id: ID!
locked: Boolean!
name: String!
updatedAt: DateTime!
}

Fields#

NameDescription
cannedReplies (CannedReplyConnection) Lists all canned replies.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (CannedReplyFilter)
The fields by which to filter the results.
orderBy (CannedReplyOrder)
The field and direction by which to order the results.
createdAt (DateTime!) The date and time that the object was created.
id (ID!) True if the category is protected; false otherwise.
name (String!) The name of the canned reply category.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

CannedReplyCategoryConnection#

The connection type for CannedReplyCategory.

type CannedReplyCategoryConnection {
edges: [CannedReplyCategoryEdge]
nodes: [CannedReplyCategory]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([CannedReplyCategoryEdge]) A list of edges.
nodes ([CannedReplyCategory]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

CannedReplyCategoryEdge#

An edge in a connection.

type CannedReplyCategoryEdge {
cursor: String!
node: CannedReplyCategory
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (CannedReplyCategory) The item at the end of the edge.

CannedReplyConnection#

The connection type for CannedReply.

type CannedReplyConnection {
edges: [CannedReplyEdge]
nodes: [CannedReply]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([CannedReplyEdge]) A list of edges.
nodes ([CannedReply]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

CannedReplyEdge#

An edge in a connection.

type CannedReplyEdge {
cursor: String!
node: CannedReply
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (CannedReply) The item at the end of the edge.

CardSetupIntent#

Represents the intent of a customer to create/replace a payment method on there account

Fetch all setup intents for the current account:

query SetupIntentsQuery {
billing {
cardSetupIntents {
id
clientSecret
usage
status
createdAt
}
}
}
type CardSetupIntent {
clientSecret: String!
createdAt: DateTime!
id: ID!
status: SetupIntentStatus!
usage: SetupIntentUsage!
}

Fields#

NameDescription
clientSecret (String!) The client secret of this SetupIntent. Used for client-side retrieval using a publishable key.
createdAt (DateTime!) Time at which the object was created. Measured in seconds since the Unix epoch.
id (ID!) The external id for this setup intent.
status (SetupIntentStatus!) The duration applied for this coupon.
usage (SetupIntentUsage!) The duration applied for this coupon.

CardSetupIntentCreatePayload#

Autogenerated return type of CardSetupIntentCreate

type CardSetupIntentCreatePayload {
clientMutationId: String
errors: [UserError!]!
setupIntent: CardSetupIntent
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
setupIntent (CardSetupIntent) The created card setup intent.

CardSetupIntentSucceedPayload#

Autogenerated return type of CardSetupIntentSucceed

type CardSetupIntentSucceedPayload {
clientMutationId: String
errors: [UserError!]!
setupIntent: CardSetupIntent
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
setupIntent (CardSetupIntent) The created card setup intent.

ChannelChanged#

A conversation was moved to another channel.

type ChannelChanged implements Timestamped {
createdAt: DateTime!
from: Channel
id: ID!
to: Channel
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
from (Channel) The channel that the conversation was moved from.
id (ID!) The channel that the conversation was moved to.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ChannelConnection#

The connection type for Channel.

type ChannelConnection {
edges: [ChannelEdge]
nodes: [Channel]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([ChannelEdge]) A list of edges.
nodes ([Channel]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

ChannelEdge#

An edge in a connection.

type ChannelEdge {
cursor: String!
node: Channel
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Channel) The item at the end of the edge.

ChannelIntegration#

No description

type ChannelIntegration implements Integration {
channel: Channel!
createdAt: DateTime!
id: ID!
legacyId: String!
provider: IntegrationProvider!
settings: IntegrationSettings!
uid: String
updatedAt: DateTime!
}

Fields#

NameDescription
channel (Channel!) The channel the integration is connected to.
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

CheckAccessByMatrixIdsPayload#

Autogenerated return type of CheckAccessByMatrixIds

type CheckAccessByMatrixIdsPayload {
clientMutationId: String
errors: [UserError!]!
rooms: [RoomAccess!]
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
rooms ([RoomAccess!]) A list of chat rooms with a flag indicating the ability of the current user to access each of them.

ClickCreatePayload#

Autogenerated return type of ClickCreate

type ClickCreatePayload {
clickId: String
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
clickId (String) The ID of the created click.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

CommentDeleted#

A comment was deleted.

type CommentDeleted {
id: ID!
}

CommentEdited#

A comment was edited.

type CommentEdited {
id: ID!
}

CommentReacted#

A reaction was left on a comment.

type CommentReacted {
id: ID!
isAdded: Boolean!
reaction: String!
}

Fields#

NameDescription
id (ID!) If reaction was added or removed.
reaction (String!) The reaction emoji.

Company#

A company represents an organization containing one or more contacts.

type Company implements Node, Timestamped, CustomFieldValuesField {
contacts(
after: String
before: String
first: Int = 0
last: Int = 0
): ContactConnection
conversationCount: Int!
createdAt: DateTime!
createdBy: Agent!
customFieldValues(
after: String
before: String
first: Int = 0
last: Int = 0
filter: CustomFieldValuesFilter = "[object Object]"
): CustomFieldValueConnection
domain: String
id: ID!
logoUrl: String
name: String
updatedAt: DateTime!
updatedBy: Agent!
}

Fields#

NameDescription
contacts (ContactConnection) The contacts in the company.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
conversationCount (Int!) The total number of conversations that the company is involved in.
createdAt (DateTime!) The date and time that the object was created.
createdBy (Agent!) The agent that created the company.
customFieldValues (CustomFieldValueConnection) Lists all custom fields.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (CustomFieldValuesFilter)
Filter custom field values.
domain (String) The company's primary domain.
id (ID!) The URL of the company's logo.
name (String) The company name.
updatedAt (DateTime!) The date and time that the object was last updated.
updatedBy (Agent!) The agent that last updated the company.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.
CustomFieldValuesField A list of custom fields filtered by input.

CompanyAddContactsPayload#

Autogenerated return type of CompanyAddContacts

type CompanyAddContactsPayload {
clientMutationId: String
company: Company!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
company (Company!) The updated company.
errors ([UserError!]!) Errors related to user input.

CompanyConnection#

The connection type for Company.

type CompanyConnection {
edges: [CompanyEdge]
nodes: [Company]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([CompanyEdge]) A list of edges.
nodes ([Company]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

CompanyCreatePayload#

Autogenerated return type of CompanyCreate

type CompanyCreatePayload {
clientMutationId: String
company: Company
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
company (Company) The company that was created.
errors ([UserError!]!) Errors related to user input.

CompanyDeletePayload#

Autogenerated return type of CompanyDelete

type CompanyDeletePayload {
clientMutationId: String
deletedCompanyId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedCompanyId (ID) The ID of the deleted company.
errors ([UserError!]!) Errors related to user input.

CompanyEdge#

An edge in a connection.

type CompanyEdge {
cursor: String!
node: Company
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Company) The item at the end of the edge.

CompanyMergePayload#

Autogenerated return type of CompanyMerge

type CompanyMergePayload {
clientMutationId: String
errors: [UserError!]!
target: Company!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
target (Company!) The merged company.

CompanyRemoveContactsPayload#

Autogenerated return type of CompanyRemoveContacts

type CompanyRemoveContactsPayload {
clientMutationId: String
company: Company!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
company (Company!) Errors related to user input.

Condition#

A folder condition provides the logic for matching relevant conversations.

For example, to match conversations with the "suggestion" tag:

  1. param: TAG
  2. operator: CONTAINS
  3. value: "suggestion"

To fetch all folders and their conditions:

query Folders {
folders {
edges {
node {
conditions {
edges {
node {
id
param
operator
value
}
}
pageInfo {
hasNextPage
}
}
createdAt
id
matchType
name
updatedAt
}
}
}
}
type Condition implements Node, Timestamped {
createdAt: DateTime!
id: ID!
operator: ConditionOperator!
param: ConditionParam!
updatedAt: DateTime!
value: String
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The logic operator to use, for example.
param (ConditionParam!) The conversation field to use, for example.
updatedAt (DateTime!) The date and time that the object was last updated.
value (String) The value to match against, for example.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

ConditionConnection#

The connection type for Condition.

type ConditionConnection {
edges: [ConditionEdge]
nodes: [Condition]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ConditionEdge]) A list of edges.
nodes ([Condition]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ConditionEdge#

An edge in a connection.

type ConditionEdge {
cursor: String!
node: Condition
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Condition) The item at the end of the edge.

Contact#

that role is defined by their participation with a particular conversation. This means the same contact could be the customer on one conversation, and a collaborator on another.

type Contact implements Node, Timestamped, CustomFieldValuesField {
avatarUrl: String
companies(
after: String
before: String
first: Int = 0
last: Int = 0
): CompanyConnection
contactType: ContactType!
conversationCount: Int!
createdAt: DateTime!
createdBy: Agent!
customFieldValues(
after: String
before: String
first: Int = 0
last: Int = 0
filter: CustomFieldValuesFilter = "[object Object]"
): CustomFieldValueConnection
email: EmailAddress
firstName: String
id: ID!
lastName: String
lastSeenAt: DateTime
name: String
role: ContactRole
secondaryEmails: [EmailAddress!]
updatedAt: DateTime!
updatedBy: Agent!
}

Fields#

NameDescription
avatarUrl (String) The URL of the contact's avatar.
companies (CompanyConnection) The companies that the contact belongs to.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
contactType (ContactType!) The type of the contact.
conversationCount (Int!) The total number of conversations that the contact is involved in.
createdAt (DateTime!) The date and time that the object was created.
createdBy (Agent!) The agent that created the contact.
customFieldValues (CustomFieldValueConnection) Lists all custom fields.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (CustomFieldValuesFilter)
Filter custom field values.
email (EmailAddress) The contact's primary email address.
firstName (String) The contact's first name.
id (ID!) The contact's last name.
lastSeenAt (DateTime) The date and time that the contact was last seen.
name (String) The contact's full name.
role (ContactRole) The contact's role in a conversation.
secondaryEmails ([EmailAddress!]) The contact's secondary email addresses.
updatedAt (DateTime!) The date and time that the object was last updated.
updatedBy (Agent!) The agent that last updated the contact.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.
CustomFieldValuesField A list of custom fields filtered by input.

ContactChange#

A conversation was reassigned to another contact.

type ContactChange implements Timestamped {
createdAt: DateTime!
from: Contact!
id: ID!
to: Contact!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
from (Contact!) The contact that the conversation was previously assigned to.
id (ID!) The contact that the conversation is currently assigned to.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ContactConnection#

The connection type for Contact.

type ContactConnection {
edges: [ContactEdge]
nodes: [Contact]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([ContactEdge]) A list of edges.
nodes ([Contact]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

ContactCreatePayload#

Autogenerated return type of ContactCreate

type ContactCreatePayload {
clientMutationId: String
contact: Contact
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
contact (Contact) The contact that was created.
errors ([UserError!]!) Errors related to user input.

ContactDeletePayload#

Autogenerated return type of ContactDelete

type ContactDeletePayload {
clientMutationId: String
deletedContactId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedContactId (ID) The ID of the deleted contact.
errors ([UserError!]!) Errors related to user input.

ContactEdge#

An edge in a connection.

type ContactEdge {
cursor: String!
node: Contact
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Contact) The item at the end of the edge.

ContactMergePayload#

Autogenerated return type of ContactMerge

type ContactMergePayload {
clientMutationId: String
errors: [UserError!]!
target: Contact!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
target (Contact!) The merged contact.

ContactOpenedMessage#

A contact opened a message.

type ContactOpenedMessage implements Timestamped {
createdAt: DateTime!
id: ID!
message: Message!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The message that the contact opened.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ContactResyncPayload#

Autogenerated return type of ContactResync

type ContactResyncPayload {
clientMutationId: String
contact: Contact!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
contact (Contact!) The updated contact.
errors ([UserError!]!) Errors related to user input.

ContactUpdatePayload#

Autogenerated return type of ContactUpdate

type ContactUpdatePayload {
clientMutationId: String
contact: Contact!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
contact (Contact!) The updated contact.
errors ([UserError!]!) Errors related to user input.

conversationAddNotePayload#

Autogenerated return type of conversationAddNote

type conversationAddNotePayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
deletedDraftId: String
errors: [UserError!]!
message: Note
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
deletedDraftId (String) The UUID of the deleted draft.
errors ([UserError!]!) Errors related to user input.
message (Note) The created note.

ConversationAssignPayload#

Autogenerated return type of ConversationAssign

type ConversationAssignPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationAttachment#

A file attached to a message.

type ConversationAttachment implements Node, Timestamped {
changesetId: String!
commentId: String!
contentId: String
createdAt: DateTime!
creator: Agent
deliverBy: DateTime
downloadUrl: String
fileName: String
fileSize: String
fileType: String
id: ID!
s3Key: String!
scanReport: AttachmentScanReport
ticketId: String!
type: AttachmentType
updatedAt: DateTime!
url: String
}

Fields#

NameDescription
changesetId (String!) The id of a comment's changeset that attachment belongs to.
commentId (String!) The id of a comment that attachment belongs to.
contentId (String) The RFC2387 identifier of the attachment, if from an email.
createdAt (DateTime!) The date and time that the object was created.
creator (Agent) The user that created the attachment.
deliverBy (DateTime) The date and time that the message was sent. Used to allow for undoing send.
downloadUrl (String) The public direct download URL of the attachment.
fileName (String) The name of the attachment.
fileSize (String) The attachment size in bytes.
fileType (String) The attachment MIME type.
id (ID!) The attachment s3 key.
scanReport (AttachmentScanReport) The attachment type.
ticketId (String!) The id of a ticket that attachment belongs to.
type (AttachmentType) The attachment type.
updatedAt (DateTime!) The date and time that the object was last updated.
url (String) The public URL of the attachment.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

ConversationAttachmentConnection#

The connection type for ConversationAttachment.

type ConversationAttachmentConnection {
edges: [ConversationAttachmentEdge]
nodes: [ConversationAttachment]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ConversationAttachmentEdge]) A list of edges.
nodes ([ConversationAttachment]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ConversationAttachmentEdge#

An edge in a connection.

type ConversationAttachmentEdge {
cursor: String!
node: ConversationAttachment
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (ConversationAttachment) The item at the end of the edge.

ConversationBulkDeletePayload#

Autogenerated return type of ConversationBulkDelete

type ConversationBulkDeletePayload {
clientMutationId: String
errors: [UserError!]!
jid: String!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
jid (String!) The ID of the batch job that will delete the conversations.

ConversationChangeChannelPayload#

Autogenerated return type of ConversationChangeChannel

type ConversationChangeChannelPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationChangeContactPayload#

Autogenerated return type of ConversationChangeContact

type ConversationChangeContactPayload {
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The conversation that was updated.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationClosePayload#

Autogenerated return type of ConversationClose

type ConversationClosePayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationConnection#

The connection type for Conversation.

type ConversationConnection {
edges: [ConversationEdge]
nodes: [Conversation]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ConversationEdge]) A list of edges.
nodes ([Conversation]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ConversationCounts#

The statistics about the messages and interactions in the conversation.

type ConversationCounts {
attachments: Int!
interactions: Int!
messages: Int!
notes: Int!
stateChanges: Int!
}

Fields#

NameDescription
attachments (Int!) The number of files attached to all messages in the conversation.
interactions (Int!) The total number of messages, notes, and state changes in the conversation.
messages (Int!) The total number of messages in the conversation.
notes (Int!) The total number of notes in the conversation.
stateChanges (Int!) The total number of state changes in the conversation.

ConversationCreateEmailPayload#

Autogenerated return type of ConversationCreateEmail

type ConversationCreateEmailPayload {
changesetId: String!
clientMutationId: String
conversation: EmailConversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (EmailConversation) The movement in search/folder counts due to this mutation.

ConversationDeletePayload#

Autogenerated return type of ConversationDelete

type ConversationDeletePayload {
clientMutationId: String
deletedConversationIds: [ID!]!
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedConversationIds ([ID!]!) The IDs of the deleted conversations.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationDeleted#

A conversation was moved to trash.

type ConversationDeleted implements Timestamped {
createdAt: DateTime!
id: ID!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ConversationEdge#

An edge in a connection.

type ConversationEdge {
cursor: String!
node: Conversation
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Conversation) The item at the end of the edge.

ConversationFollowPayload#

Autogenerated return type of ConversationFollow

type ConversationFollowPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationForwardPayload#

Autogenerated return type of ConversationForward

type ConversationForwardPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
deletedDraftId: String
diffs: [Diff!]!
errors: [UserError!]!
message: Message
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The forwarded conversation.
deletedDraftId (String) The UUID of the deleted draft.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.
message (Message) The created message.

ConversationLogPayload#

Autogenerated return type of ConversationLog

type ConversationLogPayload {
changesetId: String!
clientMutationId: String
conversation: EmailConversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (EmailConversation) The movement in search/folder counts due to this mutation.

ConversationMergePayload#

Autogenerated return type of ConversationMerge

type ConversationMergePayload {
changesetId: String!
clientMutationId: String
errors: [UserError!]!
source: Conversation!
sourceDiffs: [Diff!]!
target: Conversation!
targetDiffs: [Diff!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
source (Conversation!) The deleted source conversation.
sourceDiffs ([Diff!]!) The movement in search and folder counts from the source conversation change.
target (Conversation!) The updated target conversation.
targetDiffs ([Diff!]!) The movement in search and folder counts from the target conversation change.

ConversationMerged#

A conversation was merged into another conversation.

type ConversationMerged implements Timestamped {
createdAt: DateTime!
id: ID!
sourceChannelId: ID
sourceContactId: ID
sourceCreatedAt: DateTime
sourceNumber: Int!
target: Conversation!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The ID of the channel that the source conversation was in.
sourceContactId (ID) The ID of the contact of the source conversation.
sourceCreatedAt (DateTime) The date and time that the source conversation was created.
sourceNumber (Int!) The number of the source conversation.
target (Conversation!) The conversation that the source conversation was merged into.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ConversationMoveMessagePayload#

Autogenerated return type of ConversationMoveMessage

type ConversationMoveMessagePayload {
changesetId: String!
clientMutationId: String
conversation: Conversation!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation!) The new conversation.
errors ([UserError!]!) Errors related to user input.

ConversationOpenPayload#

Autogenerated return type of ConversationOpen

type ConversationOpenPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationPreferences#

No description

type ConversationPreferences {
defaultReplyState: ConversationReplyState!
groupFolders: Boolean!
scopedContactsSearch: Boolean!
showAllInboxes: Boolean!
}

Fields#

NameDescription
defaultReplyState (ConversationReplyState!) The default state to set conversations to after replying.
groupFolders (Boolean!) Whether or not to group folders by mailbox.
scopedContactsSearch (Boolean!) Whether or not to scope contact search to the current mailbox.
showAllInboxes (Boolean!) True if the combined inbox for all mailboxes should show in the UI; false otherwise.

ConversationReplyPayload#

Autogenerated return type of ConversationReply

type ConversationReplyPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
deletedDraftId: String
diffs: [Diff!]!
errors: [UserError!]!
message: Message
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The replied to conversation.
deletedDraftId (String) The UUID of the deleted draft.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.
message (Message) The created message.

conversationRestorePayload#

Autogenerated return type of conversationRestore

type conversationRestorePayload {
clientMutationId: String
conversations(
after: String
before: String
first: Int = 0
last: Int = 0
): ConversationConnection
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
conversations (ConversationConnection) The restored conversations.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationRestored#

A conversation was restored from trash.

type ConversationRestored implements Timestamped {
createdAt: DateTime!
id: ID!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ConversationSnoozePayload#

Autogenerated return type of ConversationSnooze

type ConversationSnoozePayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationSpamPayload#

Autogenerated return type of ConversationSpam

type ConversationSpamPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationStarPayload#

Autogenerated return type of ConversationStar

type ConversationStarPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationStarred#

The conversation was starred.

type ConversationStarred implements Timestamped {
createdAt: DateTime!
id: ID!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ConversationTagPayload#

Autogenerated return type of ConversationTag

type ConversationTagPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationUnassignPayload#

Autogenerated return type of ConversationUnassign

type ConversationUnassignPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationUnfollowPayload#

Autogenerated return type of ConversationUnfollow

type ConversationUnfollowPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationUnreadPayload#

Autogenerated return type of ConversationUnread

type ConversationUnreadPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationUnstarPayload#

Autogenerated return type of ConversationUnstar

type ConversationUnstarPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

ConversationUnstarred#

The conversation was unstarred.

type ConversationUnstarred implements Timestamped {
createdAt: DateTime!
id: ID!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ConversationUntagPayload#

Autogenerated return type of ConversationUntag

type ConversationUntagPayload {
changesetId: String!
clientMutationId: String
conversation: Conversation
diffs: [Diff!]!
errors: [UserError!]!
}

Fields#

NameDescription
changesetId (String!) The changeset ID for the update.
clientMutationId (String) A unique identifier for the client performing the mutation.
conversation (Conversation) The updated conversation.
diffs ([Diff!]!) The movement in search/folder counts due to this mutation.
errors ([UserError!]!) Errors related to user input.

Coupon#

Represents a coupon that can be accociated with a discount

type Coupon {
amountOff: Int
createdAt: DateTime!
duration: CouponDuration!
durationInMonths: Int
id: ID!
maxRedemptions: Int
name: String
percentOff: Int
timesRedeemed: Int!
valid: Boolean!
}

Fields#

NameDescription
amountOff (Int) A positive integer representing the amount to subtract from an invoice total (required if percent_off is not passed.
createdAt (DateTime!) Time at which the object was created. Measured in seconds since the Unix epoch.
duration (CouponDuration!) The duration applied for this coupon.
durationInMonths (Int) If duration is repeating, the number of months the coupon applies. Null if coupon duration is forever or once.
id (ID!) The external id for this coupon.
maxRedemptions (Int) Maximum number of times this coupon can be redeemed, in total, across all customers, before it is no longer valid.
name (String) Name of the coupon displayed to customers on for instance invoices or receipts.
percentOff (Int) A positive float larger than 0, and smaller or equal to 100, that represents the discount the coupon will apply (required if amount_off is not passed.
timesRedeemed (Int!) Number of times this coupon has been applied to a customer.
valid (Boolean!) Taking account of the above properties, whether this coupon can still be applied to a customer.

Credentials#

No description

type Credentials {
createdAt: DateTime!
expiresAt: DateTime
expiresIn: Int
token: String!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time when the access token was created.
expiresAt (DateTime) The date and time when the access token expires.
expiresIn (Int) The number of seconds until the access token expires.
token (String!) The access token.

CreditCard#

Represents all the credit cards currently added to the groove account

Fetch all credit cards for the current account:

query CreditCardsQuery {
billing {
creditCards {
id
name
brand
country
cvcCheck
expiryMonth
expiryYear
funding
last4
}
}
}
type CreditCard {
brand: String!
country: String
cvcCheck: String
expiryMonth: Int!
expiryYear: Int!
funding: CreditCardFunding!
id: ID!
last4: String!
name: String
}

Fields#

NameDescription
brand (String!) Card brand. Can be American Express, Diners Club, Discover, Eftpos Australia, JCB, MasterCard, UnionPay, Visa, or Unknown.
country (String) Two-letter ISO code representing the country of the card.
cvcCheck (String) if a CVC was provided, results of the check: pass, fail, unavailable, or unchecked. A result of unchecked indicates that CVC was provided but hasn.
expiryMonth (Int!) Two-digit number representing the card.
expiryYear (Int!) Four-digit number representing the card.
funding (CreditCardFunding!) The state of this plan in the 3rd party system.
id (ID!) The last four digits of the card.
name (String) Card brand. Can be American Express, Diners Club, Discover, Eftpos Australia, JCB, MasterCard, UnionPay, Visa, or Unknown.

CustomDomain#

A custom domain lets you customize the URL of your Knowledge Base.

It contains expiry and Let's Encrypt certificate details.

type CustomDomain {
domain: String
expiresAt: String
letsencrypt: Boolean!
status: String
valid: Boolean
}

Fields#

NameDescription
domain (String) The custom domain of the Knowledge Base.
expiresAt (String) The expiration date of the Let's Encrypt certificate.
letsencrypt (Boolean!) True if the custom domain uses a Let's Encrypt certificate; false otherwise.
status (String) The status of the Let's Encrypt certificate.
valid (Boolean) True if the custom domain of the Knowledge Base is valid; false otherwise.

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.

type CustomField implements Node, Timestamped {
category: CustomFieldCategory!
createdAt: DateTime!
createdBy: Agent!
deletable: Boolean!
description: String
handleType: CustomFieldHandleType
hidden: Boolean!
icon: CustomFieldIcon!
id: ID!
isArray: Boolean!
key: String!
name: String
options(
after: String
before: String
first: Int = 0
last: Int = 0
): CustomFieldOptionConnection
placeholder: String
position: Int
type: CustomFieldType!
updatedAt: DateTime!
updatedBy: Agent!
}

Fields#

NameDescription
category (CustomFieldCategory!) The category the custom field belongs to.
createdAt (DateTime!) The date and time that the object was created.
createdBy (Agent!) The agent that created the custom field.
deletable (Boolean!) True if the custom field can be deleted; false otherwise.
description (String) A description of the custom field.
handleType (CustomFieldHandleType) The unique identifier type linked to this field.
hidden (Boolean!) True if the custom field needs to be hidden in the UI; false otherwise.
icon (CustomFieldIcon!) The icon for the custom field.
id (ID!) True if the custom field allows arrays of values; false otherwise.
key (String!) An immutable identifier for the custom field.
name (String) The name of the custom field.
options (CustomFieldOptionConnection) The available options for the custom field if the type is.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
placeholder (String) The text to show in the input field when it is empty.
position (Int) The position of the custom field within the category. The first item starts at 1. Leave blank to append the custom field to the end of the list.
type (CustomFieldType!) The data type of the custom field.
updatedAt (DateTime!) The date and time that the object was last updated.
updatedBy (Agent!) The agent that last updated the custom field.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

CustomFieldCategory#

A grouping of contact or company fields.

type CustomFieldCategory implements Node, Timestamped {
createdAt: DateTime!
customFields(
after: String
before: String
first: Int = 0
last: Int = 0
): CustomFieldConnection!
deletable: Boolean!
id: ID!
key: String!
name: String!
type: CustomFieldCategoryType!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
customFields (CustomFieldConnection!) The custom fields belonging to the custom field category.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
deletable (Boolean!) True if the custom field category can be deleted; false otherwise.
id (ID!) An immutable identifier for the custom field category.
name (String!) The name of the custom field category.
type (CustomFieldCategoryType!) The type of the custom field category.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

CustomFieldCategoryConnection#

The connection type for CustomFieldCategory.

type CustomFieldCategoryConnection {
edges: [CustomFieldCategoryEdge]
nodes: [CustomFieldCategory]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([CustomFieldCategoryEdge]) A list of edges.
nodes ([CustomFieldCategory]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

CustomFieldCategoryCreatePayload#

Autogenerated return type of CustomFieldCategoryCreate

type CustomFieldCategoryCreatePayload {
category: CustomFieldCategory
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
category (CustomFieldCategory) The created custom field category.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

CustomFieldCategoryDeletePayload#

Autogenerated return type of CustomFieldCategoryDelete

type CustomFieldCategoryDeletePayload {
clientMutationId: String
deletedCategoryId: ID
errors: [UserError!]!
newCategory: CustomFieldCategory
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedCategoryId (ID) The ID of the deleted custom field category.
errors ([UserError!]!) Errors related to user input.
newCategory (CustomFieldCategory) The category that the custom fields were moved to.

CustomFieldCategoryEdge#

An edge in a connection.

type CustomFieldCategoryEdge {
cursor: String!
node: CustomFieldCategory
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (CustomFieldCategory) The item at the end of the edge.

CustomFieldCategoryUpdatePayload#

Autogenerated return type of CustomFieldCategoryUpdate

type CustomFieldCategoryUpdatePayload {
category: CustomFieldCategory
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
category (CustomFieldCategory) The updated custom field category.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

CustomFieldConnection#

The connection type for CustomField.

type CustomFieldConnection {
edges: [CustomFieldEdge]
nodes: [CustomField]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([CustomFieldEdge]) A list of edges.
nodes ([CustomField]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

CustomFieldCreatePayload#

Autogenerated return type of CustomFieldCreate

type CustomFieldCreatePayload {
clientMutationId: String
customField: CustomField
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
customField (CustomField) The created custom field.
errors ([UserError!]!) Errors related to user input.

CustomFieldDeletePayload#

Autogenerated return type of CustomFieldDelete

type CustomFieldDeletePayload {
clientMutationId: String
deletedCustomFieldId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedCustomFieldId (ID) The ID of the deleted custom field.
errors ([UserError!]!) Errors related to user input.

CustomFieldEdge#

An edge in a connection.

type CustomFieldEdge {
cursor: String!
node: CustomField
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (CustomField) The item at the end of the edge.

CustomFieldOption#

An option for a custom field of type DROPDOWN.

type CustomFieldOption {
customField: CustomField!
label: String!
value: String!
}

Fields#

NameDescription
customField (CustomField!) The custom field associated with the list.
label (String!) The label of the dropdown option.
value (String!) The value of the dropdown option.

CustomFieldOptionConnection#

The connection type for CustomFieldOption.

type CustomFieldOptionConnection {
edges: [CustomFieldOptionEdge]
nodes: [CustomFieldOption]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([CustomFieldOptionEdge]) A list of edges.
nodes ([CustomFieldOption]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

CustomFieldOptionDeletePayload#

Autogenerated return type of CustomFieldOptionDelete

type CustomFieldOptionDeletePayload {
clientMutationId: String
deletedCustomFieldOptionId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedCustomFieldOptionId (ID) The ID of the deleted custom field option.
errors ([UserError!]!) Errors related to user input.

CustomFieldOptionEdge#

An edge in a connection.

type CustomFieldOptionEdge {
cursor: String!
node: CustomFieldOption
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (CustomFieldOption) The item at the end of the edge.

CustomFieldRemovePayload#

Autogenerated return type of CustomFieldRemove

type CustomFieldRemovePayload {
clientMutationId: String
errors: [UserError!]!
item: CustomFieldSubjectType!
removedItemId: ID!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
item (CustomFieldSubjectType!) The updated contact or company.
removedItemId (ID!) The ID of the removed custom field.

customFieldRestorePayload#

Autogenerated return type of customFieldRestore

type customFieldRestorePayload {
clientMutationId: String
customField: CustomField!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
customField (CustomField!) The custom field that was restored.
errors ([UserError!]!) Errors related to user input.

CustomFieldUpdatePayload#

Autogenerated return type of CustomFieldUpdate

type CustomFieldUpdatePayload {
clientMutationId: String
customField: CustomField!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
customField (CustomField!) The updated custom field.
errors ([UserError!]!) Errors related to user input.

CustomFieldValue#

The value of a contact or company custom field.

type CustomFieldValue {
customField: CustomField!
id: ID!
value: ValueTypeUnion!
}

Fields#

NameDescription
customField (CustomField!) The custom field.
id (ID!) The value assigned to the custom field.

CustomFieldValueConnection#

The connection type for CustomFieldValue.

type CustomFieldValueConnection {
edges: [CustomFieldValueEdge]
nodes: [CustomFieldValue]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([CustomFieldValueEdge]) A list of edges.
nodes ([CustomFieldValue]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

CustomFieldValueEdge#

An edge in a connection.

type CustomFieldValueEdge {
cursor: String!
node: CustomFieldValue
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (CustomFieldValue) The item at the end of the edge.

CustomFieldValuesBulkUpdatePayload#

Autogenerated return type of CustomFieldValuesBulkUpdate

type CustomFieldValuesBulkUpdatePayload {
clientMutationId: String
errors: [UserError!]!
jid: String
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

CustomFieldValuesUpdatePayload#

Autogenerated return type of CustomFieldValuesUpdate

type CustomFieldValuesUpdatePayload {
clientMutationId: String
errors: [UserError!]!
subject: CustomFieldSubjectType!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
subject (CustomFieldSubjectType!) The company or contact the custom field values where set on.

CustomerRatingSetting#

No description

type CustomerRatingSetting {
account: Account!
id: ID!
locale: String!
mailboxIds: [String!]
name: String!
translations: [CustomerRatingSettingTranslation!]
}

Fields#

NameDescription
account (Account!) The account the setting belongs to.
id (ID!) The rating translations locale.
mailboxIds ([String!]) Mailbox ids that the rating is scoped to.
name (String!) The rating name.
translations ([CustomerRatingSettingTranslation!]) The rating translations.

CustomerRatingSettingConnection#

The connection type for CustomerRatingSetting.

type CustomerRatingSettingConnection {
edges: [CustomerRatingSettingEdge]
nodes: [CustomerRatingSetting]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([CustomerRatingSettingEdge]) A list of edges.
nodes ([CustomerRatingSetting]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

CustomerRatingSettingDeletePayload#

Autogenerated return type of CustomerRatingSettingDelete

type CustomerRatingSettingDeletePayload {
clientMutationId: String
deletedCustomerRatingSettingId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedCustomerRatingSettingId (ID) The ID of the customer rating setting that was deleted.
errors ([UserError!]!) Errors related to user input.

CustomerRatingSettingEdge#

An edge in a connection.

type CustomerRatingSettingEdge {
cursor: String!
node: CustomerRatingSetting
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (CustomerRatingSetting) The item at the end of the edge.

CustomerRatingSettingTranslation#

No description

type CustomerRatingSettingTranslation {
id: ID!
locale: String!
value: String!
}

Fields#

NameDescription
id (ID!) The translation locale.
value (String!) The translation value.

CustomerRatingSettingUpsertPayload#

Autogenerated return type of CustomerRatingSettingUpsert

type CustomerRatingSettingUpsertPayload {
clientMutationId: String
customerRatingSetting: CustomerRatingSetting
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
customerRatingSetting (CustomerRatingSetting) The customer rating setting that was created or updated.
errors ([UserError!]!) Errors related to user input.

DeleteRoomPayload#

Autogenerated return type of DeleteRoom

type DeleteRoomPayload {
clientMutationId: String
deletedConversationId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedConversationId (ID) The ID of the deleted conversation.
errors ([UserError!]!) Errors related to user input.

DemoEmailChannel#

No description

type DemoEmailChannel implements Node, Channel {
color: String!
conversationCount(state: [ConversationState!] = []): Int!
createdAt: DateTime!
email: String
folders(
after: String
before: String
first: Int = 0
last: Int = 0
filter: FolderFilter = "[object Object]"
orderBy: FolderOrder = "[object Object]"
): FolderConnection
forwardEmailAddress: String!
fromName: String!
id: ID!
name: String!
permittedAgents(
after: String
before: String
first: Int = 0
last: Int = 0
): AgentConnection!
position: Int!
signature: String
state: ChannelState!
tags(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TagFilter
orderBy: TagOrder
): TagConnection
type: ChannelType!
updatedAt: DateTime!
}

Channel

A channel is a source of incoming conversations. It dictates how messages in those conversations are sent and received.

For example, an EmailChannel is a channel where messages are sent as email. To fetch all of them:

query Channels {
channels {
nodes {
... on Channel {
__typename
id
name
conversationCount
}
}
}
}

By default channels are sorted by their user-defined row-order, called their position. To sort by name instead:

query Channels {
channels(orderBy: { field: NAME, direction: ASC }) {
nodes {
... on EmailChannel {
id
}
}
}
}

To find which agents have permission to view this channel:

query Channels {
channels {
nodes {
id
name
permittedAgents {
totalCount
nodes {
id
}
}
}
}
}

Fields#

NameDescription
color (String!) The color of the mailbox.
conversationCount (Int!) The count of conversations in the channel.
Arguments
state ([ConversationState!])
Filter by state.
createdAt (DateTime!) The date and time that the object was created.
email (String) The email address associated with the mailbox.
folders (FolderConnection) Lists all folders that are accessible to the authenticated agent. Each folder can be associated with one or more mailboxes.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (FolderFilter)
The fields by which to filter the results.
orderBy (FolderOrder)
The field and direction by which to order the results.
forwardEmailAddress (String!) The forwarding email address associated with the mailbox.
fromName (String!) The name that replies should be sent from.
id (ID!) The name of the channel.
permittedAgents (AgentConnection!) The agents permitted to access this channel.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
position (Int!) The position that the mailbox should appear at when listed.
signature (String) The default signature on outgoing messages from the mailbox.
state (ChannelState!) The state of the channel.
tags (TagConnection) Lists all tags.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TagFilter)
The fields by which to filter the results.
orderBy (TagOrder)
The field and direction by which to order the results.
type (ChannelType!) The communication type of the channel.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Channel A channel is a source of incoming conversations. It dictates how messages in those conversations are sent and received. For example, an.

Device#

The device used by the contact.

type Device {
family: String
}

Fields#

NameDescription
family (String) The name of the device.

Diff#

Diffs represent the changes to search or folder counts as a result of a mutation.

Clients can read the diff(s) from a mutation, and apply those deltas to their cached folder counts without having to re-query the API for the correct counts.

In some cases it's possible to guess how a particular mutation might affect folder counts. Indeed, the Groove apps generally try to make an optimistic guess while the mutation request is in-flight.

Often, however, it's non-trivial to do so, and in some cases not possible. It's more more correct to rely on the API to provide the correct numbers, and these are provided conveniently inside mutation diffs.

For example, say you have a "question" tag, and there are 20 conversations with that tag applied. Then, an agent triggers a conversationUntag mutation for the "question" tag on one of those conversations. That mutation will then return a diff field showing a -1 delta for the general search query for that tag. For example:

"diffs" => [
"tag:tag_1234567" => -1,
]

The client could then cheaply recompute their cached counts for that tag, and update any previously cached search result counts.

Similarly, if you also had a folder whose rule matches all "question" tags as well, then that same mutation might result in a folder diff field like so:

"diffs" => [
"tag:tag_1234567" => -1,
"folder:fol_2345678" => -1,
]

The client could use this information to quickly update any visible folder counts without having to re-query the API.

Finally, diffs are also provided at the 'All Channels' level (like above) and for individual channels. If there was a channel where the above folder was visible, the diff results would look something like so:

"diffs" => [
"tag:tag_1234567" => -1,
"folder:fol_2345678" => -1,
"channel:ch_4567890 folder:fol_2345678" => -1,
]
type Diff {
delta: Int
query: String!
}

Fields#

NameDescription
delta (Int) The difference in the count of conversations that now match this query.
query (String!) The query string representing a search or folder, for example.

Discount#

Represents a discount applied to the customer or subscription

Fetch all credit cards for the current account:

query CreditCardsQuery {
billing {
discount {
id
type
startAt
endAt
coupon {
id
duration
durationInMonths
maxRedemptions
name
percentOff
amountOff
timesRedeemed
valid
createdAt
}
}
}
}
type Discount {
coupon: Coupon!
endAt: DateTime
id: ID!
startAt: DateTime!
type: DiscountType!
}

Fields#

NameDescription
coupon (Coupon!) The coupon used to apply this discount.
endAt (DateTime) If the coupon has a duration of repeating, the date that this discount will end. If the coupon has a duration of once or forever, this attribute will be null.
id (ID!) The external id for this discount.
startAt (DateTime!) The date when this discount was applied.
type (DiscountType!) The type of discount being represented.

DraftConnection#

The connection type for Draft.

type DraftConnection {
edges: [DraftEdge]
nodes: [Draft]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([DraftEdge]) A list of edges.
nodes ([Draft]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

DraftDeletePayload#

Autogenerated return type of DraftDelete

type DraftDeletePayload {
clientMutationId: String
deletedDraftId: String
errors: [UserError!]!
success: Boolean!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedDraftId (String) The ID of the deleted draft.
errors ([UserError!]!) Errors related to user input.
success (Boolean!) True if the draft was deleted; false otherwise.

DraftEdge#

An edge in a connection.

type DraftEdge {
cursor: String!
node: Draft
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Draft) The item at the end of the edge.

DraftSavePayload#

Autogenerated return type of DraftSave

type DraftSavePayload {
clientMutationId: String
contextId: ID
draftId: ID!
draftType: String!
errors: [UserError!]!
payload: String
success: Boolean!
version: Int!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
contextId (ID) The ID of the context within the conversation.
draftId (ID!) The ID of the draft.
draftType (String!) The type of the draft.
errors ([UserError!]!) Errors related to user input.
payload (String) The payload of the draft as a schemaless string.
success (Boolean!) True if the draft was saved; false otherwise.
version (Int!) The version of the draft.

DraftUpsertPayload#

Autogenerated return type of DraftUpsert

type DraftUpsertPayload {
clientMutationId: String
draft: DraftTypeUnion
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
draft (DraftTypeUnion) The upserted draft.
errors ([UserError!]!) Errors related to user input.

EmailChannel#

A channel for email conversations.

To fetch your active mailboxes, you can issue this query:

query Channels {
channels {
nodes {
... on EmailChannel {
color
createdAt
forwardEmailAddress
fromName
id
name
signature
updatedAt
}
}
pageInfo {
hasNextPage
}
}
}

To fetch inactive mailboxes:

query Channels {
channels(filter: { state: UNCONFIRMED }) {
nodes {
... on EmailChannel {
id
name
}
}
}
}

To fetch accessible folders (paginated) for each of your mailboxes:

query Channels {
channels {
nodes {
... on EmailChannel {
id
name
folders {
nodes {
id
name
}
pageInfo {
hasNextPage
}
}
}
}
}
}

To fetch conversations in this mailbox, use the QueryRoot conversations field with a filter argument e.g.:

query Conversations {
conversations(filter: { channel_id: "ch_12345678" }) {
nodes {
... on Conversation {
id
number
}
}
pageInfo {
hasNextPage
}
}
}
type EmailChannel implements Node, Channel {
color: String!
conversationCount(state: [ConversationState!] = []): Int!
createdAt: DateTime!
email: String
folders(
after: String
before: String
first: Int = 0
last: Int = 0
filter: FolderFilter = "[object Object]"
orderBy: FolderOrder = "[object Object]"
): FolderConnection
forwardEmailAddress: String!
fromName: String!
id: ID!
name: String!
permittedAgents(
after: String
before: String
first: Int = 0
last: Int = 0
): AgentConnection!
position: Int!
signature: String
state: ChannelState!
tags(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TagFilter
orderBy: TagOrder
): TagConnection
type: ChannelType!
updatedAt: DateTime!
}

Channel

A channel is a source of incoming conversations. It dictates how messages in those conversations are sent and received.

For example, an EmailChannel is a channel where messages are sent as email. To fetch all of them:

query Channels {
channels {
nodes {
... on Channel {
__typename
id
name
conversationCount
}
}
}
}

By default channels are sorted by their user-defined row-order, called their position. To sort by name instead:

query Channels {
channels(orderBy: { field: NAME, direction: ASC }) {
nodes {
... on EmailChannel {
id
}
}
}
}

To find which agents have permission to view this channel:

query Channels {
channels {
nodes {
id
name
permittedAgents {
totalCount
nodes {
id
}
}
}
}
}

Fields#

NameDescription
color (String!) The color of the mailbox.
conversationCount (Int!) The count of conversations in the channel.
Arguments
state ([ConversationState!])
Filter by state.
createdAt (DateTime!) The date and time that the object was created.
email (String) The email address associated with the mailbox.
folders (FolderConnection) Lists all folders that are accessible to the authenticated agent. Each folder can be associated with one or more mailboxes.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (FolderFilter)
The fields by which to filter the results.
orderBy (FolderOrder)
The field and direction by which to order the results.
forwardEmailAddress (String!) The forwarding email address associated with the mailbox.
fromName (String!) The name that replies should be sent from.
id (ID!) The name of the channel.
permittedAgents (AgentConnection!) The agents permitted to access this channel.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
position (Int!) The position that the mailbox should appear at when listed.
signature (String) The default signature on outgoing messages from the mailbox.
state (ChannelState!) The state of the channel.
tags (TagConnection) Lists all tags.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TagFilter)
The fields by which to filter the results.
orderBy (TagOrder)
The field and direction by which to order the results.
type (ChannelType!) The communication type of the channel.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Channel A channel is a source of incoming conversations. It dictates how messages in those conversations are sent and received. For example, an.

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
}
}
}
type EmailConversation implements Node, Conversation {
assigned: Assignment
channel: Channel!
contact: Contact
counts: ConversationCounts!
createdAt: DateTime!
deletedAt: DateTime
drafts(
after: String
before: String
first: Int = 0
last: Int = 0
): DraftConnection
followers(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentFilter = "[object Object]"
orderBy: AgentOrder = "[object Object]"
): AgentConnection
id: ID!
lastUnansweredUserMessageAt: DateTime!
number: Int!
searchSummary: SearchSummary
snoozed: Snooze
starred: Boolean!
state: ConversationState!
stateUpdatedAt: DateTime
subject: String
summaryMessage: SummaryMessage
systemUpdatedAt: DateTime!
tags(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TagFilter
orderBy: TagOrder
): TagConnection
updatedAt: DateTime!
}

Conversation

A Groove conversation is a thread of messages (for example emails, chats, or notes) and associated actions or events (for example 'opened', 'snoozed', and 'assigned').

To fetch Messages/Ratings/StateChanges/etc. on a conversation, query the Events connection (on the QueryRoot) with the conversation ID.

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
}
}
}
}

To search conversations matching a specific keyword:

query Conversations {
conversations(filter: { keywords: "rad" }) {
edges {
node {
... on Conversation {
id
number
searchSummary {
author {
__typename
... on Agent {
email
role
}
... on Contact {
email
}
}
body
forwarded
note
}
}
}
}
}
}

Fields#

NameDescription
assigned (Assignment) The agents and/or teams that are assigned to the conversation.
channel (Channel!) The channel in which the conversation is happening.
contact (Contact) The primary contact associated with the conversation.
counts (ConversationCounts!) The statistics about the messages and interactions in the conversation.
createdAt (DateTime!) The date and time that the object was created.
deletedAt (DateTime) The date and time that the conversation was trashed.
drafts (DraftConnection) The current user's draft messages on the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
followers (AgentConnection) Lists all agents that are following the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentFilter)
The fields by which to filter the results.
orderBy (AgentOrder)
The field and direction by which to order the results.
id (ID!) The date and time of the last unanswered user message.
number (Int!) The ID of the conversation within the account.
searchSummary (SearchSummary) The comment that matched the given search keywords.
snoozed (Snooze) The agent that snoozed the conversation and when it is snoozed until.
starred (Boolean!) True if the conversation is starred; false otherwise.
state (ConversationState!) The state of the conversation.
stateUpdatedAt (DateTime) The date and time that the conversation state was last updated.
subject (String) The subject of the conversation.
summaryMessage (SummaryMessage) The conversation summary, which is usually the first MessageChange in the conversation.
systemUpdatedAt (DateTime!) The date and time that the conversation was last updated.
tags (TagConnection) Lists all tags.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TagFilter)
The fields by which to filter the results.
orderBy (TagOrder)
The field and direction by which to order the results.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Conversation A Groove conversation is a thread of messages.

EmailMarketingIntegration#

No description

type EmailMarketingIntegration {
id: ID!
lists(contactId: ID = 0): [EmailMarketingList!]!
type: EmailMarketingIntegrationType!
}

Fields#

NameDescription
id (ID!) The lists available for this integration.
Arguments
contactId (ID)
Filter out lists that the contact is already subscribed to.
type (EmailMarketingIntegrationType!) The email marketing integration type.

EmailMarketingIntegrationConnection#

The connection type for EmailMarketingIntegration.

type EmailMarketingIntegrationConnection {
edges: [EmailMarketingIntegrationEdge]
nodes: [EmailMarketingIntegration]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([EmailMarketingIntegrationEdge]) A list of edges.
nodes ([EmailMarketingIntegration]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

EmailMarketingIntegrationEdge#

An edge in a connection.

type EmailMarketingIntegrationEdge {
cursor: String!
node: EmailMarketingIntegration
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (EmailMarketingIntegration) The item at the end of the edge.

EmailMarketingList#

No description

type EmailMarketingList {
id: String!
name: String!
}

Fields#

NameDescription
id (String!) The ID of the email marketing list.
name (String!) The name of the email marketing list.

EmailMarketingSubscription#

No description

type EmailMarketingSubscription {
externalUrl: String
id: String!
listId: String!
listName: String!
subscribedAt: DateTime
}

Fields#

NameDescription
externalUrl (String) The external url of the email marketing subscription.
id (String!) The ID of the email marketing subscription.
listId (String!) The ID of the email marketing list.
listName (String!) The name of the email marketing list.
subscribedAt (DateTime) The date and time that the contact subscribed to the list.

EmailMarketingSubscriptionConnection#

The connection type for EmailMarketingSubscription.

type EmailMarketingSubscriptionConnection {
edges: [EmailMarketingSubscriptionEdge]
nodes: [EmailMarketingSubscription]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([EmailMarketingSubscriptionEdge]) A list of edges.
nodes ([EmailMarketingSubscription]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

EmailMarketingSubscriptionCreatePayload#

Autogenerated return type of EmailMarketingSubscriptionCreate

type EmailMarketingSubscriptionCreatePayload {
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

EmailMarketingSubscriptionDeletePayload#

Autogenerated return type of EmailMarketingSubscriptionDelete

type EmailMarketingSubscriptionDeletePayload {
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

EmailMarketingSubscriptionEdge#

An edge in a connection.

type EmailMarketingSubscriptionEdge {
cursor: String!
node: EmailMarketingSubscription
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (EmailMarketingSubscription) The item at the end of the edge.

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 (possibly using a Groove notification email), then Groove will register the agent's email response as a MessageFromEmailChange.

type EmailMessage implements Node, Message, Emailable {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
bcc(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection
body: String
bodyPlainText: String
cannedReply: CannedReply
cc(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection
channel: Channel!
createdAt: DateTime!
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
parts(
after: String
before: String
first: Int = 0
last: Int = 0
): EmailPartConnection!
sourceConversation: Conversation
summary: SummaryMessage!
to(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection!
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
bcc (RecipientConnection) The "Bcc" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
cc (RecipientConnection) The "Cc" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
parts (EmailPartConnection!) The email parts associated with this email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
to (RecipientConnection!) The "To" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Message An individual message, for example an incoming email, an email reply, or a note.
Emailable A message that is sent via email.

EmailPart#

No description

type EmailPart {
content: String!
type: BodyPartTypeEnum!
}

Fields#

NameDescription
content (String!) The HTML content.
type (BodyPartTypeEnum!) The part type.

EmailPartConnection#

The connection type for EmailPart.

type EmailPartConnection {
edges: [EmailPartEdge]
nodes: [EmailPart]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([EmailPartEdge]) A list of edges.
nodes ([EmailPart]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

EmailPartEdge#

An edge in a connection.

type EmailPartEdge {
cursor: String!
node: EmailPart
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (EmailPart) The item at the end of the edge.

EphemeralJobResult#

No description

type EphemeralJobResult implements BaseInterface {
state: EphemeralJobResultState
value: JSON
}

Fields#

NameDescription
state (EphemeralJobResultState) The state of the ephemeral job.
value (JSON) The value of the ephemeral job, if any exists.

Event#

No description

type Event implements Previewable {
actor: Actor
change: ChangeTypeUnion!
createdAt: DateTime!
id: ID!
preview: [Int!]
}

Fields#

NameDescription
actor (Actor) The person or thing that triggered the action.
change (ChangeTypeUnion!) The details of the change caused by the event.
createdAt (DateTime!) The date and time that the event was created.
id (ID!) The preview lines and their respective lengths.

Interfaces#

NameDescription
Previewable A preview is a list of integers representing the number of lines and the respective lengths of multi-line content, for example messages, merges, and ratings. It can be used to build a visual approximation of the content of the change while the full change is being fetched. An object implements.

EventConnection#

The connection type for Event.

type EventConnection {
edges: [EventEdge]
nodes: [Event]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([EventEdge]) A list of edges.
nodes ([Event]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

EventEdge#

An edge in a connection.

type EventEdge {
cursor: String!
node: Event
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Event) The item at the end of the edge.

EventGroupType#

A group of events associated with a conversation.

query EventGroups {
eventGroups(filter: "cnv_12345678") {
edges {
node {
id
collapsed
fromMerge
isNote
isForward
hasAttachments
actor {
__typename
... on Contact {
name
}
... on Agent {
name
email
}
}
summary {
body
}
events {
nodes {
id
change {
__typename
... on Message {
body
}
}
}
}
}
}
}
}
type EventGroupType {
actor: Actor!
changesetId: String!
collapsed: Boolean!
events(
after: String
before: String
first: Int = 0
last: Int = 0
): EventConnection!
fromMerge: Boolean!
hasAttachments: Boolean!
id: ID!
isForward: Boolean!
isNote: Boolean!
summary: SummaryMessage
}

Fields#

NameDescription
actor (Actor!) The person or thing that triggered the action.
changesetId (String!) A unique identifier for this event group, used for deep linking and message sharing.
collapsed (Boolean!) True if the event group is collapsed; false otherwise.
events (EventConnection!) The list of events in the event group; no events if collapsed.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
fromMerge (Boolean!) True if the event group comes from a merged conversation; false otherwise.
hasAttachments (Boolean!) True if the event group contains attachments; false otherwise.
id (ID!) True if the event group is a forward; false otherwise.
isNote (Boolean!) True if the event group is a note; false otherwise.
summary (SummaryMessage) A summary of the message in the event group.

EventGroupTypeConnection#

The connection type for EventGroupType.

type EventGroupTypeConnection {
edges: [EventGroupTypeEdge]
nodes: [EventGroupType]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([EventGroupTypeEdge]) A list of edges.
nodes ([EventGroupType]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

EventGroupTypeEdge#

An edge in a connection.

type EventGroupTypeEdge {
cursor: String!
node: EventGroupType
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (EventGroupType) The item at the end of the edge.

EventsShopifyCreatePayload#

Autogenerated return type of EventsShopifyCreate

type EventsShopifyCreatePayload {
clientMutationId: String
errors: [UserError!]!
event: Event
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
event (Event) The event that was created.

ExcludedDomain#

A domain that is excluded from being automatically created as a company.

To fetch all excluded domains:

query ExcludedDomains {
excludedDomains {
nodes {
id
domain
}
}
}
type ExcludedDomain {
domain: String!
id: ID!
}

Fields#

NameDescription
domain (String!) The excluded domain.

ExcludedDomainConnection#

The connection type for ExcludedDomain.

type ExcludedDomainConnection {
edges: [ExcludedDomainEdge]
nodes: [ExcludedDomain]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ExcludedDomainEdge]) A list of edges.
nodes ([ExcludedDomain]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ExcludedDomainCreatePayload#

Autogenerated return type of ExcludedDomainCreate

type ExcludedDomainCreatePayload {
clientMutationId: String
errors: [UserError!]!
excludedDomain: ExcludedDomain
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
excludedDomain (ExcludedDomain) The created excluded domain.

ExcludedDomainDeletePayload#

Autogenerated return type of ExcludedDomainDelete

type ExcludedDomainDeletePayload {
clientMutationId: String
deletedExcludedDomainId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedExcludedDomainId (ID) The ID of the deleted excluded domain.
errors ([UserError!]!) Errors related to user input.

ExcludedDomainEdge#

An edge in a connection.

type ExcludedDomainEdge {
cursor: String!
node: ExcludedDomain
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (ExcludedDomain) The item at the end of the edge.

ExcludedDomainUpdatePayload#

Autogenerated return type of ExcludedDomainUpdate

type ExcludedDomainUpdatePayload {
clientMutationId: String
errors: [UserError!]!
excludedDomain: ExcludedDomain
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
excludedDomain (ExcludedDomain) The updated excluded domain.

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
}
}
}
})
type FacebookConversation implements Node, Conversation {
assigned: Assignment
channel: Channel!
contact: Contact
counts: ConversationCounts!
createdAt: DateTime!
deletedAt: DateTime
drafts(
after: String
before: String
first: Int = 0
last: Int = 0
): DraftConnection
facebookId: String
followers(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentFilter = "[object Object]"
orderBy: AgentOrder = "[object Object]"
): AgentConnection
id: ID!
lastUnansweredUserMessageAt: DateTime!
number: Int!
searchSummary: SearchSummary
snoozed: Snooze
starred: Boolean!
state: ConversationState!
stateUpdatedAt: DateTime
subject: String
summaryMessage: SummaryMessage
systemUpdatedAt: DateTime!
tags(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TagFilter
orderBy: TagOrder
): TagConnection
updatedAt: DateTime!
}

Conversation

A Groove conversation is a thread of messages (for example emails, chats, or notes) and associated actions or events (for example 'opened', 'snoozed', and 'assigned').

To fetch Messages/Ratings/StateChanges/etc. on a conversation, query the Events connection (on the QueryRoot) with the conversation ID.

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
}
}
}
}

To search conversations matching a specific keyword:

query Conversations {
conversations(filter: { keywords: "rad" }) {
edges {
node {
... on Conversation {
id
number
searchSummary {
author {
__typename
... on Agent {
email
role
}
... on Contact {
email
}
}
body
forwarded
note
}
}
}
}
}
}

Fields#

NameDescription
assigned (Assignment) The agents and/or teams that are assigned to the conversation.
channel (Channel!) The channel in which the conversation is happening.
contact (Contact) The primary contact associated with the conversation.
counts (ConversationCounts!) The statistics about the messages and interactions in the conversation.
createdAt (DateTime!) The date and time that the object was created.
deletedAt (DateTime) The date and time that the conversation was trashed.
drafts (DraftConnection) The current user's draft messages on the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
facebookId (String) The external Facebook ID of the conversation.
followers (AgentConnection) Lists all agents that are following the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentFilter)
The fields by which to filter the results.
orderBy (AgentOrder)
The field and direction by which to order the results.
id (ID!) The date and time of the last unanswered user message.
number (Int!) The ID of the conversation within the account.
searchSummary (SearchSummary) The comment that matched the given search keywords.
snoozed (Snooze) The agent that snoozed the conversation and when it is snoozed until.
starred (Boolean!) True if the conversation is starred; false otherwise.
state (ConversationState!) The state of the conversation.
stateUpdatedAt (DateTime) The date and time that the conversation state was last updated.
subject (String) The subject of the conversation.
summaryMessage (SummaryMessage) The conversation summary, which is usually the first MessageChange in the conversation.
systemUpdatedAt (DateTime!) The date and time that the conversation was last updated.
tags (TagConnection) Lists all tags.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TagFilter)
The fields by which to filter the results.
orderBy (TagOrder)
The field and direction by which to order the results.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Conversation A Groove conversation is a thread of messages.

FacebookDraft#

No description

type FacebookDraft implements Draft {
agent: Agent!
assignment: Assignment
body: String!
contextId: ID
conversation: Conversation!
conversationId: ID!
createdAt: DateTime!
draftId: String
draftType: DraftType
id: ID!
lastSyncedAt: DateTime!
metadata: JSON!
payload: JSON
updatedAt: DateTime!
version: Int!
}

Fields#

NameDescription
agent (Agent!) The agent who created the draft.
assignment (Assignment) The agents and/or teams that are assigned to the draft.
body (String!) The draft body.
contextId (ID) The ID of the context within the conversation.
conversation (Conversation!) The conversation this draft belongs to.
conversationId (ID!) The conversation ID this draft belongs to.
createdAt (DateTime!) The date and time that the object was created.
draftId (String) The UUID used to identify the draft.
draftType (DraftType) The type of the draft.
id (ID!) The datetime when the draft was last synced.
metadata (JSON!) Metadata related to the draft.
payload (JSON) The payload of the draft, which is a schemaless JSON object.
updatedAt (DateTime!) The date and time that the object was last updated.
version (Int!) The draft version.

Interfaces#

NameDescription
Draft An object with timestamp fields for when it was created and last updated.

FacebookMessage#

A message sent to or received from Facebook.

type FacebookMessage implements Node, Message {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
body: String
bodyPlainText: String
cannedReply: CannedReply
channel: Channel!
createdAt: DateTime!
facebookId: String
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
sourceConversation: Conversation
summary: SummaryMessage!
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
facebookId (String) The external Facebook ID of the messsage.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Message An individual message, for example an incoming email, an email reply, or a note.

FeatureTemplateRule#

An automation rule feature template

type FeatureTemplateRule {
categories: [String!]!
description: String!
id: ID!
name: String!
personas: [String!]
planFeatures: [String!]!
popular: Boolean!
template: FeatureTemplateRuleData!
type: String!
}

Fields#

NameDescription
categories ([String!]!) Template Categories.
description (String!) Template Description.
id (ID!) Template Name.
personas ([String!]) Template Personas.
planFeatures ([String!]!) The plan features used in this template.
popular (Boolean!) True if template should be promoted; false otherwise.
template (FeatureTemplateRuleData!) The configuration for a rule template.
type (String!) Template Type.

FeatureTemplateRuleData#

The configuration for a rule template

type FeatureTemplateRuleData {
actions: [FeatureTemplateRuleDataAction!]!
conditions: [FeatureTemplateRuleDataCondition!]!
matchType: RuleMatchTypes!
name: String!
scheduleSettings: FeatureTemplateRuleScheduleSettings
scheduleType: ScheduleType
state: RuleState!
stopUpcoming: Boolean!
triggers: [FeatureTemplateRuleDataTrigger!]!
}

Fields#

NameDescription
actions ([FeatureTemplateRuleDataAction!]!) Lists the actions that the rule will execute.
conditions ([FeatureTemplateRuleDataCondition!]!) Lists the conditions that the rule uses to filter conversations.
matchType (RuleMatchTypes!) The match type of the Rule Conditions e.g. any, all.
name (String!) The name of the rule.
scheduleSettings (FeatureTemplateRuleScheduleSettings) The schedule type settings.
scheduleType (ScheduleType) The schedule of the rule.
state (RuleState!) The state of the rule.
stopUpcoming (Boolean!) True to stop upcoming rules; false otherwise.
triggers ([FeatureTemplateRuleDataTrigger!]!) List the triggers that invoke execution of the rule.

FeatureTemplateRuleDataAction#

Rule template action

type FeatureTemplateRuleDataAction {
toAgent: String
type: RuleActionType!
value: String
}

Fields#

NameDescription
toAgent (String) To agent.
type (RuleActionType!) The rule action type.
value (String) The action value.

FeatureTemplateRuleDataCondition#

A rule template condition

type FeatureTemplateRuleDataCondition {
operator: RuleConditionOperator!
param: RuleConditionParam!
value: String
}

Fields#

NameDescription
operator (RuleConditionOperator!) The logic operator to use, for example.
param (RuleConditionParam!) The conversation field to use.
value (String) The value to match against, for example.

FeatureTemplateRuleDataTrigger#

A rule template configuration trigger

type FeatureTemplateRuleDataTrigger {
type: RuleTriggerType!
}

Fields#

NameDescription
type (RuleTriggerType!) The rule trigger type.

FeatureTemplateRuleScheduleSettings#

The schedule settings configuration for a rule.

type FeatureTemplateRuleScheduleSettings {
day: Int
dayOfWeek: String
days: Int
seconds: Int
time: String
}

FeatureTemplates#

Features Templates

type FeatureTemplates {
rules: [FeatureTemplateRule!]
}

Fields#

NameDescription
rules ([FeatureTemplateRule!]) Rule Feature Templates.

File#

A file attached to a contact or company.

type File {
contentDisposition: CustomFieldFileContentDisposition!
contentType: String!
fileName: String!
fileSize: Int!
url: String!
}

Fields#

NameDescription
contentDisposition (CustomFieldFileContentDisposition!) The file content disposition.
contentType (String!) The file content type.
fileName (String!) The file name.
fileSize (Int!) The size of the file.
url (String!) The URL of the file.

Folder#

A folder contains a set of conditions that allow for smart filtering of conversations.

For example, to show only your active conversations, you can create a folder called "Mine" which contains these two conditions:

  1. "Assigned agent" is "Current User".
  2. "Status" is "Opened".

By default, folders apply to, and are visible across, all of your channels. However, you can configure them to be only visible to selected channels, agents, or teams.

To fetch all folders and their conditions:

query Folders {
folders {
nodes {
agents {
nodes {
id
email
}
pageInfo {
hasNextPage
}
}
conditions(orderBy: { field: CREATED_AT, direction: DESC }) {
nodes {
id
param
operator
value
}
pageInfo {
hasNextPage
}
}
conversationCount
createdAt
default
description
displayCountWhenInactive
hideIfZeroConversations
id
locked
matchType
name
position
state
teams {
nodes {
id
name
}
pageInfo {
hasNextPage
}
}
updatedAt
}
}
}

To find associated conversations in a folder, use the QueryRoot conversations with a filter argument:

conversations(filter: { folderId: "fol_1234567" }) { ...

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

query Folders {
folders(orderBy: { field: NAME, direction: ASC }) {
nodes {
id
}
}
}

To find conversations in a folder for a specific channel:

query Folders {
folders {
nodes {
id
conversations(channel: "ch_12345678") {
nodes {
... on Conversation {
id
number
}
}
pageInfo {
hasNextPage
}
}
}
}
}
type Folder implements Node, Timestamped {
agents(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentFilter = "[object Object]"
orderBy: AgentOrder = "[object Object]"
): AgentConnection
channel: Channel!
channels(
after: String
before: String
first: Int = 0
last: Int = 0
filter: ChannelFilter = "[object Object]"
orderBy: ChannelOrder = "[object Object]"
): ChannelConnection!
conditions(
after: String
before: String
first: Int = 0
last: Int = 0
id: ID = 0
orderBy: ConditionOrder = "[object Object]"
): ConditionConnection
conversationCount: Int!
createdAt: DateTime!
default: Boolean!
description: String
displayCountWhenInactive: Boolean!
hideIfZeroConversations: Boolean!
id: ID!
locked: Boolean!
matchType: FolderMatchTypes!
name: String!
position: Int!
state: FolderState!
teams(
after: String
before: String
first: Int = 0
last: Int = 0
orderBy: TeamOrder = "[object Object]"
): TeamConnection
type: FolderType!
updatedAt: DateTime!
}

Fields#

NameDescription
agents (AgentConnection) Lists the agents that can see the folder. An empty lists implies only certain teams have visibility (see the.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentFilter)
The fields by which to filter the results.
orderBy (AgentOrder)
The field and direction by which to order the results.
channel (Channel!) The channel that this folder is in (in the current context.
channels (ChannelConnection!) Lists all channels.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (ChannelFilter)
The fields by which to filter the results.
orderBy (ChannelOrder)
The field and direction by which to order the results.
conditions (ConditionConnection) Lists the conditions that the folder uses to filter conversations.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
id (ID)
The ID of the specific condition to get.
orderBy (ConditionOrder)
The field and direction by which to order the results.
conversationCount (Int!) The number of conversations that are in this folder (in the current context.
createdAt (DateTime!) The date and time that the object was created.
default (Boolean!) True if the folder is automatically created by Groove; false otherwise.
description (String) A description of the folder.
displayCountWhenInactive (Boolean!) True if counts in the side navigation are visible when the folder is inactive; false otherwise.
hideIfZeroConversations (Boolean!) True if folder in the side navigation is hidden when there is zero conversations; false otherwise.
id (ID!) True if the folder is protected; false otherwise.
matchType (FolderMatchTypes!) The match type of the folder conditions.
name (String!) The name of the folder.
position (Int!) The position that the folder should appear in when listed.
state (FolderState!) The state of the folder.
teams (TeamConnection) Lists the teams that can see the folder. An empty lists implies only certain agents have visibility (see the.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
orderBy (TeamOrder)
The field and direction by which to order the results.
type (FolderType!) The type of the folder.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

FolderConnection#

The connection type for Folder.

type FolderConnection {
edges: [FolderEdge]
nodes: [Folder]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([FolderEdge]) A list of edges.
nodes ([Folder]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

FolderEdge#

An edge in a connection.

type FolderEdge {
cursor: String!
node: Folder
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Folder) The item at the end of the edge.

FollowerAdded#

A conversation is followed by an agent.

type FollowerAdded implements Timestamped {
createdAt: DateTime!
follower: Agent!
id: ID!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
follower (Agent!) The agent that started following the conversation.
id (ID!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

FollowerRemoved#

A conversation is unfollowed by an agent.

type FollowerRemoved implements Timestamped {
createdAt: DateTime!
follower: Agent!
id: ID!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
follower (Agent!) The agent that stopped following the conversation.
id (ID!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

ForwardedMessage#

A message forwarded by an agent from Groove to a third party.

type ForwardedMessage implements Node, Message, Delayable, Emailable {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
bcc(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection
body: String
bodyPlainText: String
cannedReply: CannedReply
cc(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection
channel: Channel!
createdAt: DateTime!
deliverBy: DateTime
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
sourceConversation: Conversation
summary: SummaryMessage!
to(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection!
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
bcc (RecipientConnection) The "Bcc" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
cc (RecipientConnection) The "Cc" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
deliverBy (DateTime) The date and time that the message was sent. Used to allow for undoing send.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
to (RecipientConnection!) The "To" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Message An individual message, for example an incoming email, an email reply, or a note.
Delayable A message with delayed deliveries.
Emailable A message that is sent via email.

Import#

No description

type Import {
id: ID!
payed: Boolean!
redirectUrl: String!
status: String
token: String!
}

Fields#

NameDescription
id (ID!) The ID of the import.
payed (Boolean!) Was import marked for payed migration.
redirectUrl (String!) URL for import2 Status.
status (String) The status of the import.
token (String!) The token of the import.

Import2CreatePayload#

Autogenerated return type of Import2Create

type Import2CreatePayload {
clientMutationId: String
errors: [UserError!]!
redirectUrl: String!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
redirectUrl (String!) The URL that will open Import2 flow.

ImportConnection#

The connection type for Import.

type ImportConnection {
edges: [ImportEdge]
nodes: [Import]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ImportEdge]) A list of edges.
nodes ([Import]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ImportEdge#

An edge in a connection.

type ImportEdge {
cursor: String!
node: Import
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Import) The item at the end of the edge.

ImportMutationPayload#

Autogenerated return type of ImportMutation

type ImportMutationPayload {
clientMutationId: String
errors: [UserError!]!
jid: String
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
jid (String) The ID of the job that will import the messages.

IntegrationAdded#

An integration was added to a conversation.

type IntegrationAdded implements Timestamped {
createdAt: DateTime!
externalId: ID!
id: ID!
provider: IntegrationProvider!
title: String!
updatedAt: DateTime!
url: Url!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
externalId (ID!) The external identifier of this integration.
id (ID!) The provider of the integration.
title (String!) The title of the integration URL.
updatedAt (DateTime!) The date and time that the object was last updated.
url (Url!) The external integration URL.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

IntegrationConnection#

The connection type for Integration.

type IntegrationConnection {
edges: [IntegrationEdge]
nodes: [Integration]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([IntegrationEdge]) A list of edges.
nodes ([Integration]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

IntegrationDeleteByProviderPayload#

Autogenerated return type of IntegrationDeleteByProvider

type IntegrationDeleteByProviderPayload {
clientMutationId: String
deletedIntegrationIds: [ID!]
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedIntegrationIds ([ID!]) The IDs of the integrations that were deleted.
errors ([UserError!]!) Errors related to user input.

IntegrationDeletePayload#

Autogenerated return type of IntegrationDelete

type IntegrationDeletePayload {
clientMutationId: String
deletedIntegrationId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedIntegrationId (ID) The ID of the integration that was deleted.
errors ([UserError!]!) Errors related to user input.

IntegrationEdge#

An edge in a connection.

type IntegrationEdge {
cursor: String!
node: Integration
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Integration) The item at the end of the edge.

IntegrationExternalChange#

A change to a conversation was triggered by a linked integration.

type IntegrationExternalChange implements Timestamped {
action: String!
createdAt: DateTime!
externalId: ID!
id: ID!
provider: IntegrationProvider!
updatedAt: DateTime!
}

Fields#

NameDescription
action (String!) The details about the change (JSON encoded.
createdAt (DateTime!) The date and time that the object was created.
externalId (ID!) The external identifier of this integration.
id (ID!) The provider of the integration.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

IntegrationJiraServerCreatePayload#

Autogenerated return type of IntegrationJiraServerCreate

type IntegrationJiraServerCreatePayload {
clientMutationId: String
errors: [UserError!]!
integration: JiraServerIntegration
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
integration (JiraServerIntegration) The jira server integration that was created.

IntegrationProviderSettingsUpdatePayload#

Autogenerated return type of IntegrationProviderSettingsUpdate

type IntegrationProviderSettingsUpdatePayload {
clientMutationId: String
errors: [UserError!]!
integrations(
after: String
before: String
first: Int = 0
last: Int = 0
): IntegrationConnection!
settings: IntegrationSettings
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
integrations (IntegrationConnection!) The integrations that were updated.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
settings (IntegrationSettings) The integration settings that were created/updated.

IntegrationRemoved#

An integration was removed from a conversation.

type IntegrationRemoved implements Timestamped {
conversation: Conversation!
createdAt: DateTime!
externalId: ID!
id: ID!
provider: IntegrationProvider!
title: String!
updatedAt: DateTime!
url: Url!
}

Fields#

NameDescription
conversation (Conversation!) The associated conversation.
createdAt (DateTime!) The date and time that the object was created.
externalId (ID!) The external identifier of this integration.
id (ID!) The provider of the integration.
title (String!) The title of the integration URL.
updatedAt (DateTime!) The date and time that the object was last updated.
url (Url!) The external integration URL.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

IntegrationSettings#

No description

type IntegrationSettings {
provider: IntegrationProvider!
settings: JSON!
}

Fields#

NameDescription
provider (IntegrationProvider!) The integration provider.
settings (JSON!) The settings for the integration.

IntegrationSettingsUpdatePayload#

Autogenerated return type of IntegrationSettingsUpdate

type IntegrationSettingsUpdatePayload {
clientMutationId: String
errors: [UserError!]!
integration: IntegrationUnion!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
integration (IntegrationUnion!) The integration that was updated.

IntegrationUnionConnection#

The connection type for IntegrationUnion.

type IntegrationUnionConnection {
edges: [IntegrationUnionEdge]
nodes: [IntegrationUnion]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([IntegrationUnionEdge]) A list of edges.
nodes ([IntegrationUnion]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

IntegrationUnionEdge#

An edge in a connection.

type IntegrationUnionEdge {
cursor: String!
node: IntegrationUnion
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (IntegrationUnion) The item at the end of the edge.

IpAddress#

An IP address.

type IpAddress {
accuracy: Float
address: String!
city: String
country: String
domain: String
isp: String
latitude: Float
longitude: Float
organization: String
postalCode: String
subdivisions: String
timeZone: String
}

Fields#

NameDescription
accuracy (Float) The accuracy of the IP address geolocation.
address (String!) The IP address.
city (String) The city of the IP address geolocation.
country (String) The country of the IP address geolocation.
domain (String) The domain name of the ISP.
isp (String) The ISP associated with the IP address.
latitude (Float) The latitude of the IP address geolocation.
longitude (Float) The longitude of the IP address geolocation.
organization (String) The organization associated with the IP address.
postalCode (String) The postal code of the IP address geolocation.
subdivisions (String) The time zone of the IP address geolocation.

JiraServerIntegration#

No description

type JiraServerIntegration implements Integration {
agent: Agent!
createdAt: DateTime!
id: ID!
legacyId: String!
provider: IntegrationProvider!
settings: IntegrationSettings!
uid: String
updatedAt: DateTime!
url: String!
username: String!
}

Fields#

NameDescription
agent (Agent!) The agent this integration is connected to.
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.
url (String!) The url.
username (String!) The username.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

KbArticleDeletePayload#

Autogenerated return type of KbArticleDelete

type KbArticleDeletePayload {
clientMutationId: String
deletedArticleId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedArticleId (ID) The ID of the KB article that was deleted.
errors ([UserError!]!) Errors related to user input.

KbCategory#

A category from a Knowledge Base. Each category can contain multiple articles.

To fetch multiple Knowledge Bases with related categories:

query KbsWithCategories {
knowledgeBases {
nodes {
id
categories {
nodes {
articles {
nodes {
id
}
}
createdAt
coverImageUrl
id
updatedAt
... on Publishable {
author {
id
email
}
description
featured
meta {
description
robots
}
openGraph {
description
imageUrl
title
}
pageTitle
position
publishedAt
slug
state
title
updater {
id
email
}
}
}
}
}
}
}
type KbCategory implements Node, Publishable, Timestamped {
articles(
after: String
before: String
first: Int = 0
last: Int = 0
): ArticleConnection!
author: Agent
coverImageUrl: Url
createdAt: DateTime!
description: String
featured: Boolean!
id: ID!
knowledgeBase: KnowledgeBase!
meta: Meta
openGraph: OpenGraph
pageTitle: String
position: Int!
publishedAt: DateTime
slug: String
state: PublishState!
title: String
updatedAt: DateTime!
updater: Agent
}

Publishable

An object that can be published, for example Knowledge Base categories or articles.

For example:

... on Publishable {
author {
id
email
}
description
featured
meta {
description
robots
}
openGraph {
description
imageUrl
title
}
pageTitle
position
publishedAt
slug
state
title
updater {
id
email
}
}

Fields#

NameDescription
articles (ArticleConnection!) The articles assigned to the category.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Agent) The author of the object.
coverImageUrl (Url) The URL of the category cover image.
createdAt (DateTime!) The date and time that the object was created.
description (String) A description of the object.
featured (Boolean!) True if the object is set to be featured; false otherwise.
id (ID!) The Knowledge Base that the category belongs to to.
meta (Meta) The meta data of the object.
openGraph (OpenGraph) The Open Graph information of the object.
pageTitle (String) The HTML page title of the object.
position (Int!) The position that the article should appear in when listed.
publishedAt (DateTime) The date and time that the object was last published.
slug (String) The URL slug of the object.
state (PublishState!) The state of the object.
title (String) The title of the object.
updatedAt (DateTime!) The date and time that the object was last updated.
updater (Agent) The agent that last updated the object.

Interfaces#

NameDescription
Node An object with an ID.
Publishable An object that can be published, for example Knowledge Base categories or articles. For example.
Timestamped An object with timestamp fields for when it was created and last updated.

KbCategoryConnection#

The connection type for KbCategory.

type KbCategoryConnection {
edges: [KbCategoryEdge]
nodes: [KbCategory]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([KbCategoryEdge]) A list of edges.
nodes ([KbCategory]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

KbCategoryEdge#

An edge in a connection.

type KbCategoryEdge {
cursor: String!
node: KbCategory
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (KbCategory) The item at the end of the edge.

KbSlugAvailabilityPayload#

Autogenerated return type of KbSlugAvailability

type KbSlugAvailabilityPayload {
available: Boolean!
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
available (Boolean!) Whether the slug is available or not.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

KbSubdomainAvailabilityPayload#

Autogenerated return type of KbSubdomainAvailability

type KbSubdomainAvailabilityPayload {
available: Boolean!
clientMutationId: String
errors: [UserError!]!
suggestion: String
}

Fields#

NameDescription
available (Boolean!) Whether the subdomain is available or not.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
suggestion (String) Suggestion of subdomain when provided one is not available.

KnowledgeBase#

A Groove Knowledge Base, containing categories and articles.

To fetch all Knowledge Bases on the account:

query Kbs {
knowledgeBases {
nodes {
createdAt
customDomain {
domain
expiresAt
letsencrypt
status
valid
}
customScriptsEnabled
enabled
gaAnonymized
gaCode
id
ipAddresses
ipAddressesEnabled
language
meta {
description
robots
}
openGraph {
description
imageUrl
title
}
pageTitle
password
passwordEnabled
primary
ratingsType
redirectLegacy
siteUrl
subdomain
subdomainUrl
title
updatedAt
newWidgetId
}
}

To fetch related articles:

query KbsWithArticles {
knowledgeBases {
nodes {
id
articles {
totalCount
totalPageCount
edges {
node {
attachments {
nodes {
id
}
}
body
category {
id
}
createdAt
deletedAt
id
ratings {
nodes {
id
}
}
ratingsType
relatedArticles {
nodes {
id
}
}
tags
updatedAt
... on Publishable {
author {
id
email
}
description
featured
meta {
description
robots
}
openGraph {
description
imageUrl
title
}
pageTitle
position
publishedAt
slug
state
title
updater {
id
email
}
}
}
}
}
}
}
}

To fetch related Knowledge Base categories:

query KbsWithCategories {
knowledgeBases {
nodes {
id
categories {
nodes {
articles {
nodes {
id
}
}
createdAt
coverImageUrl
id
updatedAt
... on Publishable {
author {
id
email
}
description
featured
meta {
description
robots
}
openGraph {
description
imageUrl
title
}
pageTitle
position
publishedAt
slug
state
title
updater {
id
email
}
}
}
}
}
}
}
type KnowledgeBase implements Node, Timestamped {
articles(
after: String
before: String
first: Int = 0
last: Int = 0
): ArticleConnection!
categories(
after: String
before: String
first: Int = 0
last: Int = 0
): KbCategoryConnection!
createdAt: DateTime!
customDomain: CustomDomain!
customScriptsEnabled: Boolean
enabled: Boolean!
gaAnonymized: Boolean
gaCode: String
gaVersion: Int
id: ID!
ipAddresses: [String!]
ipAddressesEnabled: Boolean!
language: String
meta: Meta
newWidgetId: ID
openGraph: OpenGraph
pageTitle: String
password: String
passwordEnabled: Boolean!
primary: Boolean!
publishedTheme: Theme!
ratingsType: KbRating!
redirectLegacy: Boolean!
siteUrl: Url!
subdomain: String!
subdomainUrl: Url!
theme: Theme!
title: String
updatedAt: DateTime!
}

Fields#

NameDescription
articles (ArticleConnection!) The articles in the Knowledge Base.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
categories (KbCategoryConnection!) The categories in the Knowledge Base.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
createdAt (DateTime!) The date and time that the object was created.
customDomain (CustomDomain!) The custom domain settings of the Knowledge Base.
customScriptsEnabled (Boolean) True if the Knowledge Base can use custom scripts; false otherwise.
enabled (Boolean!) True if the Knowledge Base is accessible; false otherwise.
gaAnonymized (Boolean) True if the Google Analytics tracking anonymizes IP addresses; false otherwise.
gaCode (String) The Google Analytics tracking code for the Knowledge Base.
gaVersion (Int) The Google Analytics tracking code version.
id (ID!) The list of whitelisted IP addresses for the Knowledge Base.
ipAddressesEnabled (Boolean!) True if the Knowledge Base is protected with IP whitelisting; false otherwise.
language (String) The RFC 5646 language code of the Knowledge Base.
meta (Meta) The meta data of the Knowledge Base.
newWidgetId (ID) The ID of the widget that should be displayed in the KB.
openGraph (OpenGraph) The Open Graph information of the Knowledge Base.
pageTitle (String) The HTML page title of the object.
password (String) The password of the Knowledge Base.
passwordEnabled (Boolean!) True if the Knowledge Base is protected with a password; false otherwise.
primary (Boolean!) True if the Knowledge Base is the primary Knowledge Base; false otherwise.
publishedTheme (Theme!) The published theme of the Knowledge Base.
ratingsType (KbRating!) The type of the Knowledge Base ratings.
redirectLegacy (Boolean!) True if the legacy Knowledge Base redirects to this one; false otherwise.
siteUrl (Url!) The base URL of the Knowledge Base.
subdomain (String!) The subdomain of the Knowledge Base.
subdomainUrl (Url!) The subdomain URL of the Knowledge Base.
theme (Theme!) The current theme of the Knowledge Base.
title (String) The title of the Knowledge Base.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

KnowledgeBaseConnection#

The connection type for KnowledgeBase.

type KnowledgeBaseConnection {
edges: [KnowledgeBaseEdge]
nodes: [KnowledgeBase]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([KnowledgeBaseEdge]) A list of edges.
nodes ([KnowledgeBase]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

KnowledgeBaseEdge#

An edge in a connection.

type KnowledgeBaseEdge {
cursor: String!
node: KnowledgeBase
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (KnowledgeBase) The item at the end of the edge.

Link#

A text link.

type Link {
link: String!
text: String
}

Fields#

NameDescription
link (String!) The URL of the link.
text (String) The displayed text of the link.

LoginPayload#

Autogenerated return type of Login

type LoginPayload {
authState: AuthState!
clientMutationId: String
credentials: Credentials
errors: [UserError!]!
otpChallenge: Boolean
otpIdentifier: String
user: Agent
}

Fields#

NameDescription
authState (AuthState!) A unique identifier for the client performing the mutation.
credentials (Credentials) Errors related to user input.

MessageMoved#

A message was moved from one conversation to start another.

type MessageMoved {
destination: Conversation
id: ID!
message: Message!
}

Fields#

NameDescription
destination (Conversation) The conversation the message was moved to.
id (ID!) The message that was moved.

Meta#

The meta data fields for a Knowledge Base.

type Meta {
description: String
robots: String!
}

Fields#

NameDescription
description (String) The meta description.
robots (String!) The meta robots.

MobileNotificationPreferencesUpsertPayload#

Autogenerated return type of MobileNotificationPreferencesUpsert

type MobileNotificationPreferencesUpsertPayload {
agentPreferences(
after: String
before: String
first: Int = 0
last: Int = 0
): AgentPreferenceConnection!
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
agentPreferences (AgentPreferenceConnection!) The agent preferences.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

Money#

A amount with the linked defined currency.

type Money {
amount: Float!
currencyCode: String
}

Fields#

NameDescription
amount (Float!) The amount.
currencyCode (String) The ISO currency code.

NewWidget#

No description

type NewWidget {
channelColor: String!
channelType: WidgetChannelType!
createdAt: DateTime!
hasAccess: Boolean
id: ID!
kind: WidgetKind
name: String!
status: WidgetStatus
updatedAt: DateTime!
}

Fields#

NameDescription
channelColor (String!) Thw widget color.
channelType (WidgetChannelType!) The widget channel type.
createdAt (DateTime!) The date and time that the widget was created.
hasAccess (Boolean) True if the current user has access to the widget; false otherwise.
id (ID!) The widget kind.
name (String!) The widget name.
status (WidgetStatus) The widget status.
updatedAt (DateTime!) The date and time that the widget was updated.

NewWidgetConnection#

The connection type for NewWidget.

type NewWidgetConnection {
edges: [NewWidgetEdge]
nodes: [NewWidget]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([NewWidgetEdge]) A list of edges.
nodes ([NewWidget]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

NewWidgetEdge#

An edge in a connection.

type NewWidgetEdge {
cursor: String!
node: NewWidget
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (NewWidget) The item at the end of the edge.

Note#

A message created by an agent in Groove, visible only to other agents.

type Note implements Node, Message {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
body: String
bodyPlainText: String
cannedReply: CannedReply
channel: Channel!
createdAt: DateTime!
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
sourceConversation: Conversation
summary: SummaryMessage!
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Message An individual message, for example an incoming email, an email reply, or a note.

NoteDraft#

No description

type NoteDraft implements Draft {
agent: Agent!
assignment: Assignment
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection!
body: String!
contextId: ID
conversation: Conversation!
conversationId: ID!
createdAt: DateTime!
draftId: String
draftType: DraftType
id: ID!
lastSyncedAt: DateTime!
metadata: JSON!
payload: JSON
updatedAt: DateTime!
version: Int!
}

Fields#

NameDescription
agent (Agent!) The agent who created the draft.
assignment (Assignment) The agents and/or teams that are assigned to the draft.
attachments (AttachmentConnection!) All attachments on this draft.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
body (String!) The draft body.
contextId (ID) The ID of the context within the conversation.
conversation (Conversation!) The conversation this draft belongs to.
conversationId (ID!) The conversation ID this draft belongs to.
createdAt (DateTime!) The date and time that the object was created.
draftId (String) The UUID used to identify the draft.
draftType (DraftType) The type of the draft.
id (ID!) The datetime when the draft was last synced.
metadata (JSON!) Metadata related to the draft.
payload (JSON) The payload of the draft, which is a schemaless JSON object.
updatedAt (DateTime!) The date and time that the object was last updated.
version (Int!) The draft version.

Interfaces#

NameDescription
Draft An object with timestamp fields for when it was created and last updated.

OauthCredentials#

No description

type OauthCredentials implements Node, Timestamped {
accessToken: String!
createdAt: DateTime!
expiresAt: DateTime
id: ID!
provider: String!
refreshToken: String
uid: String!
updatedAt: DateTime!
}

Fields#

NameDescription
accessToken (String!) The access token.
createdAt (DateTime!) The date and time that the object was created.
expiresAt (DateTime) The date and time when the access token expires.
id (ID!) The provider that generated this access token.
refreshToken (String) The refresh token.
uid (String!) The external id linked to this access token.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

OauthCredentialsConnection#

The connection type for OauthCredentials.

type OauthCredentialsConnection {
edges: [OauthCredentialsEdge]
nodes: [OauthCredentials]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([OauthCredentialsEdge]) A list of edges.
nodes ([OauthCredentials]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

OauthCredentialsEdge#

An edge in a connection.

type OauthCredentialsEdge {
cursor: String!
node: OauthCredentials
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (OauthCredentials) The item at the end of the edge.

OpenGraph#

The Open Graph fields for a Knowledge Base.

type OpenGraph {
description: String
imageUrl: Url
title: String
}

Fields#

NameDescription
description (String) The Open Graph description.
imageUrl (Url) The Open Graph image URL.
title (String) The Open Graph title.

PageInfo#

Information about pagination in a connection.

type PageInfo {
endCursor: String
hasNextPage: Boolean!
hasPreviousPage: Boolean!
startCursor: String
}

Fields#

NameDescription
endCursor (String) When paginating forwards, the cursor to continue.
hasNextPage (Boolean!) When paginating forwards, are there more items.
hasPreviousPage (Boolean!) When paginating backwards, are there more items.
startCursor (String) When paginating backwards, the cursor to continue.

PageView#

An instance of a page being loaded in browser by a visitor.

type PageView {
id: String
ipAddress: IpAddress
language: String
occurredAt: String
referrer: ReferrerUrl
timeOnPage: Float
title: String
url: UrlStruct!
userAgent: UserAgent
}

Fields#

NameDescription
id (String) A unique identifier for the page view.
ipAddress (IpAddress) The IP address of the visitor.
language (String) The browser language set by the visitor.
occurredAt (String) The date and time that the page view took place.
referrer (ReferrerUrl) The page view referrer.
timeOnPage (Float) The total time spent on the page by the visitor.
title (String) The title of the page being loaded.
url (UrlStruct!) The URL of the page being loaded.
userAgent (UserAgent) The visitor's user agent.

Plan#

Represents all the plans currently added to the groove account

Fetch all plans for the current account:

query PlansQuery {
billing {
plans {
id
createdAt
expiresAt
externalId
quantity
state
updatedAt
pricing {
id
annual
externalAnnualPriceId
externalMonthlyPriceId
minimumQuantity
monthly
name
pricingModel
trialAvailable
type
usageFrom
version
addonPricingIds
features {
name
value
}
}
}
}
}
type Plan {
createdAt: DateTime!
expiresAt: DateTime
externalId: String!
id: ID!
pricing: Pricing!
quantity: Int
state: PlanState!
updatedAt: DateTime
}

Fields#

NameDescription
createdAt (DateTime!) The date and time when the plan was created.
expiresAt (DateTime) The date and time when the plan expires.
externalId (String!) Unique identifier for this plan in 3rd party systems like stripe and shopify.
id (ID!) The pricing connected to this plan.
quantity (Int) The current billed quantity.
state (PlanState!) The state of this plan in the 3rd party system.
updatedAt (DateTime) The date and time when the plan was last updated.

Platform#

No description

type Platform {
family: String
version: String
}

Pricing#

Represents pricing that can be added to a groove subscription to enable features or usage on the account

Fetch all possible fields for the current account:

query PricingQuery {
billing {
pricings {
id
annual
externalAnnualPriceId
externalMonthlyPriceId
minimumQuantity
monthly
name
pricingModel
trialAvailable
type
usageFrom
version
addonPricingIds
features {
name
value
}
}
}
}

Fetch all possible fields for and all plans:

query PricingQuery {
billing {
pricings(showAll: true) {
id
annual
externalAnnualPriceId
externalMonthlyPriceId
minimumQuantity
monthly
name
pricingModel
trialAvailable
type
usageFrom
version
addonPricingIds
features {
name
value
}
}
}
}
type Pricing {
active: Boolean!
addonPricingIds: [String!]!
annual: Int!
externalAnnualPriceId: String!
externalMonthlyPriceId: String!
features: [BillingFeatureType!]!
id: String!
minimumQuantity: Int!
monthly: Int!
name: String!
pricingModel: PricingModel!
trialAvailable: Boolean!
type: PricingType!
usageFrom: PricingUsageFrom!
version: String!
}

Fields#

NameDescription
active (Boolean!) Is this pricing available.
addonPricingIds ([String!]!) The supported addon pricings for this pricing.
annual (Int!) The annual amount in cents.
externalAnnualPriceId (String!) Unique identifier for the annual variation of this pricing in 3rd party systems like stripe and shopify.
externalMonthlyPriceId (String!) Unique identifier for the monthly variation of this pricing in 3rd party systems like stripe and shopify.
features ([BillingFeatureType!]!) The raw URL.
id (String!) Unique identifier.
minimumQuantity (Int!) The minimum quantity allowed.
monthly (Int!) The monthly amount in cents.
name (String!) The display name for this pricing.
pricingModel (PricingModel!) The pricing model.
trialAvailable (Boolean!) Is this pricing available to trial.
type (PricingType!) The pricing type.
usageFrom (PricingUsageFrom!) The quantity source.
version (String!) The pricing version.

PushToken#

No description

type PushToken implements Timestamped {
createdAt: DateTime!
id: ID!
notificationCount: Int!
token: String!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The total notifications that have been recieved since the app was last opened.
token (String!) The token.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

PushTokenClearNotificationCountPayload#

Autogenerated return type of PushTokenClearNotificationCount

type PushTokenClearNotificationCountPayload {
clientMutationId: String
errors: [UserError!]!
pushToken: PushToken!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
pushToken (PushToken!) The push token that was updated.

PushTokenConnection#

The connection type for PushToken.

type PushTokenConnection {
edges: [PushTokenEdge]
nodes: [PushToken]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([PushTokenEdge]) A list of edges.
nodes ([PushToken]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

PushTokenCreatePayload#

Autogenerated return type of PushTokenCreate

type PushTokenCreatePayload {
clientMutationId: String
errors: [UserError!]!
pushToken: PushToken
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
pushToken (PushToken) The push token that was created.

PushTokenDeletePayload#

Autogenerated return type of PushTokenDelete

type PushTokenDeletePayload {
clientMutationId: String
deletedPushTokenId: ID
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedPushTokenId (ID) The ID of the deleted push token.
errors ([UserError!]!) Errors related to user input.

PushTokenEdge#

An edge in a connection.

type PushTokenEdge {
cursor: String!
node: PushToken
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (PushToken) The item at the end of the edge.

QueryRoot#

The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start.

CHANGELOG

2023-12

  • [NEW] billing namespace

2020-01

  • [NEW] mailboxes now accessible via channels
type QueryRoot implements CompaniesField, ContactsField {
account: Account
agentPreferences(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentPreferencesFilterInput
): AgentPreferenceConnection
agents(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentFilter = "[object Object]"
orderBy: AgentOrder = "[object Object]"
): AgentConnection
aiConversationSuggestions(
after: String
before: String
first: Int = 0
last: Int = 0
filter: SuggestionFilterInput!
): AiSuggestionConnection
articles(
after: String
before: String
first: Int = 0
last: Int = 0
filter: ArticleFilter = "[object Object]"
orderBy: ArticleOrder = "[object Object]"
): ArticleConnection!
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AttachmentsFilterInput
): ConversationAttachmentConnection
billing: BillingType
cannedReplies(
after: String
before: String
first: Int = 0
last: Int = 0
filter: CannedReplyFilter = "[object Object]"
orderBy: CannedReplyOrder = "[object Object]"
): CannedReplyConnection
cannedReplyCategories(
after: String
before: String
first: Int = 0
last: Int = 0
orderBy: CategoryOrder = "[object Object]"
): CannedReplyCategoryConnection
channels(
after: String
before: String
first: Int = 0
last: Int = 0
filter: ChannelFilter = "[object Object]"
orderBy: ChannelOrder = "[object Object]"
): ChannelConnection!
companies(
after: String
before: String
first: Int = 0
last: Int = 0
filter: CompanyFilter
orderBy: CompanyOrder = "[object Object]"
): CompanyConnection
contacts(
after: String
before: String
first: Int = 0
last: Int = 0
filter: ContactFilter = "[object Object]"
orderBy: ContactOrder = "[object Object]"
): ContactConnection
conversation(number: Int!): Conversation
conversationPreferences: ConversationPreferences!
conversations(
after: String
before: String
first: Int = 0
last: Int = 0
filter: ConversationFilter = "[object Object]"
orderBy: ConversationOrder
): ConversationConnection
customFieldCategories(
after: String
before: String
first: Int = 0
last: Int = 0
filter: CustomFieldCategoryFilter
): CustomFieldCategoryConnection
customFields(
after: String
before: String
first: Int = 0
last: Int = 0
filter: CustomFieldFilter
): CustomFieldConnection
customProfile(contactId: ID!, hardRefresh: Boolean, channelId: ID = 0): JSON
customerRatingSettings(
after: String
before: String
first: Int = 0
last: Int = 0
): CustomerRatingSettingConnection
drafts(
after: String
before: String
first: Int = 0
last: Int = 0
filter: DraftFilter = "[object Object]"
orderBy: DraftOrder = "[object Object]"
): DraftConnection!
emailMarketingIntegrations(
after: String
before: String
first: Int = 0
last: Int = 0
): EmailMarketingIntegrationConnection!
emailMarketingSubscriptions(
after: String
before: String
first: Int = 0
last: Int = 0
integrationId: ID!
contactId: ID!
): EmailMarketingSubscriptionConnection!
ephemeralJobResult(id: ID!): EphemeralJobResult
eventGroups(
after: String
before: String
first: Int = 0
last: Int = 0
filter: EventGroupsFilterInput!
): EventGroupTypeConnection!
events(
after: String
before: String
first: Int = 0
last: Int = 0
filter: EventsFilterInput!
): EventConnection!
excludedDomains(
after: String
before: String
first: Int = 0
last: Int = 0
): ExcludedDomainConnection
existsForAnyAccount(provider: String!, shopDomain: String!): Boolean!
featureTemplateCategories: [String!]!
featureTemplates: FeatureTemplates!
folders(
after: String
before: String
first: Int = 0
last: Int = 0
filter: FolderFilter = "[object Object]"
orderBy: FolderOrder = "[object Object]"
): FolderConnection
import2Imports(
after: String
before: String
first: Int = 0
last: Int = 0
): ImportConnection!
import2Tools(
after: String
before: String
first: Int = 0
last: Int = 0
): ToolConnection!
integrations(
after: String
before: String
first: Int = 0
last: Int = 0
filter: IntegrationsFilter
): IntegrationUnionConnection!
knowledgeBases(
after: String
before: String
first: Int = 0
last: Int = 0
): KnowledgeBaseConnection
me: Agent!
node(id: ID!): Node
nodes(ids: [ID!]!): [Node]!
ping: String!
pushTokens(
after: String
before: String
first: Int = 0
last: Int = 0
): PushTokenConnection!
rooms(
after: String
before: String
first: Int = 0
last: Int = 0
filter: RoomFilter = "[object Object]"
orderBy: RoomOrder = "[object Object]"
): RoomConnection
roomsCounts(
folderIds: [ID!] = []
channelId: ID = 0
channelType: RoomChannelTypeEnum
): RoomsCountsResult
rules(
after: String
before: String
first: Int = 0
last: Int = 0
filter: RuleFilter = "[object Object]"
orderBy: RuleOrder = "[object Object]"
): RuleConnection
starredCannedReplies(
after: String
before: String
first: Int = 0
last: Int = 0
): StarredCannedReplyConnection
tags(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TagFilter
orderBy: TagOrder
): TagConnection
teams(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TeamFilter = "[object Object]"
orderBy: TeamOrder = "[object Object]"
): TeamConnection
themes(
after: String
before: String
first: Int = 0
last: Int = 0
): ThemeConnection!
widgets(
after: String
before: String
first: Int = 0
last: Int = 0
filter: WidgetFilter
): NewWidgetConnection
}

Fields#

NameDescription
account (Account) Returns account related information.
agentPreferences (AgentPreferenceConnection) Returns the elements in the list that come after the specified cursor.
Arguments
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentPreferencesFilterInput)
The fields by which to filter the results.
agents (AgentConnection) Lists all agents in the organization.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentFilter)
The fields by which to filter the results.
orderBy (AgentOrder)
The field and direction by which to order the results.
aiConversationSuggestions (AiSuggestionConnection) Returns the elements in the list that come after the specified cursor.
Arguments
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (SuggestionFilterInput!)
The fields by which to filter the results.
articles (ArticleConnection!) Lists all Knowledge Base articles.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (ArticleFilter)
The fields by which to filter the results.
orderBy (ArticleOrder)
The field and direction by which to order the results.
attachments (ConversationAttachmentConnection) Returns the elements in the list that come after the specified cursor.
Arguments
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AttachmentsFilterInput)
The fields by which to filter the results.
billing (BillingType) Returns billing related information.
cannedReplies (CannedReplyConnection) Lists all canned replies.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (CannedReplyFilter)
The fields by which to filter the results.
orderBy (CannedReplyOrder)
The field and direction by which to order the results.
cannedReplyCategories (CannedReplyCategoryConnection) Lists all canned reply categories.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
orderBy (CategoryOrder)
The field and direction by which to order the results.
channels (ChannelConnection!) Lists all channels.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (ChannelFilter)
The fields by which to filter the results.
orderBy (ChannelOrder)
The field and direction by which to order the results.
companies (CompanyConnection) Lists all companies.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (CompanyFilter)
The fields by which to filter the results.
orderBy (CompanyOrder)
The field and direction by which to order the results.
contacts (ContactConnection) Lists all contacts.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (ContactFilter)
The fields by which to filter the results.
orderBy (ContactOrder)
The field and direction by which to order the results.
conversation (Conversation) Finds a conversation by number.
Arguments
number (Int!)
The conversation number.
conversationPreferences (ConversationPreferences!) Conversation preferences.
conversations (ConversationConnection) Lists all conversations.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (ConversationFilter)
The fields by which to filter the results.
orderBy (ConversationOrder)
The field and direction by which to order the results.
customFieldCategories (CustomFieldCategoryConnection) Lists all custom field categories.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (CustomFieldCategoryFilter)
The fields by which to filter the results.
customFields (CustomFieldConnection) Lists all custom fields.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (CustomFieldFilter)
The fields by which to filter the results.
customProfile (JSON) Fetches the custom profile for a contact.
Arguments
contactId (ID!)
The ID of the contact.
hardRefresh (Boolean)
Whether the custom profile should be refreshed.
channelId (ID)
The ID of the channel.
customerRatingSettings (CustomerRatingSettingConnection) Returns the elements in the list that come after the specified cursor.
Arguments
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
drafts (DraftConnection!) Lists drafts associated to requesting user.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (DraftFilter)
The fields by which to filter the results.
orderBy (DraftOrder)
The field and direction by which to order the results.
emailMarketingIntegrations (EmailMarketingIntegrationConnection!) The installed email marketing integrations.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
emailMarketingSubscriptions (EmailMarketingSubscriptionConnection!) The email marketing.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
integrationId (ID!)
The ID of the email marketing integration.
contactId (ID!)
The ID of the contact.
ephemeralJobResult (EphemeralJobResult) Find an ephemeral job result by id.
Arguments
id (ID!)
The id of the ephemeral job.
eventGroups (EventGroupTypeConnection!) Returns the elements in the list that come after the specified cursor.
Arguments
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (EventGroupsFilterInput!)
The fields by which to filter the results.
events (EventConnection!) Lists the events for a given conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (EventsFilterInput!)
The fields by which to filter the results.
excludedDomains (ExcludedDomainConnection) Lists all excluded domains.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
existsForAnyAccount (Boolean!) Checks if there is already existing OauthCredential with provided shop domain for any Groove account.
Arguments
provider (String!)
The provider to check for existing integrations for.
shopDomain (String!)
The shop domain.
featureTemplateCategories ([String!]!) Lists all feature templates categories.
featureTemplates (FeatureTemplates!) Lists feature templates.
folders (FolderConnection) Lists all folders that are accessible to the authenticated agent. Each folder can be associated with one or more mailboxes.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (FolderFilter)
The fields by which to filter the results.
orderBy (FolderOrder)
The field and direction by which to order the results.
import2Imports (ImportConnection!) Lists all imports.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
import2Tools (ToolConnection!) Lists all apps provided by Import2 partner.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
integrations (IntegrationUnionConnection!) Connected integrations.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (IntegrationsFilter)
Filter integrations.
knowledgeBases (KnowledgeBaseConnection) Lists all Knowledge Bases.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
me (Agent!) Gets the authenticated agent.
node (Node) Fetches an object given its ID.
Arguments
id (ID!)
ID of the object.
nodes ([Node]!) Fetches a list of objects given a list of IDs.
Arguments
ids ([ID!]!)
IDs of the objects.
ping (String!) Performs a health check for the Groove GraphQL API.
pushTokens (PushTokenConnection!) All push tokens for the current user.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
rooms (RoomConnection) Lists all Live Chat rooms.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (RoomFilter)
The fields by which to filter the results.
orderBy (RoomOrder)
The field and direction by which to order the results.
roomsCounts (RoomsCountsResult) Lists all Live Chat room counts.
Arguments
folderIds ([ID!])
The IDs of the folders to get a chat rooms count for.
channelId (ID)
The ID of the channel to filter the chat rooms counts by.
channelType (RoomChannelTypeEnum)
The channel type that the request needs to be filtered by.
rules (RuleConnection) Lists all rules in the organization.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (RuleFilter)
The fields by which to filter the results.
orderBy (RuleOrder)
The field and direction by which to order the results.
starredCannedReplies (StarredCannedReplyConnection) Returns the elements in the list that come after the specified cursor.
Arguments
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
tags (TagConnection) Lists all tags.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TagFilter)
The fields by which to filter the results.
orderBy (TagOrder)
The field and direction by which to order the results.
teams (TeamConnection) Lists all teams in the organization.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TeamFilter)
The fields by which to filter the results.
orderBy (TeamOrder)
The field and direction by which to order the results.
themes (ThemeConnection!) Lists all Knowledge Base themes.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
widgets (NewWidgetConnection) Lists all widgets in the organization.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (WidgetFilter)
Filter widgets.

Interfaces#

NameDescription
CompaniesField A list of companies filtered by input.
ContactsField A list of contacts filtered by input.

Rating#

A rating is feedback on a conversation message from a contact for an agent.

type Rating implements Node, Timestamped {
agent: Agent
createdAt: DateTime!
feedback: String
grade: RatingEnum
id: ID!
message: Message!
updatedAt: DateTime!
}

Fields#

NameDescription
agent (Agent) The subject of the rating.
createdAt (DateTime!) The date and time that the object was created.
feedback (String) A message accompanying the rating.
grade (RatingEnum) The actual rating.
id (ID!) The message associated with the rating.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

RechargeIntegration#

No description

type RechargeIntegration implements Integration {
createdAt: DateTime!
fullStoreDomain: String!
id: ID!
legacyId: String!
provider: IntegrationProvider!
settings: IntegrationSettings!
storeDomain: String!
storeName: String!
uid: String
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
fullStoreDomain (String!) The full store domain.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
storeDomain (String!) The shop domain.
storeName (String!) The shop name.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

RecipientConnection#

The connection type for Recipient.

type RecipientConnection {
edges: [RecipientEdge]
nodes: [Recipient]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([RecipientEdge]) A list of edges.
nodes ([Recipient]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

RecipientEdge#

An edge in a connection.

type RecipientEdge {
cursor: String!
node: Recipient
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Recipient) The item at the end of the edge.

ReferrerUrl#

The address of the webpage from which the visitor came to your page.

type ReferrerUrl {
domain: String
hash: String
medium: String
path: String
protocol: String
query: String
raw: String!
searchTerm: String
source: String
}

Fields#

NameDescription
domain (String) The domain of the URL.
hash (String) The URL's hash property.
medium (String) The category of the source.
path (String) The path of the URL.
protocol (String) The URL's protocol.
query (String) The query string of the URL.
raw (String!) The raw URL.
searchTerm (String) The search term used by the visitor.
source (String) The origin of the visitor.

Reply#

An email message from an agent to a contact.

type Reply implements Node, Message, Delayable, Emailable {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
bcc(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection
body: String
bodyPlainText: String
cannedReply: CannedReply
cc(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection
channel: Channel!
createdAt: DateTime!
deliverBy: DateTime
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
sourceConversation: Conversation
summary: SummaryMessage!
to(
after: String
before: String
first: Int = 0
last: Int = 0
): RecipientConnection!
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
bcc (RecipientConnection) The "Bcc" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
cc (RecipientConnection) The "Cc" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
deliverBy (DateTime) The date and time that the message was sent. Used to allow for undoing send.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
to (RecipientConnection!) The "To" recipients of the email.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Message An individual message, for example an incoming email, an email reply, or a note.
Delayable A message with delayed deliveries.
Emailable A message that is sent via email.

ReplyDraft#

No description

type ReplyDraft implements Draft {
agent: Agent!
assignment: Assignment
attachments: JSON
bcc: JSON
body: String!
cc: JSON
contextId: ID
conversation: Conversation!
conversationId: ID!
createdAt: DateTime!
draftId: String
draftType: DraftType
id: ID!
lastSyncedAt: DateTime!
metadata: JSON!
payload: JSON
subject: String
to: JSON
updatedAt: DateTime!
version: Int!
}

Fields#

NameDescription
agent (Agent!) The agent who created the draft.
assignment (Assignment) The agents and/or teams that are assigned to the draft.
attachments (JSON) All attachments on this draft.
bcc (JSON) The draft recipients.
body (String!) The draft body.
cc (JSON) The draft recipients.
contextId (ID) The ID of the context within the conversation.
conversation (Conversation!) The conversation this draft belongs to.
conversationId (ID!) The conversation ID this draft belongs to.
createdAt (DateTime!) The date and time that the object was created.
draftId (String) The UUID used to identify the draft.
draftType (DraftType) The type of the draft.
id (ID!) The datetime when the draft was last synced.
metadata (JSON!) Metadata related to the draft.
payload (JSON) The payload of the draft, which is a schemaless JSON object.
subject (String) The draft subject.
to (JSON) The draft recipients.
updatedAt (DateTime!) The date and time that the object was last updated.
version (Int!) The draft version.

Interfaces#

NameDescription
Draft An object with timestamp fields for when it was created and last updated.

Room#

A Room represents a chat room

type Room {
agentId: ID
assigneeType: String
channelId: ID
contact: RoomContactType
id: ID!
isRead: Boolean
isStarred: Boolean
name: String
number: Int
roomType: RoomKindType!
snoozedUntilTimestamp: BigInt
state: RoomStateType
tags: [ID!]
teamId: ID
topic: String
updatedTimestamp: BigInt!
}

Fields#

NameDescription
agentId (ID) The ID of the agent assigned to the chat room.
assigneeType (String) The type of the chat room assignee.
channelId (ID) The channel ID.
contact (RoomContactType) Basic contact information for this room.
id (ID!) The chat room ID.
isRead (Boolean) True if the chat room is read; false otherwise.
isStarred (Boolean) True if the chat room is starred; false otherwise.
name (String) The chat room name.
number (Int) The ID of the conversation within the account.
roomType (RoomKindType!) The kind of the chat room.
snoozedUntilTimestamp (BigInt) The date and time until which the conversation is snoozed. If blank, it is snoozed indefinitely.
state (RoomStateType) The state of the chat room.
tags ([ID!]) The list of tags on the chat room.
teamId (ID) The ID of the team assigned to the chat room.
topic (String) The chat room topic.
updatedTimestamp (BigInt!) The date and time that the chat room was last updated.

RoomAccess#

No description

type RoomAccess {
hasAccess: Boolean!
id: ID!
number: Int
}

Fields#

NameDescription
hasAccess (Boolean!) True if the current user has access to the room; false otherwise.
id (ID!) The chat room ID.
number (Int) The ID of the conversation within the account.

RoomConnection#

The connection type for Room.

type RoomConnection {
edges: [RoomEdge]
nodes: [Room]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([RoomEdge]) A list of edges.
nodes ([Room]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

RoomContactType#

Basic contact information for this room

type RoomContactType {
id: ID!
name: String
}

RoomEdge#

An edge in a connection.

type RoomEdge {
cursor: String!
node: Room
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Room) The item at the end of the edge.

RoomsCount#

The chat room count for the given state.

type RoomsCount {
conversationCount: Int
id: ID!
unreadCount: Int
}

Fields#

NameDescription
conversationCount (Int) The total number of chat rooms.
id (ID!) The folder ID.
unreadCount (Int) The total number of unread chats.

RoomsCountsResult#

The chat room counts with the date and time that the chat room was last updated.

type RoomsCountsResult {
data: [RoomsCount!]!
lastUpdatedAt: BigInt!
}

Fields#

NameDescription
data ([RoomsCount!]!) The chat room counts.
lastUpdatedAt (BigInt!) The date and time that the chat room was last updated.

Rule#

  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
}
}
}
type Rule implements Node, Timestamped {
createdAt: DateTime!
creator: Agent
description: String
id: ID!
name: String!
position: Int!
state: RuleState!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
creator (Agent) The agent that created the rule.
description (String) A description of the rule.
id (ID!) The name of the rule.
position (Int!) The position that the rule should appear in when listed.
state (RuleState!) The state of the rule.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

RuleConnection#

The connection type for Rule.

type RuleConnection {
edges: [RuleEdge]
nodes: [Rule]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([RuleEdge]) A list of edges.
nodes ([Rule]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

RuleEdge#

An edge in a connection.

type RuleEdge {
cursor: String!
node: Rule
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Rule) The item at the end of the edge.

SalesforceIntegration#

No description

type SalesforceIntegration implements Integration {
createdAt: DateTime!
id: ID!
legacyId: String!
provider: IntegrationProvider!
salesforceDomain: String!
settings: IntegrationSettings!
uid: String
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
salesforceDomain (String!) The domain of the salesforce installation.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

SearchSummary#

A search summary shows the details about matching messages on a conversation search.

type SearchSummary {
author: Author
body: String!
forwarded: Boolean!
note: Boolean!
}

Fields#

NameDescription
author (Author) The author of the message.
body (String!) The body of the comment with the matching keywords highlighted.
forwarded (Boolean!) True if the message was forwarded; false otherwise.
note (Boolean!) True if the message is a note; false otherwise.

Session#

A contact visit session as recorded by the Widget.

type Session {
firstPageView: PageView
id: String
lastPageView: PageView
penultimatePageView: PageView
totalPageViews: Int
totalTimeOnPage: Float
}

Fields#

NameDescription
firstPageView (PageView) The first page view.
id (String) The session ID.
lastPageView (PageView) The last page view.
penultimatePageView (PageView) The second-to-last page view.
totalPageViews (Int) The total number of page views.
totalTimeOnPage (Float) The total time spent on page.

ShopifyExternalChange#

A change that happened on Shopify.

type ShopifyExternalChange {
changeType: ShopifyChangeType!
externalId: String!
link: String!
meta: JSON
}

Fields#

NameDescription
changeType (ShopifyChangeType!) The type of change.
externalId (String!) The ID on Shopify.
link (String!) The link to the item on Shopify.
meta (JSON) Metadata related to the change.

ShopifyIntegration#

No description

type ShopifyIntegration implements Integration {
createdAt: DateTime!
id: ID!
legacyId: String!
provider: IntegrationProvider!
settings: IntegrationSettings!
storeDomain: String!
storeName: String
uid: String
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
storeDomain (String!) The shop domain.
storeName (String) The shop name.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

ShopifyV2Integration#

No description

type ShopifyV2Integration implements Integration {
createdAt: DateTime!
id: ID!
legacyId: String!
provider: IntegrationProvider!
settings: IntegrationSettings!
storeDomain: String!
storeName: String!
uid: String
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
storeDomain (String!) The shop domain.
storeName (String!) The shop name.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

Snooze#

A snooze represents the agent that snoozed the conversation and when it is snoozed until.

type Snooze {
by: Agent!
until: DateTime
}

Fields#

NameDescription
by (Agent!) The agent that snoozed the conversation.
until (DateTime) The date and time until which the conversation is snoozed. If blank, it is snoozed indefinitely.

Snoozed#

A conversation was snoozed.

type Snoozed implements Timestamped {
by: Agent
createdAt: DateTime!
id: ID!
until: DateTime
updatedAt: DateTime!
}

Fields#

NameDescription
by (Agent) The date and time that the object was created.
id (ID!) The date and time until which the conversation is snoozed. If blank, it is snoozed indefinitely.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

StarredCannedReply#

A canned reply is a prewritten answer to commonly asked customer questions.

To fetch all canned replies:

query CannedReplies {
cannedReplies {
nodes {
body
category {
id
}
createdAt
creator {
id
}
id
name
snippet
subject
updatedAt
lastUsedAt
countUsed
attachments {
id
}
}
}
}

To fetch all canned replies with a given search string:

query CannedReplies {
cannedReplies(filter: { keywords: "foo" }) {
nodes {
id
name
}
}
}

To fetch all canned replies with a given search string in a particular category:

query CannedReplies {
cannedReplies(filter: { keywords: "foo", category_ids: ["crc_123456"] }) {
nodes {
id
name
}
}
}
type StarredCannedReply implements Node, Timestamped, Utilizationabled {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection!
automaticActions: [CannedReplyAutomaticAction!]!
body: String
category: CannedReplyCategory
countUsed: Int!
createdAt: DateTime!
creator: Agent
id: ID!
interpolatedBody(
contactId: ID!
conversationId: ID = 0
messageId: ID = 0
channelId: ID = 0
): String
lastUsedAt: DateTime
mailboxIds: [String!]
name: String
snippet: String
subject: String
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection!) All attachments on this canned reply.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
automaticActions ([CannedReplyAutomaticAction!]!) All automatic actions set on this canned reply.
body (String) The content of the canned reply template.
category (CannedReplyCategory) The category of the canned reply.
countUsed (Int!) The number of times the object has been utilized.
createdAt (DateTime!) The date and time that the object was created.
creator (Agent) The agent that created the canned reply.
id (ID!) The content of the canned reply template with all variables interpolated.
Arguments
contactId (ID!)
The ID of the contact to use for interpolation.
conversationId (ID)
The ID of the conversation to use for interpolation.
messageId (ID)
The ID of the message to use for interpolation.
channelId (ID)
The ID of the channel to use for interpolation.
lastUsedAt (DateTime) The date and time that the object was last used.
mailboxIds ([String!]) Searches for a mailbox that match the id.
name (String) The name of the canned reply.
snippet (String) A short snippet from the canned reply body.
subject (String) The subject line of the canned reply.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.
Utilizationabled An object with utilization fields for when it was last used and how many times it has been used.

StarredCannedReplyConnection#

The connection type for StarredCannedReply.

type StarredCannedReplyConnection {
edges: [StarredCannedReplyEdge]
nodes: [StarredCannedReply]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([StarredCannedReplyEdge]) A list of edges.
nodes ([StarredCannedReply]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

StarredCannedReplyCreatePayload#

Autogenerated return type of StarredCannedReplyCreate

type StarredCannedReplyCreatePayload {
clientMutationId: String
errors: [UserError!]!
starredCannedReply: StarredCannedReply
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
starredCannedReply (StarredCannedReply) The starred canned reply that was created.

StarredCannedReplyDeletePayload#

Autogenerated return type of StarredCannedReplyDelete

type StarredCannedReplyDeletePayload {
clientMutationId: String
errors: [UserError!]!
messageTemplateId: ID
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
messageTemplateId (ID) The starred canned reply that was created.

StarredCannedReplyEdge#

An edge in a connection.

type StarredCannedReplyEdge {
cursor: String!
node: StarredCannedReply
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (StarredCannedReply) The item at the end of the edge.

StateChanged#

The state of the conversation changed.

type StateChanged implements Timestamped {
createdAt: DateTime!
from: ConversationState
id: ID!
to: ConversationState
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
from (ConversationState) The previous state of the conversation.
id (ID!) The new state of the conversation.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

SubjectChanged#

A conversation subject was updated.

type SubjectChanged implements Timestamped {
createdAt: DateTime!
from: String
id: ID!
to: String
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
from (String) The previous subject of the conversation.
id (ID!) The new subject of the conversation.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

SuggestionUpsertPayload#

Autogenerated return type of SuggestionUpsert

type SuggestionUpsertPayload {
clientMutationId: String
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

SummaryMessage#

An individual message with the body truncated.

Sample usage:

query Conversations {
conversations {
nodes {
id
number
summaryMessage {
id
bodyPlainText
isNote
}
}
}
}
type SummaryMessage implements Message {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
body: String
bodyPlainText: String
cannedReply: CannedReply
channel: Channel!
createdAt: DateTime!
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
sourceConversation: Conversation
summary: SummaryMessage!
truncated: Boolean
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
truncated (Boolean) True if the message was truncated; false otherwise.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Message An individual message, for example an incoming email, an email reply, or a note.

SyncRpcPayload#

Autogenerated return type of SyncRpc

type SyncRpcPayload {
clientMutationId: String
errors: [UserError!]!
response: JSON
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
response (JSON) JSON object of result.

Tag#

A label that can be added to any conversation. Tags can be used in folder definitions to create 'smart' folders, in Inbox to search for specific conversations, and in Reporting to monitor trends.

To fetch all tags in the account:

query Tags {
tags {
nodes {
color
conversationCount
createdAt
creator {
id
}
id
lastUsedAt
name
updatedAt
}
pageInfo {
hasNextPage
}
}
}

To fetch all tags applied to a specific conversation:

%(query Conversation {
node(id: $conversationId) {
... on Conversation {
id
number
tags {
nodes {
color
conversationCount
createdAt
creator {
id
}
id
lastUsedAt
name
updatedAt
}
pageInfo {
hasNextPage
}
}
}
}
}

To fetch a single tag:

query Node($tagId: ID!) {
node(id: $tagId) {
... on Tag {
id
name
}
}
}
type Tag implements Node, Timestamped {
color: String
conversationCount(filter: ConversationCountFilter): Int!
createdAt: DateTime!
creator: Agent
id: ID!
lastUsedAt: DateTime
name: String!
updatedAt: DateTime!
}

Fields#

NameDescription
color (String) The display color of the tag.
conversationCount (Int!) The number of conversations that the tag is applied to.
Arguments
filter (ConversationCountFilter)
Filter conversation counts.
createdAt (DateTime!) The date and time that the object was created.
creator (Agent) The agent that created the tag.
id (ID!) The date and time that the tag was last used.
name (String!) The name of the tag.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

TagBatchDeletePayload#

Autogenerated return type of TagBatchDelete

type TagBatchDeletePayload {
clientMutationId: String
errors: [UserError!]!
jobId: ID!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
jobId (ID!) The ID of the enqueued job.

TagConnection#

The connection type for Tag.

type TagConnection {
edges: [TagEdge]
nodes: [Tag]
pageInfo: PageInfo!
totalCount: Int!
totalPageCount: Int!
}

Fields#

NameDescription
edges ([TagEdge]) A list of edges.
nodes ([Tag]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.
totalCount (Int!) The total number of objects returned from the query.
totalPageCount (Int!) The total number of pages based on total page count and page size.

TagCreatePayload#

Autogenerated return type of TagCreate

type TagCreatePayload {
clientMutationId: String
errors: [UserError!]!
tag: Tag
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) The created tag.

TagDeletePayload#

Autogenerated return type of TagDelete

type TagDeletePayload {
clientMutationId: String
deletedTagId: ID!
errors: [UserError!]!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
deletedTagId (ID!) The ID of the deleted tag.

TagEdge#

An edge in a connection.

type TagEdge {
cursor: String!
node: Tag
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Tag) The item at the end of the edge.

TagMergePayload#

Autogenerated return type of TagMerge

type TagMergePayload {
clientMutationId: String
errors: [UserError!]!
jobId: ID!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) The ID of the enqueued job.

TagUpdatePayload#

Autogenerated return type of TagUpdate

type TagUpdatePayload {
clientMutationId: String
errors: [UserError!]!
tag: Tag
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.

Tagged#

A tag was added to a conversation.

type Tagged implements Timestamped {
createdAt: DateTime!
id: ID!
tag: Tag!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The tag that was added to the conversation.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

Team#

A team is a group of zero or more agents.

To find all teams on your account along with the associated agents:

query Teams {
teams {
nodes {
agents {
nodes {
id
}
pageInfo {
hasNextPage
}
}
createdAt
id
description
name
updatedAt
}
}
}

By default team results are sorted by name. To sort by when they were created:

query Teams {
teams(orderBy: { field: CREATED_AT, direction: ASC }) {
nodes {
id
name
}
}
}

To order teams by largest first:

query Teams {
teams(orderBy: { field: SIZE, direction: DESC }) {
nodes {
id
name
}
}
}
type Team implements Node, Timestamped {
agents(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentFilter = "[object Object]"
orderBy: AgentOrder = "[object Object]"
): AgentConnection
createdAt: DateTime!
description: String
id: ID!
name: String!
updatedAt: DateTime!
}

Fields#

NameDescription
agents (AgentConnection) Lists all agents in the organization.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentFilter)
The fields by which to filter the results.
orderBy (AgentOrder)
The field and direction by which to order the results.
createdAt (DateTime!) The date and time that the object was created.
description (String) A description of the team.
id (ID!) The name of the team.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

TeamChanged#

A conversation was reassigned to another team.

type TeamChanged implements Timestamped {
createdAt: DateTime!
from: Team
id: ID!
to: Team
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
from (Team) The team that the conversation was previously assigned to.
id (ID!) The team that the conversation is newly assigned to.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

TeamConnection#

The connection type for Team.

type TeamConnection {
edges: [TeamEdge]
nodes: [Team]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([TeamEdge]) A list of edges.
nodes ([Team]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

TeamEdge#

An edge in a connection.

type TeamEdge {
cursor: String!
node: Team
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Team) The item at the end of the edge.

teamsCreatePayload#

Autogenerated return type of teamsCreate

type teamsCreatePayload {
clientMutationId: String
errors: [UserError!]!
team: Team!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
team (Team!) Created Team.

teamsDestroyPayload#

Autogenerated return type of teamsDestroy

type teamsDestroyPayload {
clientMutationId: String
errors: [UserError!]!
team: Team!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
team (Team!) Destroyed Team.

teamsUpdatePayload#

Autogenerated return type of teamsUpdate

type teamsUpdatePayload {
clientMutationId: String
errors: [UserError!]!
team: Team!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
team (Team!) Updated Team.

Text#

A text string. It can represent either a single line, multiple lines, or an email.

type Text {
content: String!
}

Fields#

NameDescription
content (String!) The text content.

Theme#

A theme for a Knowledge Base that is provided out of the box.

To fetch all themes:

query Themes {
themes {
nodes {
createdAt
id
name
description
screenshotUrl
updatedAt
}
}
}
type Theme implements Node, Timestamped {
createdAt: DateTime!
description: String
id: ID!
name: String
screenshotUrl: String
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
description (String) A description of the theme.
id (ID!) The name of the theme.
screenshotUrl (String) The URL of a sample screenshot image for the theme.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Timestamped An object with timestamp fields for when it was created and last updated.

ThemeConnection#

The connection type for Theme.

type ThemeConnection {
edges: [ThemeEdge]
nodes: [Theme]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ThemeEdge]) A list of edges.
nodes ([Theme]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ThemeEdge#

An edge in a connection.

type ThemeEdge {
cursor: String!
node: Theme
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Theme) The item at the end of the edge.

Tool#

No description

type Tool {
label: String
name: String!
}

Fields#

NameDescription
label (String) App label.
name (String!) App name.

ToolConnection#

The connection type for Tool.

type ToolConnection {
edges: [ToolEdge]
nodes: [Tool]
pageInfo: PageInfo!
}

Fields#

NameDescription
edges ([ToolEdge]) A list of edges.
nodes ([Tool]) A list of nodes.
pageInfo (PageInfo!) Information to aid in pagination.

ToolEdge#

An edge in a connection.

type ToolEdge {
cursor: String!
node: Tool
}

Fields#

NameDescription
cursor (String!) A cursor for use in pagination.
node (Tool) The item at the end of the edge.

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
}
}
}
})
type TwitterConversation implements Node, Conversation {
assigned: Assignment
channel: Channel!
contact: Contact
counts: ConversationCounts!
createdAt: DateTime!
deletedAt: DateTime
drafts(
after: String
before: String
first: Int = 0
last: Int = 0
): DraftConnection
followers(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentFilter = "[object Object]"
orderBy: AgentOrder = "[object Object]"
): AgentConnection
id: ID!
lastUnansweredUserMessageAt: DateTime!
number: Int!
searchSummary: SearchSummary
snoozed: Snooze
starred: Boolean!
state: ConversationState!
stateUpdatedAt: DateTime
subject: String
summaryMessage: SummaryMessage
systemUpdatedAt: DateTime!
tags(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TagFilter
orderBy: TagOrder
): TagConnection
twitterId: String
updatedAt: DateTime!
}

Conversation

A Groove conversation is a thread of messages (for example emails, chats, or notes) and associated actions or events (for example 'opened', 'snoozed', and 'assigned').

To fetch Messages/Ratings/StateChanges/etc. on a conversation, query the Events connection (on the QueryRoot) with the conversation ID.

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
}
}
}
}

To search conversations matching a specific keyword:

query Conversations {
conversations(filter: { keywords: "rad" }) {
edges {
node {
... on Conversation {
id
number
searchSummary {
author {
__typename
... on Agent {
email
role
}
... on Contact {
email
}
}
body
forwarded
note
}
}
}
}
}
}

Fields#

NameDescription
assigned (Assignment) The agents and/or teams that are assigned to the conversation.
channel (Channel!) The channel in which the conversation is happening.
contact (Contact) The primary contact associated with the conversation.
counts (ConversationCounts!) The statistics about the messages and interactions in the conversation.
createdAt (DateTime!) The date and time that the object was created.
deletedAt (DateTime) The date and time that the conversation was trashed.
drafts (DraftConnection) The current user's draft messages on the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
followers (AgentConnection) Lists all agents that are following the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentFilter)
The fields by which to filter the results.
orderBy (AgentOrder)
The field and direction by which to order the results.
id (ID!) The date and time of the last unanswered user message.
number (Int!) The ID of the conversation within the account.
searchSummary (SearchSummary) The comment that matched the given search keywords.
snoozed (Snooze) The agent that snoozed the conversation and when it is snoozed until.
starred (Boolean!) True if the conversation is starred; false otherwise.
state (ConversationState!) The state of the conversation.
stateUpdatedAt (DateTime) The date and time that the conversation state was last updated.
subject (String) The subject of the conversation.
summaryMessage (SummaryMessage) The conversation summary, which is usually the first MessageChange in the conversation.
systemUpdatedAt (DateTime!) The date and time that the conversation was last updated.
tags (TagConnection) Lists all tags.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TagFilter)
The fields by which to filter the results.
orderBy (TagOrder)
The field and direction by which to order the results.
twitterId (String) The external Twitter ID of the conversation.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Conversation A Groove conversation is a thread of messages.

TwitterDraft#

No description

type TwitterDraft implements Draft {
agent: Agent!
assignment: Assignment
body: String!
contextId: ID
conversation: Conversation!
conversationId: ID!
createdAt: DateTime!
draftId: String
draftType: DraftType
id: ID!
lastSyncedAt: DateTime!
metadata: JSON!
payload: JSON
updatedAt: DateTime!
version: Int!
}

Fields#

NameDescription
agent (Agent!) The agent who created the draft.
assignment (Assignment) The agents and/or teams that are assigned to the draft.
body (String!) The draft body.
contextId (ID) The ID of the context within the conversation.
conversation (Conversation!) The conversation this draft belongs to.
conversationId (ID!) The conversation ID this draft belongs to.
createdAt (DateTime!) The date and time that the object was created.
draftId (String) The UUID used to identify the draft.
draftType (DraftType) The type of the draft.
id (ID!) The datetime when the draft was last synced.
metadata (JSON!) Metadata related to the draft.
payload (JSON) The payload of the draft, which is a schemaless JSON object.
updatedAt (DateTime!) The date and time that the object was last updated.
version (Int!) The draft version.

Interfaces#

NameDescription
Draft An object with timestamp fields for when it was created and last updated.

TwitterMessage#

A message sent to or received from Twitter.

type TwitterMessage implements Node, Message {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
body: String
bodyPlainText: String
cannedReply: CannedReply
channel: Channel!
createdAt: DateTime!
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
sourceConversation: Conversation
summary: SummaryMessage!
twitterId: String
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
twitterId (String) The external Twitter ID of the messsage.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Message An individual message, for example an incoming email, an email reply, or a note.

TwoFactorAuthCode#

query TwoFactorAuthCode {
me {
twoFactorAuthCode {
uri
code
}
}
}
type TwoFactorAuthCode {
code: String
uri: String
}

Fields#

NameDescription
code (String) The two factor authentication code. Present only for current user.
uri (String) The two factor authentication uri. Present only for current user.

Unsnoozed#

A conversation was unsnoozed.

type Unsnoozed implements Timestamped {
by: Agent
createdAt: DateTime!
id: ID!
updatedAt: DateTime!
}

Fields#

NameDescription
by (Agent) The agent that unsnoozed the conversation.
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

Untagged#

A tag was removed from a conversation.

type Untagged implements Timestamped {
createdAt: DateTime!
id: ID!
tag: Tag!
updatedAt: DateTime!
}

Fields#

NameDescription
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The tag that was removed from the conversation.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Timestamped An object with timestamp fields for when it was created and last updated.

UpdatePresencePayload#

Autogenerated return type of UpdatePresence

type UpdatePresencePayload {
accessibleWidgetIds: [ID!]
clientMutationId: String
errors: [UserError!]!
lastActiveAt: BigInt
presenceStatus: PresenceStatusType
updatedAt: BigInt
}

Fields#

NameDescription
accessibleWidgetIds ([ID!]) List of widget this user may access.
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.
lastActiveAt (BigInt) The timestamp of when the last user activity was observed.
presenceStatus (PresenceStatusType) The updated presence status of the current user.
updatedAt (BigInt) The timestamp of when the presence cache was last updated.

UploadPayloadField#

No description

type UploadPayloadField {
name: String!
value: String!
}

UploadPayloadGeneratePayload#

Autogenerated return type of UploadPayloadGenerate

type UploadPayloadGeneratePayload {
clientMutationId: String
errors: [UserError!]!
key: String!
previewUrl: String!
request: UploadPayloadRequest!
}

Fields#

NameDescription
clientMutationId (String) A unique identifier for the client performing the mutation.
errors ([UserError!]!) Errors related to user input.

UploadPayloadRequest#

No description

type UploadPayloadRequest {
contentType: String!
data: [UploadPayloadField!]!
method: String!
url: String!
}

UrlStruct#

A URL.

type UrlStruct {
domain: String
hash: String
path: String
protocol: String
query: String
raw: String!
}

Fields#

NameDescription
domain (String) The domain of the URL.
hash (String) The URL's hash property.
path (String) The path of the URL.
protocol (String) The URL's protocol.
query (String) The query string of the URL.
raw (String!) The raw URL.

UserAgent#

A characteristic string used to identify visitors.

type UserAgent {
browser: Browser
device: Device
platform: Platform
raw: String!
}

Fields#

NameDescription
browser (Browser) The browser used by the visitor.
device (Device) The device used by the visitor.
platform (Platform) The native platform the browser is running on.
raw (String!) The raw user agent.

UserError#

A user-readable error

type UserError {
message: String!
path: [String!]
type: String
}

Fields#

NameDescription
message (String!) A description of the error.
path ([String!]) The input value where the error came from.
type (String) A name that can be used to identify the error type.

UserIntegration#

No description

type UserIntegration implements Integration {
agent: Agent!
createdAt: DateTime!
id: ID!
legacyId: String!
provider: IntegrationProvider!
settings: IntegrationSettings!
uid: String
updatedAt: DateTime!
}

Fields#

NameDescription
agent (Agent!) The agent the integration is connected to.
createdAt (DateTime!) The date and time that the object was created.
id (ID!) The Groove legacy API ID.
provider (IntegrationProvider!) The integration provider.
settings (IntegrationSettings!) The global settings for all integrations of this provider type.
uid (String) The integration UID.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Integration An object with timestamp fields for when it was created and last updated.

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
}
}
}
})
type WidgetConversation implements Node, Conversation {
assigned: Assignment
browser: String
channel: Channel!
contact: Contact
counts: ConversationCounts!
createdAt: DateTime!
deletedAt: DateTime
drafts(
after: String
before: String
first: Int = 0
last: Int = 0
): DraftConnection
followers(
after: String
before: String
first: Int = 0
last: Int = 0
filter: AgentFilter = "[object Object]"
orderBy: AgentOrder = "[object Object]"
): AgentConnection
id: ID!
lastUnansweredUserMessageAt: DateTime!
number: Int!
pageTitle: String
pageUrl: String
platform: String
referrer: String
searchSummary: SearchSummary
snoozed: Snooze
starred: Boolean!
state: ConversationState!
stateUpdatedAt: DateTime
subject: String
summaryMessage: SummaryMessage
systemUpdatedAt: DateTime!
tags(
after: String
before: String
first: Int = 0
last: Int = 0
filter: TagFilter
orderBy: TagOrder
): TagConnection
updatedAt: DateTime!
}

Conversation

A Groove conversation is a thread of messages (for example emails, chats, or notes) and associated actions or events (for example 'opened', 'snoozed', and 'assigned').

To fetch Messages/Ratings/StateChanges/etc. on a conversation, query the Events connection (on the QueryRoot) with the conversation ID.

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
}
}
}
}

To search conversations matching a specific keyword:

query Conversations {
conversations(filter: { keywords: "rad" }) {
edges {
node {
... on Conversation {
id
number
searchSummary {
author {
__typename
... on Agent {
email
role
}
... on Contact {
email
}
}
body
forwarded
note
}
}
}
}
}
}

Fields#

NameDescription
assigned (Assignment) The agents and/or teams that are assigned to the conversation.
browser (String) The browser used by the contact.
channel (Channel!) The channel in which the conversation is happening.
contact (Contact) The primary contact associated with the conversation.
counts (ConversationCounts!) The statistics about the messages and interactions in the conversation.
createdAt (DateTime!) The date and time that the object was created.
deletedAt (DateTime) The date and time that the conversation was trashed.
drafts (DraftConnection) The current user's draft messages on the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
followers (AgentConnection) Lists all agents that are following the conversation.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (AgentFilter)
The fields by which to filter the results.
orderBy (AgentOrder)
The field and direction by which to order the results.
id (ID!) The date and time of the last unanswered user message.
number (Int!) The ID of the conversation within the account.
pageTitle (String) The title of the page that the Widget is embedded into.
pageUrl (String) The URL of the page that the Widget is embedded into.
platform (String) The operating system used by the contact.
referrer (String) The URL of the page that the contact came from.
searchSummary (SearchSummary) The comment that matched the given search keywords.
snoozed (Snooze) The agent that snoozed the conversation and when it is snoozed until.
starred (Boolean!) True if the conversation is starred; false otherwise.
state (ConversationState!) The state of the conversation.
stateUpdatedAt (DateTime) The date and time that the conversation state was last updated.
subject (String) The subject of the conversation.
summaryMessage (SummaryMessage) The conversation summary, which is usually the first MessageChange in the conversation.
systemUpdatedAt (DateTime!) The date and time that the conversation was last updated.
tags (TagConnection) Lists all tags.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
filter (TagFilter)
The fields by which to filter the results.
orderBy (TagOrder)
The field and direction by which to order the results.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Conversation A Groove conversation is a thread of messages.

WidgetMessage#

A message received from a contact using the Widget.

type WidgetMessage implements Node, Message {
attachments(
after: String
before: String
first: Int = 0
last: Int = 0
): AttachmentConnection
author: Author!
body: String
bodyPlainText: String
cannedReply: CannedReply
channel: Channel!
createdAt: DateTime!
fromMerge: Boolean
fromMove: Boolean
id: ID!
isNote: Boolean!
sourceConversation: Conversation
summary: SummaryMessage!
updatedAt: DateTime!
}

Fields#

NameDescription
attachments (AttachmentConnection) The files attached to the message, if any.
Arguments
after (String)
Returns the elements in the list that come after the specified cursor.
before (String)
Returns the elements in the list that come before the specified cursor.
first (Int)
Returns the first n elements from the list.
last (Int)
Returns the last n elements from the list.
author (Author!) The actor that authored the body.
body (String) The body of the message in HTML.
bodyPlainText (String) The body of the message in plain text.
cannedReply (CannedReply) The canned reply used for this message.
channel (Channel!) The channel this message belongs to.
createdAt (DateTime!) The date and time that the object was created.
fromMerge (Boolean) True if the message comes from a merged conversation; false otherwise.
fromMove (Boolean) True if the message was moved from another conversation; false otherwise.
id (ID!) True if the message is a note; false otherwise.
sourceConversation (Conversation) The conversation the message was moved from.
summary (SummaryMessage!) The summary of the message.
updatedAt (DateTime!) The date and time that the object was last updated.

Interfaces#

NameDescription
Node An object with an ID.
Message An individual message, for example an incoming email, an email reply, or a note.

On this page