Skip to content

Messaging

Retrieving lists of unread messages

Use the channel query syntax to return a list of Channel information objects.

query { 
    channelQuery(org: Uuid!, query: String!): ChannelInfoList!
}

Channel kinds

  • self - per org inbox of system messages
  • direct - one to one channel with another user
  • org: ad-hoc, org, group - group channels
  • dispatch - channels attached to a dispatch
  • inbox - Inbox notifications

Direct channels are not connected to a specific org. The channel id is an XOR of the user ids. The self channel is an XOR of the user id and the Org id. The inbox is available through the channel query but the data is accessed via a different API.

Ad-hoc group channels can be created and managed by users while other types of group channels are created at the org level.

Reading channels

Channel data is available via the packets interface. This will return a paged packet list that includes an opaque cursor allowing movement to the next and prior pages.

query {
    packets(channel: Uuid!, first: Int, after: String, status: String): PacketList!
}

Updating unread position

Directily update a channel using the org id and the channel id. The return value is either "ok" or "fail".

mutation {
    updateChannelLastRead(org: Uuid!, id: Uuid!): String!
}

Update a batch of channels using a channel query. The return value is a mutation result.

mutation {
    updateChannelPosWithQuery(org: Uuid!, query: String!): MutationResult!
}

Managing org local direct channel list

Add and remove user ids to the local org list of direct channels.

mutation {
    modifyChannelSettings(org: Uuid!, add:[Uuid!]!, remove:[Uuid!]!){
        result
        error
        records
    }
}

Getting the list of the local connections can be done most simply with the channel query interface described above. To get some additional detail (such as whether the user belongs to the local org or not) use the following api.

query {
    channelSettings(org: Uuid!){
        channelId
        kind
        settings
        updatedAt
        createdAt
        lastWrite
        lastMessage
        membership
    }
}

Read only channels

Channels can be read only.

Creating and managing ad-hoc channels

Users are able to create ad-hoc channels via the API. All other channel types are managed via the admin interface.

Managed channels

Managed channels are used for support