Skip to main content

SupportHub Ticketing APIs (1.0)

Download OpenAPI specification:Download

REST API for creating and managing SupportHub tickets, intended for the Partner.

Authentication

Each call requires a JWT OAuth 2.0 (Bearer) token obtained from Microsoft Entra ID using the client_credentials flow.

POST https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
client_id={CLIENT_ID}
client_secret={CLIENT_SECRET}
scope=https://service.flow.microsoft.com//.default

Tenant ID: {tenantId}

The token is valid for ~1 hour (expires_in: 3599). Renew it before expiration.

Required headers

  • Authorization: required on all endpoints; value format Bearer {access_token}.

Data format

  • All dates are in UTC ISO 8601 with Z suffix (e.g. 2025-10-21T14:12:44Z).
  • Status values in JSON payloads include a space (e.g. In progress); in path/query URL use the compact form (e.g. InProgress).
  • The description and closingResponse fields must not contain unsafe HTML tags (script, iframe, PHP).

Tickets

Create, read and update operations for SupportHub tickets

Create a ticket

Opens a new report in SupportHub. Returns the unique caseNumber to be used in subsequent calls.

Authorizations:
oauth2
Request Body schema: application/json
required
walletid
string or null

Unique identifier of the involved wallet. Required if type is Consumer. Do not set for Alert and Business.

externalid
string or null

Report ID in the Partner's internal system. Used to correlate the SupportHub ticket with the Partner systems.

type
required
string
Enum: "Consumer" "Alert" "Business"

Nature of the report:

  • Consumer � report about an end customer (wallet); requires walletid
  • Alert � widespread service unavailability (priority 0); use category: "Indisponibilit� del servizio"
  • Business � B2B issues; use category: "Segnalazioni B2B"
category
required
string
Enum: "Saldo non aggiornato" "Ricarica non visibile" "Ricarica SCT/CASH non visibile" "Ricarica welfare" "Altri problemi sui pagamenti" "Rimborso cash" "SDD" "Validazione IBAN" "Registrazione servizio" "Chiusura wallet" "Indisponibilit� del servizio" "Segnalazioni B2B" "Altro"

Report category. For type: Business the only allowed value is Segnalazioni B2B. For type: Alert use Indisponibilit� del servizio.

title
string or null

Descriptive title of the ticket (optional).

description
required
string

Detailed description of the issue. Must not contain unsafe HTML tags (script, iframe, PHP).

Responses

Request samples

Content type
application/json
{
  • "walletid": "19c57d27-8fc7-4dec-afe0-5023488df4b9",
  • "externalid": "EXT-1938880",
  • "type": "Consumer",
  • "category": "Saldo non aggiornato",
  • "title": "Balance not updated for 3 days",
  • "description": "The wallet balance has not updated for 3 days despite performed top-ups."
}

Response samples

Content type
application/json
{
  • "Response": {
    }
}

Add a comment to a ticket

Adds a textual comment to the timeline of an existing ticket.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

Request Body schema: application/json
required
text
required
string

Comment text. If the ticket is in WaitingForCustomer state, the call automatically updates the status to In progress and recalculates the SLA Validity Date.

Responses

Request samples

Content type
application/json
{
  • "text": "I update the report with additional information."
}

Response samples

Content type
application/json
{
  • "response": "OK"
}

Partner tickets list

Returns the paginated list (10 tickets per page) of the Partner's tickets filtered by status and optionally by type.

Authorizations:
oauth2
path Parameters
status
required
string (TicketStatusUrl)
Enum: "New" "InProgress" "WaitingForCustomer" "Resolved" "Closed" "Canceled" "Rejected"
Example: InProgress

Ticket status as used in path URLs and query parameters (no spaces, system is case-insensitive).

query Parameters
type
string
Enum: "Management" "Wallet"
page
integer <int32> >= 0
Default: 0
Example: page=0

0-based page number. Page size is 10 tickets.

Responses

Response samples

Content type
application/json
{
  • "response": [
    ]
}

Ticket detail

Returns the full detail of a ticket by its caseNumber.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}

Tickets by Wallet

Returns all tickets associated with a specific wallet.

Authorizations:
oauth2
path Parameters
walletid
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "response": [
    ]
}

Ticket timeline

Returns the chronological sequence of all events, comments and status changes of a ticket.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

Responses

Response samples

Content type
application/json
{
  • "response": [
    ]
}

Update ticket status (status via path)

Updates the ticket status by passing the new status as a path parameter in the URL.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

newStatus
required
string (TicketStatusUrl)
Enum: "New" "InProgress" "WaitingForCustomer" "Resolved" "Closed" "Canceled" "Rejected"
Example: InProgress

Ticket status as used in path URLs and query parameters (no spaces, system is case-insensitive).

Request Body schema: application/json
optional
closingResponse
string or null

Closing response/reason. Required for the Resolved ? Closed transition. Must not contain script, iframe or PHP.

Responses

Request samples

Content type
application/json
{
  • "closingResponse": "I confirm the resolution of the reported issue."
}

Response samples

Content type
application/json
{
  • "Response": "OK"
}

Update ticket status (status via body)

Alternative variant for status update.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

Request Body schema: application/json
required
status
required
string (TicketStatusUrl)
Enum: "New" "InProgress" "WaitingForCustomer" "Resolved" "Closed" "Canceled" "Rejected"

Ticket status as used in path URLs and query parameters (no spaces, system is case-insensitive).

closingResponse
string or null

Closing response/reason. Required for the Resolved ? Closed transition. Must not contain script, iframe or PHP.

Responses

Request samples

Content type
application/json
{
  • "status": "InProgress",
  • "closingResponse": "I confirm the resolution of the reported issue."
}

Response samples

Content type
application/json
{
  • "Response": "OK"
}

List ticket attachments

Returns attachment metadata.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

Responses

Response samples

Content type
application/json
{
  • "response": [
    ]
}

Upload an attachment

Uploads a binary file to an existing ticket.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

query Parameters
filename
required
string
Request Body schema: application/octet-stream
required
string <binary>

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "id": 0,
  • "caseNumber": "string",
  • "filename": "string"
}

Get attachment

Returns a single attachment.

Authorizations:
oauth2
path Parameters
casenumber
required
string
Example: TK-000001234

Unique ticket identifier (e.g. TK-000001234).

attachmentid
required
integer

Responses

Response samples

Content type
application/json
{
  • "response": {
    }
}