Inbox and notifications
Read and send email from the company Inbox, manage the inbound email address, chat with drivers, and work with in-app notifications.
Paths are relative to https://api.rushhourapp.com/api/v1. See the API reference overview for how to read each entry.
Inbox email
| Method | Path | Summary |
|---|---|---|
GET | /EmailMessages | List emails. |
GET | /EmailMessages/{id} | Get an email. |
DELETE | /EmailMessages/{id} | Delete an email from the Inbox. |
GET | /EmailMessages/{id}/attachments/{attachmentId} | Download an email attachment. |
POST | /EmailMessages/{id}/read | Mark an email as read. |
POST | /EmailMessages/{id}/unread | Mark an email as unread. |
POST | /EmailMessages/compose | Compose and send a new email from the Inbox. |
POST | /EmailMessages/read-all | Mark all inbound emails as read. |
GET | /EmailMessages/recipient-suggestions | Suggest recipient email addresses that match a search. |
GET | /EmailMessages/unread-count | Get the number of unread inbound emails. |
GET /EmailMessages
List emails.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
CustomerId | query | integer (int32) | No | |
Direction | query | string | No | |
Folder | query | string | No | |
FromDate | query | string (date-time) | No | |
InvoiceId | query | integer (int32) | No | |
IsRead | query | boolean | No | |
ItemsPerPage | query | integer (int32) | No | |
OrderId | query | integer (int32) | No | |
Page | query | integer (int32) | No | |
QuoteId | query | integer (int32) | No | |
SearchTerm | query | string | No | |
SortBy | query | string | No | |
SortDirection | query | integer (int32) | No | One of: 0 (Ascending), 1 (Descending). |
Statuses | query | string | No | |
ToDate | query | string (date-time) | No |
Response: envelope; data is EmailMessageListDtoPagedList.
GET /EmailMessages/{id}
Get an email.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Response: envelope; data is EmailMessageDetailDto.
DELETE /EmailMessages/{id}
Delete an email from the Inbox.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Response: envelope; data has no documented shape.
GET /EmailMessages/{id}/attachments/{attachmentId}
Download an email attachment.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
attachmentId | path | integer (int32) | Yes | |
id | path | integer (int32) | Yes |
Response: a file download, not JSON.
POST /EmailMessages/{id}/read
Mark an email as read.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Response: envelope; data has no documented shape.
POST /EmailMessages/{id}/unread
Mark an email as unread.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Response: envelope; data has no documented shape.
POST /EmailMessages/compose
Compose and send a new email from the Inbox.
Request body: ComposeEmailRequest (JSON).
Response: envelope; data is integer (int32).
POST /EmailMessages/read-all
Mark all inbound emails as read.
Response: envelope; data has no documented shape.
GET /EmailMessages/recipient-suggestions
Suggest recipient email addresses that match a search.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | No |
Response: envelope; data is array of RecipientSuggestionDto.
GET /EmailMessages/unread-count
Get the number of unread inbound emails.
Response: envelope; data is integer (int32).
Inbound email address
| Method | Path | Summary |
|---|---|---|
GET | /InboundEmailSettings | Get the company's inbound email address and its settings. |
PUT | /InboundEmailSettings/allowed-domains | Replaces the sender-domain allowlist. |
PUT | /InboundEmailSettings/custom-email | Set your own mailbox that forwards email to the inbound address. |
PATCH | /InboundEmailSettings/enabled | Turn the inbound email address on or off. |
PUT | /InboundEmailSettings/local-part | Choose the part of the inbound email address before the at sign. |
POST | /InboundEmailSettings/regenerate | Replace the inbound email address with a new one; the old address stops working immediately. |
GET /InboundEmailSettings
Get the company's inbound email address and its settings.
Response: envelope; data is InboundEmailAddressDto.
PUT /InboundEmailSettings/allowed-domains
Replaces the sender-domain allowlist.
Request body: SetInboundEmailAllowedDomainsDto (JSON).
Response: envelope; data is InboundEmailAddressDto.
PUT /InboundEmailSettings/custom-email
Set your own mailbox that forwards email to the inbound address.
Request body: SetInboundEmailCustomEmailDto (JSON).
Response: envelope; data is InboundEmailAddressDto.
PATCH /InboundEmailSettings/enabled
Turn the inbound email address on or off.
Request body: SetInboundEmailEnabledDto (JSON).
Response: envelope; data is InboundEmailAddressDto.
PUT /InboundEmailSettings/local-part
Choose the part of the inbound email address before the at sign.
Request body: SetInboundEmailLocalPartDto (JSON).
Response: envelope; data is InboundEmailAddressDto.
POST /InboundEmailSettings/regenerate
Replace the inbound email address with a new one; the old address stops working immediately.
Response: envelope; data is InboundEmailAddressDto.
Chat
| Method | Path | Summary |
|---|---|---|
GET | /Chats | Searches chat threads for the current company. |
GET | /Chats/{chatId} | Retrieves a single chat thread by its ID. |
POST | /Chats/{chatId}/approve | Approves a driver-to-driver chat, unmuting it for its participants. |
POST | /Chats/{chatId}/archive | Archives a chat, making it read-only. |
GET | /Chats/{chatId}/messages | Retrieves a page of messages for a chat. |
GET | /Chats/{chatId}/participants | Lists the participants of a chat. |
POST | /Chats/{chatId}/participants/driver/{driverId} | Adds a driver to a chat as a participant. |
POST | /Chats/{chatId}/read | Marks a chat as read for the current user, clearing its unread count. |
POST | /Chats/driver-to-driver | Creates a driver-to-driver chat, pending admin approval. |
DELETE | /Chats/driver/{driverId}/access | Revokes a driver's access to every chat in the company. |
GET | /Chats/driver/{driverId}/office | Get driver office chat. |
POST | /Chats/group | Create group chat. |
POST | /Chats/messages | Sends a message to a chat. |
DELETE | /Chats/messages/{chatMessageId} | Delete a chat message so it no longer appears in the chat. Only the sender or a Company Admin can delete a message. |
GET | /Chats/office-inbox | Get office inbox. |
GET | /Chats/order/{orderId} | Get order chat. |
POST | /Chats/order/{orderId}/archive | Archives the chat attached to an order, typically when the order is completed. |
GET | /Chats/route/{routeId} | Gets or creates the route-based chat for a route, with the route's assigned driver enrolled as a participant. |
POST | /Chats/route/{routeId}/archive | Archives the route-based chat when a route is completed or archived. |
POST | /Chats/route/{routeId}/restore | Reopens an archived route chat. |
GET | /Chats/unread-summary | Gets the current user's unread-message totals across all chats, broken down by chat type. |
GET /Chats
Searches chat threads for the current company.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
DriverId | query | integer (int32) | No | |
OrderId | query | integer (int32) | No | |
Page | query | integer (int32) | No | |
PageSize | query | integer (int32) | No | |
RouteId | query | integer (int32) | No | |
Scope | query | string | No | |
SearchTerm | query | string | No | |
SortBy | query | string | No | |
SortDirection | query | string | No | |
Type | query | string | No | |
UserId | query | string | No |
Response: array of ChatDto as the whole response body, without the envelope.
GET /Chats/{chatId}
Retrieves a single chat thread by its ID.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatId | path | integer (int32) | Yes | Unique identifier of the chat. |
Response: ChatDto as the whole response body, without the envelope.
POST /Chats/{chatId}/approve
Approves a driver-to-driver chat, unmuting it for its participants.
Required access: the Company Admin role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatId | path | integer (int32) | Yes | Unique identifier of the driver-to-driver chat to approve. |
Response: envelope; data has no documented shape.
POST /Chats/{chatId}/archive
Archives a chat, making it read-only.
Required access: the Company Admin role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatId | path | integer (int32) | Yes | Unique identifier of the chat to archive. |
Response: envelope; data has no documented shape.
GET /Chats/{chatId}/messages
Retrieves a page of messages for a chat.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatId | path | integer (int32) | Yes | Unique identifier of the chat whose messages are requested. |
page | query | integer (int32) | No | 1-based page number, counting backwards from the newest message. Default: 1. |
pageSize | query | integer (int32) | No | Number of messages per page. Default: 50. |
Response: array of ChatMessageDto as the whole response body, without the envelope.
GET /Chats/{chatId}/participants
Lists the participants of a chat.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatId | path | integer (int32) | Yes | Unique identifier of the chat. |
Response: array of ChatParticipantDto as the whole response body, without the envelope.
POST /Chats/{chatId}/participants/driver/{driverId}
Adds a driver to a chat as a participant.
Required access: the Company Admin role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatId | path | integer (int32) | Yes | Unique identifier of the chat to add the driver to. |
driverId | path | integer (int32) | Yes | Unique identifier of the driver being added. |
Response: envelope; data has no documented shape.
POST /Chats/{chatId}/read
Marks a chat as read for the current user, clearing its unread count.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatId | path | integer (int32) | Yes | Unique identifier of the chat to mark read. |
Response: envelope; data has no documented shape.
POST /Chats/driver-to-driver
Creates a driver-to-driver chat, pending admin approval.
Required access: the Company Admin role.
Request body: CreateDriverToDriverChatDto (JSON).
Response: envelope; data is ChatDto.
DELETE /Chats/driver/{driverId}/access
Revokes a driver's access to every chat in the company.
Required access: the Company Admin role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
driverId | path | integer (int32) | Yes | Unique identifier of the driver whose chat access is being revoked. |
Response: envelope; data has no documented shape.
GET /Chats/driver/{driverId}/office
Get driver office chat.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
driverId | path | integer (int32) | Yes | Unique identifier of the driver. |
Response: ChatDto as the whole response body, without the envelope.
POST /Chats/group
Create group chat.
Required access: the Company Admin role.
Request body: CreateGroupChatDto (JSON).
Response: envelope; data is ChatDto.
POST /Chats/messages
Sends a message to a chat.
Request body: SendMessageDto (JSON).
Response: envelope; data is ChatMessageDto.
DELETE /Chats/messages/{chatMessageId}
Delete a chat message so it no longer appears in the chat. Only the sender or a Company Admin can delete a message.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
chatMessageId | path | integer (int32) | Yes | Unique identifier of the message to delete. |
Response: envelope; data has no documented shape.
GET /Chats/office-inbox
Get office inbox.
Response: ChatDto as the whole response body, without the envelope.
GET /Chats/order/{orderId}
Get order chat.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orderId | path | integer (int32) | Yes | Unique identifier of the order whose chat is being opened. |
Response: ChatDto as the whole response body, without the envelope.
POST /Chats/order/{orderId}/archive
Archives the chat attached to an order, typically when the order is completed.
Required access: the Company Admin role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orderId | path | integer (int32) | Yes | Unique identifier of the order whose chat should be archived. |
Response: envelope; data has no documented shape.
GET /Chats/route/{routeId}
Gets or creates the route-based chat for a route, with the route's assigned driver enrolled as a participant.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
routeId | path | integer (int32) | Yes |
Response: ChatDto as the whole response body, without the envelope.
POST /Chats/route/{routeId}/archive
Archives the route-based chat when a route is completed or archived.
Required access: the Company Admin role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
routeId | path | integer (int32) | Yes |
Response: envelope; data has no documented shape.
POST /Chats/route/{routeId}/restore
Reopens an archived route chat.
Required access: the Company Admin role.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
routeId | path | integer (int32) | Yes |
Response: envelope; data has no documented shape.
GET /Chats/unread-summary
Gets the current user's unread-message totals across all chats, broken down by chat type.
Response: envelope; data is ChatUnreadSummaryDto.
Notifications
A new notification category, QuickbooksConnection, is on its way. It is not part of the live API yet, so the category values listed on this page and in the notification models do not include it. Once it is released, QuickbooksConnection can appear as the category of a notification and of a notification preference, GET /Notifications/preferences lists it with in-app on and email off for users who have not changed it, and it is accepted by the Category filter of GET /Notifications and by PUT /Notifications/preferences. Notifications in this category tell your company's staff — never Customer Portal users — that the company's QuickBooks Online connection has expired, or that QuickBooks was disconnected while invoices or payments were still waiting to be sent to it. If your integration reads category, make sure it copes with a value it does not recognise.
| Method | Path | Summary |
|---|---|---|
GET | /Notifications | List the signed-in user's notifications, newest first. |
POST | /Notifications/{id}/action | Executes the Approve/Deny choice on one owned, pending notification. |
POST | /Notifications/{id}/hide | Hides one owned notification from the panel. |
POST | /Notifications/{id}/read | Marks one owned notification read. |
POST | /Notifications/{id}/snooze | Snoozes one owned notification until an absolute UTC time. |
POST | /Notifications/{id}/unread | Marks one owned notification unread. |
GET | /Notifications/broadcasts | List the announcements currently shown to all users. |
GET | /Notifications/preferences | Get the signed-in user's notification preferences. |
PUT | /Notifications/preferences | Update the signed-in user's notification preferences. |
POST | /Notifications/read-all | Marks every visible unread notification of the current user read. |
GET | /Notifications/unread-count | Get the number of unread notifications. |
GET /Notifications
List the signed-in user's notifications, newest first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Category | query | string | No | One of: General, SystemAnnouncement, Documents, OrderLateDelivery, OrderStatus. |
IncludeHidden | query | boolean | No | |
ItemsPerPage | query | integer (int32) | No | |
Page | query | integer (int32) | No | |
SearchTerm | query | string | No | |
SortBy | query | string | No | |
SortDirection | query | integer (int32) | No | One of: 0 (Ascending), 1 (Descending). |
UnreadOnly | query | boolean | No |
Response: envelope; data is NotificationDtoPagedList.
POST /Notifications/{id}/action
Executes the Approve/Deny choice on one owned, pending notification.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Request body: NotificationActionRequest (JSON).
Response: envelope; data is NotificationDto.
POST /Notifications/{id}/hide
Hides one owned notification from the panel.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Response: envelope; data is boolean.
POST /Notifications/{id}/read
Marks one owned notification read.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Response: envelope; data is boolean.
POST /Notifications/{id}/snooze
Snoozes one owned notification until an absolute UTC time.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Request body: SnoozeNotificationRequest (JSON).
Response: envelope; data is boolean.
POST /Notifications/{id}/unread
Marks one owned notification unread.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | integer (int32) | Yes |
Response: envelope; data is boolean.
GET /Notifications/broadcasts
List the announcements currently shown to all users.
Response: envelope; data is array of BroadcastDto.
GET /Notifications/preferences
Get the signed-in user's notification preferences.
Response: envelope; data is array of NotificationPreferenceDto.
PUT /Notifications/preferences
Update the signed-in user's notification preferences.
Request body: array of NotificationPreferenceUpdateItem (JSON).
Response: envelope; data is boolean.
POST /Notifications/read-all
Marks every visible unread notification of the current user read.
Response: envelope; data is boolean.
GET /Notifications/unread-count
Get the number of unread notifications.
Response: envelope; data is integer (int32).