MongooseIM GraphQL API Reference

A static documentation of the MongooseIM GraphQL Admin API

API Endpoints
http://localhost:5551/api/graphql

Queries

account

Description

Account management

Response

Returns an AccountAdminQuery

Example

Query
query account {
  account {
    listUsers
    countUsers
    checkPassword {
      ...CheckPasswordPayloadFragment
    }
    checkPasswordHash {
      ...CheckPasswordPayloadFragment
    }
    checkUser {
      ...CheckUserPayloadFragment
    }
  }
}
Response
{
  "data": {
    "account": {
      "listUsers": ["xyz789"],
      "countUsers": 123,
      "checkPassword": CheckPasswordPayload,
      "checkPasswordHash": CheckPasswordPayload,
      "checkUser": CheckUserPayload
    }
  }
}

cets

Description

CETS internal database management

Response

Returns a CETSAdminQuery

Example

Query
query cets {
  cets {
    tableInfo {
      ...CETSTableInfoFragment
    }
    systemInfo {
      ...CETSSystemInfoFragment
    }
  }
}
Response
{
  "data": {
    "cets": {
      "tableInfo": [CETSTableInfo],
      "systemInfo": CETSSystemInfo
    }
  }
}

checkAuth

Description

Check authorization status

Response

Returns an AdminAuthInfo

Example

Query
query checkAuth {
  checkAuth {
    domain
    authStatus
    authType
  }
}
Response
{
  "data": {
    "checkAuth": {
      "domain": "localhost",
      "authStatus": "AUTHORIZED",
      "authType": "DOMAIN_ADMIN"
    }
  }
}

domain

Description

Dynamic domain management

Response

Returns a DomainAdminQuery

Example

Query
query domain {
  domain {
    domainsByHostType
    domainDetails {
      ...DomainFragment
    }
  }
}
Response
{
  "data": {
    "domain": {
      "domainsByHostType": ["localhost"],
      "domainDetails": Domain
    }
  }
}

gdpr

Description

Personal data management according to GDPR

Response

Returns a GdprAdminQuery

Example

Query
query gdpr {
  gdpr {
    retrievePersonalData
  }
}
Response
{
  "data": {
    "gdpr": {
      "retrievePersonalData": "abc123"
    }
  }
}

last

Description

Last activity management

Response

Returns a LastAdminQuery

Example

Query
query last {
  last {
    getLast {
      ...LastActivityFragment
    }
    countActiveUsers
    listOldUsers {
      ...OldUserFragment
    }
  }
}
Response
{
  "data": {
    "last": {
      "getLast": LastActivity,
      "countActiveUsers": 987,
      "listOldUsers": [OldUser]
    }
  }
}

metric

Description

Browse metrics

Response

Returns a MetricAdminQuery

Example

Query
query metric {
  metric {
    getMetrics {
      ... on HistogramMetric {
        ...HistogramMetricFragment
      }
      ... on CounterMetric {
        ...CounterMetricFragment
      }
      ... on SpiralMetric {
        ...SpiralMetricFragment
      }
      ... on GaugeMetric {
        ...GaugeMetricFragment
      }
    }
    getMetricsAsDicts {
      ...MetricDictResultFragment
    }
    getClusterMetricsAsDicts {
      ...MetricNodeResultFragment
    }
  }
}
Response
{
  "data": {
    "metric": {
      "getMetrics": [HistogramMetric],
      "getMetricsAsDicts": [MetricDictResult],
      "getClusterMetricsAsDicts": [MetricNodeResult]
    }
  }
}

mnesia

Description

Mnesia internal database management

Response

Returns a MnesiaAdminQuery

Example

Query
query mnesia {
  mnesia {
    systemInfo {
      ... on MnesiaStringResponse {
        ...MnesiaStringResponseFragment
      }
      ... on MnesiaListResponse {
        ...MnesiaListResponseFragment
      }
      ... on MnesiaIntResponse {
        ...MnesiaIntResponseFragment
      }
    }
  }
}
Response
{
  "data": {
    "mnesia": {"systemInfo": [MnesiaStringResponse]}
  }
}

muc

Description

MUC room management

Response

Returns a MUCAdminQuery

Example

Query
query muc {
  muc {
    listRooms {
      ...MUCRoomsPayloadFragment
    }
    getRoomConfig {
      ...MUCRoomConfigFragment
    }
    listRoomUsers {
      ...MUCRoomUserFragment
    }
    listRoomAffiliations {
      ...MUCRoomAffiliationFragment
    }
    getRoomMessages {
      ...StanzasPayloadFragment
    }
  }
}
Response
{
  "data": {
    "muc": {
      "listRooms": MUCRoomsPayload,
      "getRoomConfig": MUCRoomConfig,
      "listRoomUsers": [MUCRoomUser],
      "listRoomAffiliations": [MUCRoomAffiliation],
      "getRoomMessages": StanzasPayload
    }
  }
}

muc_light

Description

MUC Light room management

Response

Returns a MUCLightAdminQuery

Example

Query
query muc_light {
  muc_light {
    getRoomMessages {
      ...StanzasPayloadFragment
    }
    getRoomConfig {
      ...RoomFragment
    }
    listRoomUsers {
      ...RoomUserFragment
    }
    listUserRooms
    getBlockingList {
      ...BlockingItemFragment
    }
  }
}
Response
{
  "data": {
    "muc_light": {
      "getRoomMessages": StanzasPayload,
      "getRoomConfig": Room,
      "listRoomUsers": [RoomUser],
      "listUserRooms": ["alice@localhost"],
      "getBlockingList": [BlockingItem]
    }
  }
}

private

Description

User private storage management

Response

Returns a PrivateAdminQuery

Example

Query
query private {
  private {
    getPrivate
  }
}
Response
{
  "data": {
    "private": {
      "getPrivate": "<message to='bob@localhost' type='chat' from='alice@localhost'><body>Hi!</body></message>"
    }
  }
}

roster

Description

User roster/contacts management

Response

Returns a RosterAdminQuery

Example

Query
query roster {
  roster {
    listContacts {
      ...ContactFragment
    }
    getContact {
      ...ContactFragment
    }
  }
}
Response
{
  "data": {
    "roster": {
      "listContacts": [Contact],
      "getContact": Contact
    }
  }
}

server

Description

Server info and management

Response

Returns a ServerAdminQuery

Example

Query
query server {
  server {
    status {
      ...StatusFragment
    }
    getLoglevel
    getCookie
  }
}
Response
{
  "data": {
    "server": {
      "status": Status,
      "getLoglevel": "NONE",
      "getCookie": "abc123"
    }
  }
}

session

Description

User session management

Response

Returns a SessionAdminQuery

Example

Query
query session {
  session {
    listSessions {
      ...SessionFragment
    }
    countSessions
    listUserSessions {
      ...SessionFragment
    }
    countUserResources
    getUserResource
    listUsersWithStatus {
      ...UserStatusFragment
    }
    countUsersWithStatus
  }
}
Response
{
  "data": {
    "session": {
      "listSessions": [Session],
      "countSessions": 123,
      "listUserSessions": [Session],
      "countUserResources": 123,
      "getUserResource": "res1",
      "listUsersWithStatus": [UserStatus],
      "countUsersWithStatus": 987
    }
  }
}

stanza

Description

Sending stanzas and querying MAM

Response

Returns a StanzaAdminQuery

Example

Query
query stanza {
  stanza {
    getLastMessages {
      ...StanzasPayloadFragment
    }
  }
}
Response
{"data": {"stanza": {"getLastMessages": StanzasPayload}}}

stat

Description

Server statistics

Response

Returns a StatsAdminQuery

Example

Query
query stat {
  stat {
    globalStats {
      ...GlobalStatsFragment
    }
    domainStats {
      ...DomainStatsFragment
    }
  }
}
Response
{
  "data": {
    "stat": {
      "globalStats": GlobalStats,
      "domainStats": DomainStats
    }
  }
}

vcard

Description

vCard management

Response

Returns a VcardAdminQuery

Example

Query
query vcard {
  vcard {
    getVcard {
      ...VcardFragment
    }
  }
}
Response
{"data": {"vcard": {"getVcard": Vcard}}}

Mutations

account

Description

Account management

Response

Returns an AccountAdminMutation

Example

Query
mutation account {
  account {
    registerUser {
      ...UserPayloadFragment
    }
    removeUser {
      ...UserPayloadFragment
    }
    banUser {
      ...UserPayloadFragment
    }
    changeUserPassword {
      ...UserPayloadFragment
    }
    importUsers {
      ...ImportPayloadFragment
    }
  }
}
Response
{
  "data": {
    "account": {
      "registerUser": UserPayload,
      "removeUser": UserPayload,
      "banUser": UserPayload,
      "changeUserPassword": UserPayload,
      "importUsers": ImportPayload
    }
  }
}

domain

Description

Dynamic domain management

Response

Returns a DomainAdminMutation

Example

Query
mutation domain {
  domain {
    addDomain {
      ...DomainFragment
    }
    removeDomain {
      ...DomainFragment
    }
    requestRemoveDomain {
      ...DomainFragment
    }
    enableDomain {
      ...DomainFragment
    }
    disableDomain {
      ...DomainFragment
    }
    setDomainPassword
    deleteDomainPassword
  }
}
Response
{
  "data": {
    "domain": {
      "addDomain": Domain,
      "removeDomain": Domain,
      "requestRemoveDomain": Domain,
      "enableDomain": Domain,
      "disableDomain": Domain,
      "setDomainPassword": "xyz789",
      "deleteDomainPassword": "xyz789"
    }
  }
}

httpUpload

Description

Generating upload/download URLs for the files

Response

Returns a HttpUploadAdminMutation

Example

Query
mutation httpUpload {
  httpUpload {
    getUrl {
      ...FileUrlsFragment
    }
  }
}
Response
{"data": {"httpUpload": {"getUrl": FileUrls}}}

inbox

Description

Inbox bin flushing

Response

Returns an InboxAdminMutation

Example

Query
mutation inbox {
  inbox {
    flushUserBin
    flushDomainBin
    flushGlobalBin
  }
}
Response
{
  "data": {
    "inbox": {"flushUserBin": 987, "flushDomainBin": 987, "flushGlobalBin": 123}
  }
}

last

Description

Last user activity management

Response

Returns a LastAdminMutation

Example

Query
mutation last {
  last {
    setLast {
      ...LastActivityFragment
    }
    removeOldUsers {
      ...OldUserFragment
    }
  }
}
Response
{
  "data": {
    "last": {
      "setLast": LastActivity,
      "removeOldUsers": [OldUser]
    }
  }
}

mnesia

Description

Mnesia internal database management

Response

Returns a MnesiaAdminMutation

Example

Query
mutation mnesia {
  mnesia {
    setMaster
    changeNodename
    backup
    restore
    dump
    dumpTable
    load
    installFallback
  }
}
Response
{
  "data": {
    "mnesia": {
      "setMaster": "xyz789",
      "changeNodename": "xyz789",
      "backup": "xyz789",
      "restore": "xyz789",
      "dump": "xyz789",
      "dumpTable": "abc123",
      "load": "abc123",
      "installFallback": "abc123"
    }
  }
}

muc

Description

MUC room management

Response

Returns a MUCAdminMutation

Example

Query
mutation muc {
  muc {
    createInstantRoom {
      ...MUCRoomDescFragment
    }
    inviteUser
    kickUser
    sendMessageToRoom
    sendPrivateMessage
    deleteRoom
    changeRoomConfiguration {
      ...MUCRoomConfigFragment
    }
    setUserRole
    setUserAffiliation
    enterRoom
    exitRoom
  }
}
Response
{
  "data": {
    "muc": {
      "createInstantRoom": MUCRoomDesc,
      "inviteUser": "xyz789",
      "kickUser": "xyz789",
      "sendMessageToRoom": "abc123",
      "sendPrivateMessage": "abc123",
      "deleteRoom": "xyz789",
      "changeRoomConfiguration": MUCRoomConfig,
      "setUserRole": "abc123",
      "setUserAffiliation": "abc123",
      "enterRoom": "xyz789",
      "exitRoom": "xyz789"
    }
  }
}

muc_light

Description

MUC Light room management

Response

Returns a MUCLightAdminMutation

Example

Query
mutation muc_light {
  muc_light {
    createRoom {
      ...RoomFragment
    }
    changeRoomConfiguration {
      ...RoomFragment
    }
    inviteUser
    deleteRoom
    kickUser
    sendMessageToRoom
    setBlockingList
  }
}
Response
{
  "data": {
    "muc_light": {
      "createRoom": Room,
      "changeRoomConfiguration": Room,
      "inviteUser": "abc123",
      "deleteRoom": "xyz789",
      "kickUser": "xyz789",
      "sendMessageToRoom": "abc123",
      "setBlockingList": "xyz789"
    }
  }
}

offline

Description

Deleting old Offline messages

Response

Returns an OfflineAdminMutation

Example

Query
mutation offline {
  offline {
    deleteExpiredMessages
    deleteOldMessages
  }
}
Response
{
  "data": {
    "offline": {
      "deleteExpiredMessages": "abc123",
      "deleteOldMessages": "xyz789"
    }
  }
}

private

Description

User private storage management

Response

Returns a PrivateAdminMutation

Example

Query
mutation private {
  private {
    setPrivate
  }
}
Response
{
  "data": {
    "private": {
      "setPrivate": "<message to='bob@localhost' type='chat' from='alice@localhost'><body>Hi!</body></message>"
    }
  }
}

roster

Description

User roster/contacts management

Response

Returns a RosterAdminMutation

Example

Query
mutation roster {
  roster {
    addContact
    addContacts
    subscription
    deleteContact
    deleteContacts
    setMutualSubscription
    subscribeToAll
    subscribeAllToAll
  }
}
Response
{
  "data": {
    "roster": {
      "addContact": "abc123",
      "addContacts": ["abc123"],
      "subscription": "abc123",
      "deleteContact": "abc123",
      "deleteContacts": ["abc123"],
      "setMutualSubscription": "xyz789",
      "subscribeToAll": ["xyz789"],
      "subscribeAllToAll": ["xyz789"]
    }
  }
}

server

Description

Server info and management

Response

Returns a ServerAdminMutation

Example

Query
mutation server {
  server {
    joinCluster
    leaveCluster
    removeFromCluster
    restart
    stop
    removeNode
    setLoglevel
  }
}
Response
{
  "data": {
    "server": {
      "joinCluster": "xyz789",
      "leaveCluster": "abc123",
      "removeFromCluster": "abc123",
      "restart": "xyz789",
      "stop": "abc123",
      "removeNode": "xyz789",
      "setLoglevel": "abc123"
    }
  }
}

session

Description

User session management

Response

Returns a SessionAdminMutation

Example

Query
mutation session {
  session {
    kickUserSession {
      ...KickUserResultFragment
    }
    kickUser {
      ...KickUserResultFragment
    }
    setPresence {
      ...SessionPayloadFragment
    }
  }
}
Response
{
  "data": {
    "session": {
      "kickUserSession": KickUserResult,
      "kickUser": [KickUserResult],
      "setPresence": SessionPayload
    }
  }
}

stanza

Description

Sending stanzas and querying MAM

Response

Returns a StanzaAdminMutation

Example

Query
mutation stanza {
  stanza {
    sendMessage {
      ...SendStanzaPayloadFragment
    }
    sendMessageHeadLine {
      ...SendStanzaPayloadFragment
    }
    sendStanza {
      ...SendStanzaPayloadFragment
    }
  }
}
Response
{
  "data": {
    "stanza": {
      "sendMessage": SendStanzaPayload,
      "sendMessageHeadLine": SendStanzaPayload,
      "sendStanza": SendStanzaPayload
    }
  }
}

token

Description

OAUTH user token management

Response

Returns a TokenAdminMutation

Example

Query
mutation token {
  token {
    requestToken {
      ...TokenFragment
    }
    revokeToken
  }
}
Response
{
  "data": {
    "token": {
      "requestToken": Token,
      "revokeToken": "xyz789"
    }
  }
}

vcard

Description

vCard management

Response

Returns a VcardAdminMutation

Example

Query
mutation vcard {
  vcard {
    setVcard {
      ...VcardFragment
    }
  }
}
Response
{"data": {"vcard": {"setVcard": Vcard}}}

Subscriptions

stanza

Response

Returns a StanzaAdminSubscription

Example

Query
subscription stanza {
  stanza {
    subscribeForMessages {
      ...StanzaMapFragment
    }
  }
}
Response
{"data": {"stanza": {"subscribeForMessages": StanzaMap}}}

Types

AccountAdminMutation

Description

Allow admin to manage user accounts.

Fields
Field Name Description
registerUser - UserPayload Register a user. Username will be generated when skipped
Arguments
domain - DomainName!
username - UserName
password - String!
removeUser - UserPayload Remove the user's account along with all the associated personal data
Arguments
user - JID!
banUser - UserPayload Ban an account: kick sessions and set a random password
Arguments
user - JID!
reason - String!
changeUserPassword - UserPayload Change the password of a user
Arguments
user - JID!
newPassword - String!
importUsers - ImportPayload Import users from a CSV file
Arguments
filename - NonEmptyString!
Example
{
  "registerUser": UserPayload,
  "removeUser": UserPayload,
  "banUser": UserPayload,
  "changeUserPassword": UserPayload,
  "importUsers": ImportPayload
}

AccountAdminQuery

Description

Allow admin to get information about accounts.

Fields
Field Name Description
listUsers - [String!] List users per domain
Arguments
domain - DomainName!
countUsers - Int Get number of users per domain
Arguments
domain - DomainName!
checkPassword - CheckPasswordPayload Check if a password is correct
Arguments
user - JID!
password - String!
checkPasswordHash - CheckPasswordPayload Check if a password hash is correct (allowed methods: md5, sha). Works only for a plain passwords
Arguments
user - JID!
passwordHash - String!
hashMethod - String!
checkUser - CheckUserPayload Check if a user exists
Arguments
user - JID!
Example
{
  "listUsers": ["abc123"],
  "countUsers": 123,
  "checkPassword": CheckPasswordPayload,
  "checkPasswordHash": CheckPasswordPayload,
  "checkUser": CheckUserPayload
}

Address

Fields
Field Name Description
tags - [AddressTags] Address tags
pobox - String Post office box
extadd - String Extra address data
street - String Street name
locality - String Locality (e.g. city)
region - String Region name
pcode - String Postal code
country - String Country name
Example
{
  "tags": ["HOME"],
  "pobox": "xyz789",
  "extadd": "abc123",
  "street": "abc123",
  "locality": "xyz789",
  "region": "xyz789",
  "pcode": "abc123",
  "country": "abc123"
}

AddressInput

Fields
Input Field Description
tags - [AddressTags!] Address tags
pobox - String Post office box
extadd - String Extra address data
street - String Street name
locality - String Locality (e.g. city)
region - String Region name
pcode - String Postal code
country - String Country name
Example
{
  "tags": ["HOME"],
  "pobox": "xyz789",
  "extadd": "abc123",
  "street": "xyz789",
  "locality": "abc123",
  "region": "xyz789",
  "pcode": "xyz789",
  "country": "xyz789"
}

AddressTags

Description

Specifies type of an address

Values
Enum Value Description

HOME

Place of residence address

WORK

Workplace adress

POSTAL

Postal code

PARCEL

Parcel delivery address

DOM

Domestic delivery address

PREF

Preferred delivery address when more than one address is specified

INTL

International delivery address
Example
"HOME"

AdminAuthInfo

Description

Information about user request authorization

Fields
Field Name Description
domain - DomainName Authorized for a domain
authStatus - AuthStatus! Authorization status
authType - AuthType Authorization as a
Example
{
  "domain": "localhost",
  "authStatus": "AUTHORIZED",
  "authType": "DOMAIN_ADMIN"
}

Affiliation

Description

User's affiliation

Values
Enum Value Description

OWNER

Owner of the room

MEMBER

Member of the room

NONE

User doesn't have any affiliation
Example
"OWNER"

Agent

Description

Specifies how agent is stored

Types
Union Types

AgentVcard

External

Example
AgentVcard

AgentInput

Fields
Input Field Description
extValue - String Link to external vcard
vcard - VcardInput Individual vcard container
Example
{
  "extValue": "xyz789",
  "vcard": VcardInput
}

AgentVcard

Description

Agent vCard

Fields
Field Name Description
vcard - Vcard vCard data
Example
{"vcard": Vcard}

AuthStatus

Description

All authorization statuses

Values
Enum Value Description

AUTHORIZED

Request is authorized

UNAUTHORIZED

Request is unauthorized
Example
"AUTHORIZED"

AuthType

Values
Enum Value Description

DOMAIN_ADMIN

Administrator of the specific domain

ADMIN

Global administrator

UNAUTHORIZED

Unauthorized user
Example
"DOMAIN_ADMIN"

BareJID

Description

JID without a resource

Example
"alice@localhost"

BinValue

Fields
Field Name Description
binValue - String Value in binary form
Example
{"binValue": "xyz789"}

BlockedEntityType

Description

Type of blocked entity

Values
Enum Value Description

USER

Individual user

ROOM

MUC Light room
Example
"USER"

BlockingAction

Description

Type of blocking action

Values
Enum Value Description

ALLOW

Unblock user/room

DENY

Block user/room
Example
"ALLOW"

BlockingInput

Description

Specifies blocking data

Fields
Input Field Description
entityType - BlockedEntityType! Type of entity to block
action - BlockingAction! Type of blocking action. Default = DENY
entity - JID! Entity's JID
Example
{
  "entityType": "USER",
  "action": "ALLOW",
  "entity": "alice@localhost"
}

BlockingItem

Description

Blocking item data

Fields
Field Name Description
entityType - BlockedEntityType! Type of the entity
action - BlockingAction! Action to be taken
entity - JID! Entity's JID
Example
{
  "entityType": "USER",
  "action": "ALLOW",
  "entity": "alice@localhost"
}

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

CETSAdminQuery

Description

Allow admin to get information about CETS status

Fields
Field Name Description
tableInfo - [CETSTableInfo] Get a list of tables from the local node
systemInfo - CETSSystemInfo Get status of CETS
Example
{
  "tableInfo": [CETSTableInfo],
  "systemInfo": CETSSystemInfo
}

CETSSystemInfo

Fields
Field Name Description
availableNodes - [String] Available nodes (nodes that are connected to us and have the CETS disco process started)
unavailableNodes - [String] Unavailable nodes (nodes that do not respond to our pings)
joinedNodes - [String] Joined nodes (nodes that have our local tables running)
discoveredNodes - [String] Discovered nodes (nodes that are extracted from the discovery backend)
remoteNodesWithoutDisco - [String] Nodes with stopped CETS discovery
remoteNodesWithUnknownTables - [String] Nodes that have more tables registered than the local node
remoteUnknownTables - [String] Unknown remote tables
remoteNodesWithMissingTables - [String] Nodes that are available, but do not host some of our local tables
remoteMissingTables - [String] Missing remote tables
conflictNodes - [String] Nodes that replicate at least one of our local tables to a different list of nodes
conflictTables - [String] Tables that have conflicting replication destinations
discoveryWorks - Boolean Returns true if the last discovery attempt is successful
Example
{
  "availableNodes": ["xyz789"],
  "unavailableNodes": ["xyz789"],
  "joinedNodes": ["xyz789"],
  "discoveredNodes": ["abc123"],
  "remoteNodesWithoutDisco": ["abc123"],
  "remoteNodesWithUnknownTables": [
    "abc123"
  ],
  "remoteUnknownTables": ["abc123"],
  "remoteNodesWithMissingTables": [
    "abc123"
  ],
  "remoteMissingTables": ["xyz789"],
  "conflictNodes": ["abc123"],
  "conflictTables": ["xyz789"],
  "discoveryWorks": false
}

CETSTableInfo

Fields
Field Name Description
tableName - String ETS table name
memory - Int Memory (in words)
size - Int Size (in records)
nodes - [String] A list of clustered nodes
Example
{
  "tableName": "xyz789",
  "memory": 123,
  "size": 123,
  "nodes": ["abc123"]
}

CheckPasswordPayload

Description

Check password correctness payload

Fields
Field Name Description
correct - Boolean! Status of the password correctness
message - String! Result message
Example
{"correct": false, "message": "xyz789"}

CheckUserPayload

Description

Check user existence payload

Fields
Field Name Description
exist - Boolean! Status of the user existence
message - String! Result message
Example
{"exist": false, "message": "xyz789"}

Contact

Description

The contact or roster item

Fields
Field Name Description
jid - JID! The contact jid
name - String The contact name
groups - [String!] The list of the groups the contact belongs to
subscription - ContactSub The type of the subscription
ask - ContactAsk The type of the ask
Example
{
  "jid": "alice@localhost",
  "name": "xyz789",
  "groups": ["xyz789"],
  "subscription": "NONE",
  "ask": "SUBSCRIBE"
}

ContactAsk

Description

The contact ask types

Values
Enum Value Description

SUBSCRIBE

Ask to subscribe

UNSUBSCRIBE

Ask to unsubscribe

IN

Invitation came in

OUT

Invitation came out

BOTH

Ask for mutual subscription

NONE

No invitation
Example
"SUBSCRIBE"

ContactInput

Description

The contact input data

Fields
Input Field Description
jid - JID! The contact jid
name - String! The contact name
groups - [String!] The contact groups
Example
{
  "jid": "alice@localhost",
  "name": "abc123",
  "groups": ["abc123"]
}

ContactSub

Description

The contact subscription types

Values
Enum Value Description

NONE

The user does not have a subscription to the contact's presence, and the contact does not have a subscription to the user's presence

BOTH

The user and the contact have subscriptions to each other's presence

FROM

The contact has a subscription to the user's presence, but the user does not have a subscription to the contact's presence

TO

The user has a subscription to the contact's presence, but the contact does not have a subscription to the user's presence
Example
"NONE"

CounterMetric

Fields
Field Name Description
name - [String] Metric name
type - MetricType Metric type
value - Int The metric value
ms_since_reset - Int Time since last reset
Example
{
  "name": ["abc123"],
  "type": "histogram",
  "value": 987,
  "ms_since_reset": 987
}

DateTime

Description

Date and time represented using YYYY-MM-DDTHH:mm:ssZ format

Example
"2007-12-03T10:15:30Z"

Domain

Description

A dynamic domain representation. Some operation could return incomplete object i.e. some fields can be null.

Fields
Field Name Description
domain - DomainName Domain name
hostType - String Domain hostType
status - DomainStatus Is domain enabled?
Example
{
  "domain": "localhost",
  "hostType": "abc123",
  "status": "ENABLED"
}

DomainAdminMutation

Fields
Field Name Description
addDomain - Domain Add new domain. Only for global admin
Arguments
domain - DomainName!
hostType - String!
removeDomain - Domain Remove domain. Only for global admin
Arguments
domain - DomainName!
hostType - String!
requestRemoveDomain - Domain Remove domain asynchronously. Only for global admin
Arguments
domain - DomainName!
hostType - String!
enableDomain - Domain Enable domain. Only for global admin
Arguments
domain - DomainName!
disableDomain - Domain Disable domain. Only for global admin
Arguments
domain - DomainName!
setDomainPassword - String Create or update domain admin password
Arguments
domain - DomainName!
password - NonEmptyString!
deleteDomainPassword - String Delete domain admin password. Only for global admin
Arguments
domain - DomainName!
Example
{
  "addDomain": Domain,
  "removeDomain": Domain,
  "requestRemoveDomain": Domain,
  "enableDomain": Domain,
  "disableDomain": Domain,
  "setDomainPassword": "xyz789",
  "deleteDomainPassword": "xyz789"
}

DomainAdminQuery

Fields
Field Name Description
domainsByHostType - [DomainName!] Get all enabled domains by hostType. Only for global admin
Arguments
hostType - String!
domainDetails - Domain Get information about the domain
Arguments
domain - DomainName!
Example
{
  "domainsByHostType": ["localhost"],
  "domainDetails": Domain
}

DomainName

Description

XMPP domain name (domain part of a JID)

Example
"localhost"

DomainStats

Fields
Field Name Description
registeredUsers - Int Number of registered users on a given domain
onlineUsers - Int Number of online users on a given domain
Example
{"registeredUsers": 123, "onlineUsers": 987}

DomainStatus

Values
Enum Value Description

ENABLED

Domain is enabled and ready to route traffic

DISABLED

Domain is disabled and won't be loaded into MongooseIM

DELETING

Domain has been marked for deletion and is disabled until all data is removed

DELETED

Domain is deleted and does not exist anymore
Example
"ENABLED"

Email

Fields
Field Name Description
tags - [EmailTags] Email tags
userId - String Email address
Example
{"tags": ["HOME"], "userId": "abc123"}

EmailInput

Fields
Input Field Description
tags - [EmailTags!] Email tags
userId - String! Email address
Example
{"tags": ["HOME"], "userId": "xyz789"}

EmailTags

Description

Format or preference of an email

Values
Enum Value Description

HOME

Address associated with a residence

WORK

Address associated with a place of work

INTERNET

Internet addressing type

PREF

Preferred use of an email address when more than one is specified

X400

X.400 addressing type
Example
"HOME"

External

Fields
Field Name Description
extValue - String URI to an external value
Example
{"extValue": "abc123"}

FileUrls

Description

Type containing put url and get url for the file

Fields
Field Name Description
putUrl - String Url to put the file
getUrl - String Url to get the file
headers - [Header] Http headers
Example
{
  "putUrl": "xyz789",
  "getUrl": "xyz789",
  "headers": [Header]
}

FullJID

Description

JID with a resource

Example
"alice@localhost/res1"

GaugeMetric

Fields
Field Name Description
name - [String] Metric name
type - MetricType Metric type
value - Int The metric value
Example
{
  "name": ["xyz789"],
  "type": "histogram",
  "value": 987
}

GdprAdminQuery

Description

Retrieve user's presonal data

Fields
Field Name Description
retrievePersonalData - String Retrieves all personal data from MongooseIM for a given user
Arguments
username - UserName!
domain - DomainName!
resultFilepath - String!
Example
{"retrievePersonalData": "abc123"}

GeographicalPosition

Fields
Field Name Description
lat - String Geographical latitude
lon - String Geographical longtitude
Example
{
  "lat": "xyz789",
  "lon": "xyz789"
}

GeographicalPositionInput

Fields
Input Field Description
lat - String! Geographical latitude
lon - String! Geographical longtitude
Example
{
  "lat": "xyz789",
  "lon": "xyz789"
}

GlobalStats

Fields
Field Name Description
uptimeSeconds - Int Uptime of the node
registeredUsers - Int Number of registered users
onlineUsersNode - Int Number of online users on the node
onlineUsers - Int Number of online users
incomingS2S - Int Number of all incoming s2s connections
outgoingS2S - Int Number of all outgoing s2s connections
Example
{
  "uptimeSeconds": 987,
  "registeredUsers": 123,
  "onlineUsersNode": 123,
  "onlineUsers": 987,
  "incomingS2S": 123,
  "outgoingS2S": 987
}

Header

Description

Type containing a HTTP header

Fields
Field Name Description
name - String Name
value - String Value
Example
{
  "name": "abc123",
  "value": "abc123"
}

HistogramMetric

Fields
Field Name Description
name - [String] Metric name
type - MetricType Metric type
n - Int The number of values used in the calculation
mean - Int Mean value
min - Int Min value
max - Int Max value
median - Int Median value
p50 - Int 50th percentile
p75 - Int 75th percentile
p90 - Int 90th percentile
p95 - Int 95th percentile
p99 - Int 99th percentile
p999 - Int 99.9th percentile
Example
{
  "name": ["abc123"],
  "type": "histogram",
  "n": 987,
  "mean": 987,
  "min": 987,
  "max": 987,
  "median": 123,
  "p50": 987,
  "p75": 123,
  "p90": 987,
  "p95": 123,
  "p99": 987,
  "p999": 123
}

HttpUploadAdminMutation

Description

Allow admin to generate upload/download URL for a file on user's behalf".

Fields
Field Name Description
getUrl - FileUrls Allow admin to generate upload/download URLs for a file on user's behalf
Arguments
domain - DomainName!
filename - NonEmptyString!
size - PosInt!
contentType - String
timeout - PosInt!
Example
{"getUrl": FileUrls}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

Image

Description

Specifies how image is stored

Types
Union Types

ImageData

External

Example
ImageData

ImageData

Fields
Field Name Description
type - String Format type parameter
binValue - String Base64 encoded binary image
Example
{
  "type": "abc123",
  "binValue": "xyz789"
}

ImageInput

Fields
Input Field Description
type - String Format type parameter
binValue - String Base64 encoded binary image
extValue - String Link to external image
Example
{
  "type": "xyz789",
  "binValue": "xyz789",
  "extValue": "xyz789"
}

ImportPayload

Description

Import users payload

Fields
Field Name Description
status - String! Status
created - [JID!] Users created
existing - [JID!] Users that were already existing
notAllowed - [JID!] Users there were not allowed to be created
invalidJID - [String!] Users with invalid JIDs
emptyPassword - [JID!] Users with empty passwords
invalidRecord - [String!] Invalid records
Example
{
  "status": "abc123",
  "created": ["alice@localhost"],
  "existing": ["alice@localhost"],
  "notAllowed": ["alice@localhost"],
  "invalidJID": ["abc123"],
  "emptyPassword": ["alice@localhost"],
  "invalidRecord": ["abc123"]
}

InboxAdminMutation

Description

Allow admin to flush the inbox bin".

Fields
Field Name Description
flushUserBin - Int Flush the user's bin and return the number of deleted rows
Arguments
user - JID!

User to clear a bin

days - PosInt

Remove older than given days or all if null

flushDomainBin - Int Flush the whole domain bin and return the number of deleted rows
Arguments
domain - DomainName!

Domain to be cleared

days - PosInt

Remove older than given days or all if null

flushGlobalBin - Int Flush the global bin and return the number of deleted rows
Arguments
hostType - String!

Required to identify the DB backend

days - PosInt

Remove older than given days or all if null. Only for global admin

Example
{"flushUserBin": 987, "flushDomainBin": 987, "flushGlobalBin": 987}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

JID

Description

Unique XMPP identifier in the form of node@domain or **node@domain/resource

Example
"alice@localhost"

Key

Fields
Field Name Description
type - String Type of a key
credential - String Key credential
Example
{
  "type": "abc123",
  "credential": "xyz789"
}

KeyInput

Fields
Input Field Description
type - String Type of input
credential - String! Credential or encryption key
Example
{
  "type": "xyz789",
  "credential": "abc123"
}

Keyword

Fields
Field Name Description
keyword - [String] Keywords list
Example
{"keyword": ["xyz789"]}

KeywordInput

Fields
Input Field Description
keyword - [String!] Keywords list
Example
{"keyword": ["abc123"]}

KickUserResult

Description

Kick user session result

Fields
Field Name Description
jid - JID! Full JID with username, server and resource
kicked - Boolean! Result status
code - String Result code (if failed)
message - String! Result message
Example
{
  "jid": "alice@localhost",
  "kicked": true,
  "code": "abc123",
  "message": "xyz789"
}

Label

Fields
Field Name Description
tags - [AddressTags] Label tags
line - [String] Individual label lines
Example
{"tags": ["HOME"], "line": ["xyz789"]}

LabelInput

Fields
Input Field Description
tags - [AddressTags!] Label tags
line - [String!]! Individual label lines
Example
{"tags": ["HOME"], "line": ["xyz789"]}

LastActivity

Fields
Field Name Description
user - JID! The user's JID
timestamp - DateTime! The activity DateTime
status - String! The status text
Example
{
  "user": "alice@localhost",
  "timestamp": "2007-12-03T10:15:30Z",
  "status": "xyz789"
}

LastAdminMutation

Description

Allow admin to get information about last activity.

Fields
Field Name Description
setLast - LastActivity Set user's last status and timestamp
Arguments
user - JID!
timestamp - DateTime
status - String!
removeOldUsers - [OldUser!] Delete users that didn't log in the last days or have never logged in. Globally or for a specified domain. Please use listOldUsers to check which users will be deleted
Arguments
domain - DomainName
timestamp - DateTime!
Example
{
  "setLast": LastActivity,
  "removeOldUsers": [OldUser]
}

LastAdminQuery

Description

Allow admin to manage last activity.

Fields
Field Name Description
getLast - LastActivity Get the user's last status and timestamp
Arguments
user - JID!
countActiveUsers - Int Get the number of users active from the given timestamp
Arguments
domain - DomainName!
timestamp - DateTime
listOldUsers - [OldUser!] List users that didn't log in the last days or have never logged in. Globally or for a specified domain
Arguments
domain - DomainName
timestamp - DateTime!
Example
{
  "getLast": LastActivity,
  "countActiveUsers": 987,
  "listOldUsers": [OldUser]
}

LogLevel

Description

Logs events that equally or more severe than the configured level

Values
Enum Value Description

NONE

Do not log any events

EMERGENCY

Log when system is unusable

ALERT

Log when action must be taken immediately

CRITICAL

Log critical conditions

ERROR

Log error conditions

WARNING

Log warning conditions

NOTICE

Log normal but significant conditions

INFO

Long informational messages

DEBUG

Log debug messages

ALL

Log everything
Example
"NONE"

MUCAdminMutation

Description

Allow admin to manage Multi-User Chat rooms.

Fields
Field Name Description
createInstantRoom - MUCRoomDesc Create a MUC room under the given XMPP hostname
Arguments
room - BareJID!
owner - JID!
nick - ResourceName!
inviteUser - String Invite a user to a MUC room
Arguments
room - BareJID!
sender - JID!
recipient - JID!
reason - String
kickUser - String Kick a user from a MUC room
Arguments
room - BareJID!
nick - ResourceName!
reason - String
sendMessageToRoom - String Send a message to a MUC room
Arguments
room - BareJID!
from - FullJID!
body - String!
sendPrivateMessage - String Send a private message to a MUC room user
Arguments
room - BareJID!
from - FullJID!
toNick - ResourceName!
body - String!
deleteRoom - String Remove a MUC room
Arguments
room - BareJID!
reason - String
changeRoomConfiguration - MUCRoomConfig Change configuration of a MUC room
Arguments
room - BareJID!
setUserRole - String Change a user role
Arguments
room - BareJID!
nick - ResourceName!
role - MUCRole!
setUserAffiliation - String Change a user affiliation
Arguments
room - BareJID!
user - JID!
affiliation - MUCAffiliation!
enterRoom - String Make a user enter the room with a given nick
Arguments
room - BareJID!
user - FullJID!
nick - ResourceName!
password - String
exitRoom - String Make a user with the given nick exit the room
Arguments
room - BareJID!
user - FullJID!
nick - ResourceName!
Example
{
  "createInstantRoom": MUCRoomDesc,
  "inviteUser": "abc123",
  "kickUser": "abc123",
  "sendMessageToRoom": "abc123",
  "sendPrivateMessage": "xyz789",
  "deleteRoom": "xyz789",
  "changeRoomConfiguration": MUCRoomConfig,
  "setUserRole": "abc123",
  "setUserAffiliation": "abc123",
  "enterRoom": "abc123",
  "exitRoom": "abc123"
}

MUCAdminQuery

Description

Allow admin to get information about Multi-User Chat rooms.

Fields
Field Name Description
listRooms - MUCRoomsPayload Get MUC rooms under the given MUC domain
Arguments
mucDomain - DomainName!
from - JID!
limit - PosInt
index - NonNegInt
getRoomConfig - MUCRoomConfig Get configuration of the MUC room
Arguments
room - BareJID!
listRoomUsers - [MUCRoomUser!] Get the user list of a given MUC room
Arguments
room - BareJID!
listRoomAffiliations - [MUCRoomAffiliation!] Get the affiliation list of given MUC room
Arguments
room - BareJID!
affiliation - MUCAffiliation
getRoomMessages - StanzasPayload Get the MUC room archived messages
Arguments
room - BareJID!
pageSize - PosInt
before - DateTime
Example
{
  "listRooms": MUCRoomsPayload,
  "getRoomConfig": MUCRoomConfig,
  "listRoomUsers": [MUCRoomUser],
  "listRoomAffiliations": [MUCRoomAffiliation],
  "getRoomMessages": StanzasPayload
}

MUCAffiliation

Description

User affiliation to a specific room

Values
Enum Value Description

OWNER

The user is the owner of the room

ADMIN

The user has an administrative role

MEMBER

The user is a member of the room

OUTCAST

The user isn't a member of the room

NONE

The user doesn't have any affiliation
Example
"OWNER"

MUCLightAdminMutation

Description

Allow admin to manage Multi-User Chat Light rooms.

Fields
Field Name Description
createRoom - Room Create a MUC light room under the given XMPP hostname
Arguments
mucDomain - DomainName!
name - String
owner - JID!
subject - String
id - RoomName
changeRoomConfiguration - Room Change configuration of a MUC Light room
Arguments
room - BareJID!
owner - JID!
name - String
subject - String
inviteUser - String Invite a user to a MUC Light room
Arguments
room - BareJID!
sender - JID!
recipient - JID!
deleteRoom - String Remove a MUC Light room
Arguments
room - BareJID!
kickUser - String Kick a user from a MUC Light room
Arguments
room - BareJID!
user - JID!
sendMessageToRoom - String Send a message to a MUC Light room
Arguments
room - BareJID!
from - JID!
body - String!
setBlockingList - String Set the user's list of blocked entities
Arguments
user - JID!
Example
{
  "createRoom": Room,
  "changeRoomConfiguration": Room,
  "inviteUser": "xyz789",
  "deleteRoom": "xyz789",
  "kickUser": "abc123",
  "sendMessageToRoom": "xyz789",
  "setBlockingList": "xyz789"
}

MUCLightAdminQuery

Description

Allow admin to get information about Multi-User Chat Light rooms.

Fields
Field Name Description
getRoomMessages - StanzasPayload Get the MUC Light room archived messages
Arguments
room - BareJID!
pageSize - PosInt
before - DateTime
getRoomConfig - Room Get configuration of the MUC Light room
Arguments
room - BareJID!
listRoomUsers - [RoomUser!] Get users list of given MUC Light room
Arguments
room - BareJID!
listUserRooms - [JID!] Get the list of MUC Light rooms that the user participates in
Arguments
user - JID!
getBlockingList - [BlockingItem!] Get the user's list of blocked entities
Arguments
user - JID!
Example
{
  "getRoomMessages": StanzasPayload,
  "getRoomConfig": Room,
  "listRoomUsers": [RoomUser],
  "listUserRooms": ["alice@localhost"],
  "getBlockingList": [BlockingItem]
}

MUCRole

Description

MUC role types

Values
Enum Value Description

VISITOR

User is a visitor

PARTICIPANT

User can participate in the room

MODERATOR

User has ability to moderate room
Example
"VISITOR"

MUCRoomAffiliation

Description

MUC room affiliation data

Fields
Field Name Description
jid - JID! Room's JID
affiliation - MUCAffiliation! Affiliation type
Example
{
  "jid": "alice@localhost",
  "affiliation": "OWNER"
}

MUCRoomConfig

Description

MUC room configuration

Fields
Field Name Description
title - String! Room's title
description - String! Room's description
allowChangeSubject - Boolean! Allow to change the room's subject?
allowQueryUsers - Boolean! Allow to query users?
allowPrivateMessages - Boolean! Allow private messages?
allowVisitorStatus - Boolean! Allow visitor status?
allowVisitorNickchange - Boolean! Allow visitors to change their nicks?
public - Boolean! Is the room public?
publicList - Boolean! Is the room on the public list?
persistent - Boolean! Is the room persistent
moderated - Boolean! Is the room moderated?
membersByDefault - Boolean! Should all new occupants be members by default?
membersOnly - Boolean! Should only users with member affiliation be allowed to join the room?
allowUserInvites - Boolean! Can users invite others to join the room?
allowMultipleSession - Boolean! Allow multiple sessions of the room?
passwordProtected - Boolean! Is the room password protected?
password - String! Password to the room
anonymous - Boolean! Are occupants, except from moderators, able see each others real JIDs?
mayGetMemberList - [String!]! Array of roles and/or privileges that enable retrieving the room's member list
maxUsers - PosInt Maximum number of users in the room
logging - Boolean! Does the room enabled logging events to a file on the disk?
Example
{
  "title": "xyz789",
  "description": "xyz789",
  "allowChangeSubject": true,
  "allowQueryUsers": false,
  "allowPrivateMessages": false,
  "allowVisitorStatus": true,
  "allowVisitorNickchange": false,
  "public": false,
  "publicList": true,
  "persistent": false,
  "moderated": true,
  "membersByDefault": true,
  "membersOnly": true,
  "allowUserInvites": false,
  "allowMultipleSession": false,
  "passwordProtected": true,
  "password": "abc123",
  "anonymous": false,
  "mayGetMemberList": ["abc123"],
  "maxUsers": 2,
  "logging": true
}

MUCRoomConfigInput

Description

MUC rooom configuration input

Fields
Input Field Description
title - String Room's title
description - String Room's description
allowChangeSubject - Boolean Allow to change room's subject?
allowQueryUsers - Boolean Allow to query users?
allowPrivateMessages - Boolean Allow private messages?
allowVisitorStatus - Boolean Allow visitor status?
allowVisitorNickchange - Boolean Allow visitors to change their nicks?
public - Boolean Is the room public?
publicList - Boolean Is the room on the public list?
persistent - Boolean Is the room persistent
moderated - Boolean Is the room moderated?
membersByDefault - Boolean Should all new occupants be members by default?
membersOnly - Boolean Should only users with member affiliation be allowed to join the room?
allowUserInvites - Boolean Can users invite others to join the room?
allowMultipleSession - Boolean Allow multiple sessions of the room?
passwordProtected - Boolean Is the room password protected?
password - String Password to the room
anonymous - Boolean Are occupants, except from moderators, able see each others real JIDs?
mayGetMemberList - [String!] Array of roles and/or privileges that enable retrieving the room's member list
maxUsers - PosInt Maximum number of users in the room
logging - Boolean Does the room enabled logging events to a file on the disk?
Example
{
  "title": "abc123",
  "description": "abc123",
  "allowChangeSubject": true,
  "allowQueryUsers": false,
  "allowPrivateMessages": true,
  "allowVisitorStatus": true,
  "allowVisitorNickchange": false,
  "public": false,
  "publicList": true,
  "persistent": false,
  "moderated": false,
  "membersByDefault": true,
  "membersOnly": true,
  "allowUserInvites": true,
  "allowMultipleSession": false,
  "passwordProtected": true,
  "password": "abc123",
  "anonymous": true,
  "mayGetMemberList": ["abc123"],
  "maxUsers": 2,
  "logging": false
}

MUCRoomDesc

Description

MUC room description

Fields
Field Name Description
jid - JID! Room's JID
title - String! Room's title
private - Boolean Is the room private?
usersNumber - NonNegInt Number of the users
Example
{
  "jid": "alice@localhost",
  "title": "abc123",
  "private": true,
  "usersNumber": 0
}

MUCRoomUser

Description

MUC room user data

Fields
Field Name Description
jid - JID User's JID
nick - String! User's nickname
role - MUCRole! User's role
Example
{
  "jid": "alice@localhost",
  "nick": "abc123",
  "role": "VISITOR"
}

MUCRoomsPayload

Description

MUC rooms payload

Fields
Field Name Description
rooms - [MUCRoomDesc!] List of rooms descriptions
count - NonNegInt Number of the rooms
index - NonNegInt Index of the room
first - String First room title
last - String Last room title
Example
{
  "rooms": [MUCRoomDesc],
  "count": 0,
  "index": 0,
  "first": "abc123",
  "last": "xyz789"
}

MetricAdminQuery

Description

Allow admin to get the metric values. Only works with Exometer enabled.

Fields
Field Name Description
getMetrics - [MetricResult] Match metrics using a name pattern and return the metric values. Return all metrics if the name is not provided. Name is a list of name segments or an underscore (i.e. path).
Arguments
name - [String]
getMetricsAsDicts - [MetricDictResult] Get metrics without using graphql unions. Optionally returns only specified keys (i.e. keys: ["one"] only returns key "one", but not key "count")
Arguments
name - [String]
keys - [String]
getClusterMetricsAsDicts - [MetricNodeResult] Gather metrics from multiple nodes. Optionally returns only from specified nodes.
Arguments
name - [String]
keys - [String]
nodes - [String]
Example
{
  "getMetrics": [HistogramMetric],
  "getMetricsAsDicts": [MetricDictResult],
  "getClusterMetricsAsDicts": [MetricNodeResult]
}

MetricDictEntry

Fields
Field Name Description
key - String The name of the metric key (i.e. one, count, value)
value - Int Metric value
Example
{"key": "abc123", "value": 987}

MetricDictResult

Fields
Field Name Description
name - [String] Metric name
dict - [MetricDictEntry] A list of keys and values
Example
{
  "name": ["xyz789"],
  "dict": [MetricDictEntry]
}

MetricNodeResult

Fields
Field Name Description
node - String
result - [MetricDictResult]
Example
{
  "node": "xyz789",
  "result": [MetricDictResult]
}

MetricResult

Description

Type of metric result

Example
HistogramMetric

MetricType

Description

Result of a metric

Values
Enum Value Description

histogram

Collects values over a sliding window of 60s and returns appropriate statistical values

counter

Returns a number

spiral

Provides 2 values: total event count and a value in 60s window. Dividing one value by 60 provides an average per-second value over last minute.

gauge

Consists of value and time in milliseconds elapsed from the last metric update
Example
"histogram"

MnesiaAdminMutation

Description

Allow admin to backup, dump, load, restore and modify mnesia database

Fields
Field Name Description
setMaster - String Set mnesia's master node
Arguments
node - NodeName!
changeNodename - String Change nodename from 'fromString' to 'toString' in 'source' backup file and create new 'target' backup file
Arguments
fromString - NodeName!
toString - NodeName!
source - String!
target - String!
backup - String Save mnesia backup to file 'path'
Arguments
path - String!
restore - String Restore mnesia backup from file 'path'
Arguments
path - String!
dump - String Dump mnesia to file 'path'
Arguments
path - String!
dumpTable - String Dump mnesia table 'table' to file 'path'
Arguments
path - String!
table - String!
load - String Load mnesia from file 'path' that was previously dumped
Arguments
path - String!
installFallback - String Install mnesia fallback
Arguments
path - String!
Example
{
  "setMaster": "abc123",
  "changeNodename": "xyz789",
  "backup": "abc123",
  "restore": "abc123",
  "dump": "abc123",
  "dumpTable": "abc123",
  "load": "xyz789",
  "installFallback": "abc123"
}

MnesiaAdminQuery

Description

Allow admin to acquire information about mnesia database

Fields
Field Name Description
systemInfo - [MnesiaInfo] Get the information about appropriate mnesia property for a specified key, if no keys are provided all the available properties will be returned
Arguments
keys - [String!]
Example
{"systemInfo": [MnesiaStringResponse]}

MnesiaInfo

Example
MnesiaStringResponse

MnesiaIntResponse

Description

Mnesia response in the form of an integer

Fields
Field Name Description
result - Int Result as an integer
key - String Result's key
Example
{"result": 987, "key": "abc123"}

MnesiaListResponse

Description

Mnesia response in the form of a list

Fields
Field Name Description
result - [String] Result as a list
key - String Result's key
Example
{
  "result": ["abc123"],
  "key": "abc123"
}

MnesiaStringResponse

Description

Mnesia response in the form of a string

Fields
Field Name Description
result - String Result as a string
key - String Result's key
Example
{
  "result": "abc123",
  "key": "abc123"
}

MutualSubAction

Description

The mutual subscription actions

Values
Enum Value Description

CONNECT

Add users to contacts with a both subscription type

DISCONNECT

Delete contacts
Example
"CONNECT"

NameComponents

Fields
Field Name Description
family - String User's family name
givenName - String User's name
middleName - String User's middle name
prefix - String Prefix to the name
suffix - String Suffix to the name
Example
{
  "family": "abc123",
  "givenName": "xyz789",
  "middleName": "xyz789",
  "prefix": "xyz789",
  "suffix": "abc123"
}

NameComponentsInput

Fields
Input Field Description
family - String User's family name
givenName - String User's name
middleName - String User's middle name
prefix - String Prefix to the name
suffix - String Suffix to the name
Example
{
  "family": "xyz789",
  "givenName": "abc123",
  "middleName": "xyz789",
  "prefix": "abc123",
  "suffix": "abc123"
}

NodeName

Description

Name of the Erlang node. The value self is used to refer to the current node

Example
"mynode@localhost"

NonEmptyString

Description

String that contains at least one character

Example
"xyz789"

NonNegInt

Description

Integer that has a value above or equal to zero

OfflineAdminMutation

Description

Allow admin to delete offline messages from specified domain

Fields
Field Name Description
deleteExpiredMessages - String Delete offline messages whose date has expired
Arguments
domain - DomainName!
deleteOldMessages - String Delete messages at least as old as the number of days specified in the parameter
Arguments
domain - DomainName!
days - PosInt!
Example
{
  "deleteExpiredMessages": "xyz789",
  "deleteOldMessages": "xyz789"
}

OldUser

Description

The user is considered old when never registered activity in mod_last, or the latest registered activity is older than the given timestamp.

Fields
Field Name Description
jid - JID! The user's JID
timestamp - DateTime The latest recorded user activity DateTime
Example
{
  "jid": "alice@localhost",
  "timestamp": "2007-12-03T10:15:30Z"
}

Organization

Fields
Field Name Description
orgname - String Organization name
orgunit - [String] Organization unit
Example
{
  "orgname": "abc123",
  "orgunit": ["xyz789"]
}

OrganizationInput

Fields
Input Field Description
orgname - String! Organization name
orgunit - [String!] Organization unit
Example
{
  "orgname": "xyz789",
  "orgunit": ["xyz789"]
}

Phonetic

Fields
Field Name Description
phonetic - String Textual phonetic pronunciation
Example
{"phonetic": "xyz789"}

PosInt

Description

Integer that has a value above zero

Example
2

PresenceShow

Description

Presence show field values

Values
Enum Value Description

ONLINE

The entity or resource is online

AWAY

The entity or resource is temporarily away

CHAT

The entity or resource is actively interested in chatting

DND

The entity or resource is busy (dnd = 'Do Not Disturb')

XA

The entity or resource is away for an extended period (xa = 'eXtended Away')
Example
"ONLINE"

PresenceType

Description

Presence type field values

Values
Enum Value Description

AVAILABLE

The sender is available for communication

ERROR

An error has occurred regarding processing of a previously sent presence stanza

PROBE

A request for an entity's current presence; SHOULD be generated only by a server on behalf of a user

SUBSCRIBE

The sender wishes to subscribe to the recipient's presence

SUBSCRIBED

The sender has allowed the recipient to receive their presence

UNAVAILABLE

Signals that the entity is no longer available for communication

UNSUBSCRIBE

The sender is unsubscribing from the receiver's presence

UNSUBSCRIBED

The subscription request has been denied or a previously granted subscription has been canceled
Example
"AVAILABLE"

Privacy

Fields
Field Name Description
tags - [PrivacyClassificationTags] List of privacy classification tags
Example
{"tags": ["PUBLIC"]}

PrivacyClassificationTags

Values
Enum Value Description

PUBLIC

vCard may be shared with everyone

PRIVATE

vCard will not be shared

CONFIDENTIAL

vCard may be shared with allowed users
Example
"PUBLIC"

PrivacyInput

Fields
Input Field Description
tags - [PrivacyClassificationTags!] Privacy classification tag list
Example
{"tags": ["PUBLIC"]}

PrivateAdminMutation

Description

Allow admin to set the user's private data

Fields
Field Name Description
setPrivate - XmlElement Set the user's private data
Arguments
user - JID!
elementString - XmlElement!
Example
{
  "setPrivate": "<message to='bob@localhost' type='chat' from='alice@localhost'><body>Hi!</body></message>"
}

PrivateAdminQuery

Description

Allow admin to get the user's private data

Fields
Field Name Description
getPrivate - XmlElement Get the user's private data
Arguments
user - JID!
element - String!
nameSpace - NonEmptyString!
Example
{
  "getPrivate": "<message to='bob@localhost' type='chat' from='alice@localhost'><body>Hi!</body></message>"
}

ResourceName

Description

XMPP resource name (resource part of a JID)

Example
"res1"

Room

Description

Room data

Fields
Field Name Description
jid - BareJID! Room's JId
name - String Name of the room
subject - String Subject of the room
participants - [RoomUser!]! List of participants
options - [RoomConfigDictEntry!]! Configuration options
Example
{
  "jid": "alice@localhost",
  "name": "xyz789",
  "subject": "xyz789",
  "participants": [RoomUser],
  "options": [RoomConfigDictEntry]
}

RoomConfigDictEntry

Fields
Field Name Description
key - String! The name of the config option
value - String! Config option value
Example
{
  "key": "abc123",
  "value": "xyz789"
}

RoomConfigDictEntryInput

Fields
Input Field Description
key - String! The name of the config option
value - String! Config option value
Example
{
  "key": "xyz789",
  "value": "abc123"
}

RoomName

Description

XMPP room name (local part of a JID)

Example
"my-chat-room"

RoomUser

Description

Room user data

Fields
Field Name Description
jid - JID! User's JID
affiliation - Affiliation! User's affiliation
Example
{
  "jid": "alice@localhost",
  "affiliation": "OWNER"
}

RosterAdminMutation

Description

Allow admin to manage user roster/contacts.

Fields
Field Name Description
addContact - String Add a new contact to a user's roster without subscription
Arguments
user - JID!
contact - JID!
name - String
groups - [String!]
addContacts - [String]! Add new contacts to a user's roster without subscription
Arguments
user - JID!
contacts - [ContactInput!]!
subscription - String Manage the user's subscription to the contact
Arguments
user - JID!
contact - JID!
action - SubAction!
deleteContact - String Delete user's contact
Arguments
user - JID!
contact - JID!
deleteContacts - [String]! Delete user's contacts
Arguments
user - JID!
contacts - [JID!]!
setMutualSubscription - String Manage mutual subscription between given users
Arguments
userA - JID!
userB - JID!
action - MutualSubAction!
subscribeToAll - [String]! Set mutual subscriptions between the user and each of the given contacts
Arguments
user - ContactInput!
contacts - [ContactInput!]!
subscribeAllToAll - [String]! Set mutual subscriptions between all of the given contacts
Arguments
contacts - [ContactInput!]!
Example
{
  "addContact": "xyz789",
  "addContacts": ["abc123"],
  "subscription": "abc123",
  "deleteContact": "xyz789",
  "deleteContacts": ["abc123"],
  "setMutualSubscription": "abc123",
  "subscribeToAll": ["abc123"],
  "subscribeAllToAll": ["abc123"]
}

RosterAdminQuery

Description

Allow admin to get information about user roster/contacts.

Fields
Field Name Description
listContacts - [Contact!] Get the user's roster/contacts
Arguments
user - JID!
getContact - Contact Get the information about the user's specific contact
Arguments
user - JID!
contact - JID!
Example
{
  "listContacts": [Contact],
  "getContact": Contact
}

SendStanzaPayload

Description

Send stanza payload

Fields
Field Name Description
id - ID Stanza id
Example
{"id": 4}

ServerAdminMutation

Description

Allow admin to manage the node

Fields
Field Name Description
joinCluster - String Join the MongooseIM node to a cluster. Call it on the joining node
Arguments
node - String!
leaveCluster - String Leave a cluster. Call it on the node that is going to leave
removeFromCluster - String Remove a MongooseIM node from the cluster. Call it from the member of the cluster
Arguments
node - String!
restart - String Restart MongooseIM node
stop - String Stop MongooseIM node
removeNode - String Remove a MongooseIM node from Mnesia clustering config
Arguments
node - String!
setLoglevel - String Set MongooseIM node's LogLevel
Arguments
level - LogLevel!
Example
{
  "joinCluster": "xyz789",
  "leaveCluster": "abc123",
  "removeFromCluster": "xyz789",
  "restart": "abc123",
  "stop": "xyz789",
  "removeNode": "abc123",
  "setLoglevel": "xyz789"
}

ServerAdminQuery

Description

Allow admin to acquire data about the node

Fields
Field Name Description
status - Status Get the status of the server
getLoglevel - LogLevel Get MongooseIM node's current LogLevel
getCookie - String Get the Erlang cookie of this node
Example
{
  "status": Status,
  "getLoglevel": "NONE",
  "getCookie": "abc123"
}

Session

Description

The information about the session

Fields
Field Name Description
user - JID! The full JID
connection - String The connection type (e.g. c2s)
ip - String The session IP address
port - Int The session port
priority - Int The priority level of the resource
node - String The node that the session process belongs to
uptime - Int The uptime of the session
Example
{
  "user": "alice@localhost",
  "connection": "xyz789",
  "ip": "abc123",
  "port": 123,
  "priority": 123,
  "node": "xyz789",
  "uptime": 123
}

SessionAdminMutation

Description

Allow admin to manage sessions.

Fields
Field Name Description
kickUserSession - KickUserResult Kick a user session. User JID must contain resource
Arguments
user - FullJID!
reason - String
kickUser - [KickUserResult!] Kick user sessions
Arguments
user - BareJID!
reason - String
setPresence - SessionPayload Set presence of a session. User JID should contain resource
Arguments
user - JID!
type - PresenceType!
show - PresenceShow
status - String
priority - Int
Example
{
  "kickUserSession": KickUserResult,
  "kickUser": [KickUserResult],
  "setPresence": SessionPayload
}

SessionAdminQuery

Description

Allow admin to get information about sessions.

Fields
Field Name Description
listSessions - [Session!] Get the list of established sessions for a specified domain or globally
Arguments
domain - DomainName
countSessions - Int Get the number of established sessions for a specified domain or globally
Arguments
domain - DomainName
listUserSessions - [Session!] Get information about all sessions of a user
Arguments
user - JID!
countUserResources - Int Get the number of resources of a user
Arguments
user - JID!
getUserResource - ResourceName Get the resource string of the n-th session of a user
Arguments
user - JID!
number - PosInt!
listUsersWithStatus - [UserStatus!] Get the list of logged users with this status for a specified domain or globally
Arguments
domain - DomainName
status - NonEmptyString!
countUsersWithStatus - Int Get the number of logged users with this status for a specified domain or globally
Arguments
domain - DomainName
status - NonEmptyString!
Example
{
  "listSessions": [Session],
  "countSessions": 123,
  "listUserSessions": [Session],
  "countUserResources": 987,
  "getUserResource": "res1",
  "listUsersWithStatus": [UserStatus],
  "countUsersWithStatus": 987
}

SessionPayload

Description

Modify session payload

Fields
Field Name Description
jid - JID! Full JID with username, server and resource
message - String! Result message
Example
{
  "jid": "alice@localhost",
  "message": "xyz789"
}

Sound

Description

Specifies how sound is stored

Types
Union Types

Phonetic

BinValue

External

Example
Phonetic

SoundInput

Fields
Input Field Description
phonetic - String Textual phonetic pronunciation
binValue - String Base64 encoded sound binary value
extValue - String Link to external audio file
Example
{
  "phonetic": "xyz789",
  "binValue": "xyz789",
  "extValue": "abc123"
}

SpiralMetric

Fields
Field Name Description
name - [String] Metric name
type - MetricType Metric type
one - Int One minute value
count - Int Total value
Example
{
  "name": ["abc123"],
  "type": "histogram",
  "one": 987,
  "count": 987
}

StanzaAdminMutation

Fields
Field Name Description
sendMessage - SendStanzaPayload Send a chat message from a given contact to a local or remote bare or full JID
Arguments
from - JID!
to - JID!
body - String!
sendMessageHeadLine - SendStanzaPayload Send a headline message from a given contact to a local or remote bare or full JID
Arguments
from - JID!
to - JID!
subject - String
body - String
sendStanza - SendStanzaPayload Send an arbitrary stanza. Only for global admin
Arguments
stanza - XmlElement
Example
{
  "sendMessage": SendStanzaPayload,
  "sendMessageHeadLine": SendStanzaPayload,
  "sendStanza": SendStanzaPayload
}

StanzaAdminQuery

Fields
Field Name Description
getLastMessages - StanzasPayload Get last 50 messages to/from a given contact, optionally you can change the limit, specify a date or select only messages exchanged with a specific contact
Arguments
caller - JID!
with - JID
limit - PosInt
before - DateTime
Example
{"getLastMessages": StanzasPayload}

StanzaAdminSubscription

Fields
Field Name Description
subscribeForMessages - StanzaMap Subscribe for the given user's incoming messages
Arguments
caller - JID!
Example
{"subscribeForMessages": StanzaMap}

StanzaMap

Description

Stanza map data

Fields
Field Name Description
sender - JID Sender's JID
timestamp - DateTime Stanza's timestamp
stanza_id - String ID of the stanza
stanza - XmlElement Stanza's data
Example
{
  "sender": "alice@localhost",
  "timestamp": "2007-12-03T10:15:30Z",
  "stanza_id": "abc123",
  "stanza": "<message to='bob@localhost' type='chat' from='alice@localhost'><body>Hi!</body></message>"
}

StanzasPayload

Description

Stanza payload data

Fields
Field Name Description
stanzas - [StanzaMap] List of stanza's maps
limit - Int Max number of stanzas
Example
{"stanzas": [StanzaMap], "limit": 123}

StatsAdminQuery

Description

Allow admin to get statistics

Fields
Field Name Description
globalStats - GlobalStats Get statistics from all of the nodes. Only for global admin
domainStats - DomainStats Get statistics from a specific domain
Arguments
domain - DomainName!
Example
{
  "globalStats": GlobalStats,
  "domainStats": DomainStats
}

Status

Description

Status of the server

Fields
Field Name Description
statusCode - StatusCode Code of the status
message - String Message about the status
version - String MongooseIM version
commitHash - String The hash of the commit that MongooseIM is running
Example
{
  "statusCode": "RUNNING",
  "message": "xyz789",
  "version": "abc123",
  "commitHash": "xyz789"
}

StatusCode

Description

Specifies status of the server

Values
Enum Value Description

RUNNING

Server is running

NOT_RUNNING

Server is not running
Example
"RUNNING"

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

SubAction

Description

The subscription actions

Values
Enum Value Description

INVITE

Send the subscription request to a user. Presence type: subscribe

ACCEPT

Accept the subscription request. Presence type: subscribed

DECLINE

Decline the subscription's request. Presence type: unsubscribed

CANCEL

Cancel the user's subscription. Presence type: unsubscribe
Example
"INVITE"

Telephone

Fields
Field Name Description
tags - [TelephoneTags] Telephone tags
number - String Telephone's number
Example
{"tags": ["HOME"], "number": "abc123"}

TelephoneInput

Fields
Input Field Description
tags - [TelephoneTags!] Telephone tags
number - String! Telephone's number
Example
{"tags": ["HOME"], "number": "abc123"}

TelephoneTags

Description

Specifies intended use of a telphone number

Values
Enum Value Description

HOME

Number associated with a residence

WORK

Number associated with a workplace

VOICE

Voice telephone number

FAX

Facsimile telephone number

PAGER

Paging device telephone number

MSG

Number has voice messaging support

CELL

Cellular telephone number

VIDEO

Video conferencing telephone number

BBS

Bulletin board system telephone number

MODEM

Modem connected telephone number

ISDN

ISDN service telephone number

PCS

Personal communication services telephone number

PREF

Preferred use of a telephone number
Example
"HOME"

Token

Description

Token data

Fields
Field Name Description
access - String Access token data
refresh - String Refresh token data
Example
{
  "access": "abc123",
  "refresh": "abc123"
}

TokenAdminMutation

Description

Allow admin to get and revoke user's auth tokens

Fields
Field Name Description
requestToken - Token Request auth token for a user
Arguments
user - JID!
revokeToken - String Revoke any tokens for a user
Arguments
user - JID!
Example
{
  "requestToken": Token,
  "revokeToken": "xyz789"
}

UserName

Description

XMPP user name (local part of a JID)

Example
"alice"

UserPayload

Description

Modify user payload

Fields
Field Name Description
jid - JID! User JID
message - String! Result message
Example
{
  "jid": "alice@localhost",
  "message": "abc123"
}

UserStatus

Description

Short info about user's status

Fields
Field Name Description
user - JID! User JID
priority - Int Status priority
text - String Status text
Example
{
  "user": "alice@localhost",
  "priority": 123,
  "text": "xyz789"
}

Vcard

Fields
Field Name Description
formattedName - String Formatted name from Vcard
nameComponents - NameComponents Person's name details
nickname - [String] User's nickname
photo - [Image] User's photo
birthday - [String] Birthday date
address - [Address] User's addresses
label - [Label] Formatted text corresponding to delivery address
telephone - [Telephone] User's telephone number
email - [Email] User's email
jabberId - [String] User's JID
mailer - [String] User's mail agent type
timeZone - [String] User's timezone
geo - [GeographicalPosition] Geographical position
title - [String] Job title, functional position or function
role - [String] User's role, occupation, or business category
logo - [Image] Logo image
agent - [Agent] Person who will act on behalf of the user or resource associated with the vCard
org - [Organization] Organizational name and units associated
categories - [Keyword] Application specific category information
note - [String] Note about user
prodId - [String] Identifier of product that generated the vCard property
rev - [String] Last revised property. The value must be an ISO 8601 formatted UTC date/time
sortString - [String] Sort string property
sound - [Sound] Formatted name pronunciation property
uid - [String] Unique identifier property
url - [String] Directory URL property
desc - [String] Free-form descriptive text
class - [Privacy] Privacy classification property
key - [Key] Authentication credential or encryption key property
Example
{
  "formattedName": "abc123",
  "nameComponents": NameComponents,
  "nickname": ["xyz789"],
  "photo": [ImageData],
  "birthday": ["xyz789"],
  "address": [Address],
  "label": [Label],
  "telephone": [Telephone],
  "email": [Email],
  "jabberId": ["xyz789"],
  "mailer": ["abc123"],
  "timeZone": ["xyz789"],
  "geo": [GeographicalPosition],
  "title": ["abc123"],
  "role": ["abc123"],
  "logo": [ImageData],
  "agent": [AgentVcard],
  "org": [Organization],
  "categories": [Keyword],
  "note": ["abc123"],
  "prodId": ["abc123"],
  "rev": ["abc123"],
  "sortString": ["xyz789"],
  "sound": [Phonetic],
  "uid": ["xyz789"],
  "url": ["xyz789"],
  "desc": ["xyz789"],
  "class": [Privacy],
  "key": [Key]
}

VcardAdminMutation

Description

Allow admin to set user's vcard

Fields
Field Name Description
setVcard - Vcard Set a new vcard for a user
Arguments
user - JID!
vcard - VcardInput!
Example
{"setVcard": Vcard}

VcardAdminQuery

Description

Allow admin to get the user's vcard

Fields
Field Name Description
getVcard - Vcard Get the user's vcard
Arguments
user - JID!
Example
{"getVcard": Vcard}

VcardInput

Fields
Input Field Description
formattedName - String! Formatted name from Vcard
nameComponents - NameComponentsInput! Person's name details
nickname - [String] User's nickname
photo - [ImageInput!] User's photo
birthday - [String!] Birthday date
address - [AddressInput!] User's address
label - [LabelInput!] Formatted text corresponding to delivery address
telephone - [TelephoneInput!] User's telephone number
email - [EmailInput!] User's email
jabberId - [String!] User's JID
mailer - [String!] User's mail agent type
timeZone - [String!] User's timezone
geo - [GeographicalPositionInput!] Geographical position
title - [String!] Job title, functional position or function
role - [String!] User's role, occupation, or business category
logo - [ImageInput!] Logo image
agent - [AgentInput!] Person who will act on behalf of the user or resource associated with the vCard
org - [OrganizationInput!] Organizational name and units associated
categories - [KeywordInput!] Application specific category information
note - [String!] Note about user
prodId - [String!] Identifier of product that generated the vCard property
rev - [String!] Last revised property. The value must be an ISO 8601 formatted UTC date/time
sortString - [String!] Sort string property
sound - [SoundInput!] Formatted name pronunciation property
uid - [String!] Unique identifier property
url - [String!] Directory URL property
desc - [String!] Free-form descriptive text
class - [PrivacyInput!] Privacy classification property
key - [KeyInput!] Authentication credential or encryption key property
Example
{
  "formattedName": "abc123",
  "nameComponents": NameComponentsInput,
  "nickname": ["xyz789"],
  "photo": [ImageInput],
  "birthday": ["xyz789"],
  "address": [AddressInput],
  "label": [LabelInput],
  "telephone": [TelephoneInput],
  "email": [EmailInput],
  "jabberId": ["abc123"],
  "mailer": ["xyz789"],
  "timeZone": ["xyz789"],
  "geo": [GeographicalPositionInput],
  "title": ["xyz789"],
  "role": ["abc123"],
  "logo": [ImageInput],
  "agent": [AgentInput],
  "org": [OrganizationInput],
  "categories": [KeywordInput],
  "note": ["abc123"],
  "prodId": ["xyz789"],
  "rev": ["abc123"],
  "sortString": ["abc123"],
  "sound": [SoundInput],
  "uid": ["xyz789"],
  "url": ["xyz789"],
  "desc": ["xyz789"],
  "class": [PrivacyInput],
  "key": [KeyInput]
}

XmlElement

Description

String containing the XML document

Example
"<message to='bob@localhost' type='chat' from='alice@localhost'><body>Hi!</body></message>"