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