Support
The Support module submits a support ticket on behalf of a signed-in user. The SDK does not talk to the ticketing system directly: it sends an encrypted request to the ExpressVPN backend, which creates the ticket and returns its id.
info
To attach SDK log files to a ticket, use the Logs Collector module instead. The two are independent: a Support ticket carries a message and a diagnostic string, a Logs Collector ticket carries files.
submit_support_ticket
Submits a ticket and returns the id the backend created for it.
- Swift
- Kotlin
func submitSupportTicket(userMessage: String, errorDetails: String) throws -> String
func submitSupportTicketAsync(userMessage: String, errorDetails: String) async throws -> String
@Throws(SupportException::class)
fun submitSupportTicket(userMessage: String, errorDetails: String): String
@Throws(SupportException::class)
suspend fun submitSupportTicketAsync(userMessage: String, errorDetails: String): String
Parameters
| Name | Description |
|---|---|
| user_message | The message the user wrote to describe the issue |
| error_details | Diagnostic details attached to the ticket, such as a log excerpt |
warning
The SDK sends error_details as given. Remove personal data from it before calling this method.
Returns
The ticket id upon success, SupportException otherwise.
The call fails when:
- the user is not signed in with an ExpressVPN account, so no access and refresh tokens are cached;
- the request cannot reach the backend;
- the backend answers with a non-200 status.
Example
- Swift
- Kotlin
let ticketId = try await manager.support().submitSupportTicketAsync(
userMessage: "Cannot connect since this morning",
errorDetails: sanitizedDiagnostics
)
val ticketId = manager.support().submitSupportTicketAsync(
userMessage = "Cannot connect since this morning",
errorDetails = sanitizedDiagnostics
)