Ticketing¶
Ticketing system is working on top of diagnostic system.
A ticket refers to a diagnostic run that has either a completed or an error status.
Ticket types¶
For now, there is only one type of ticket:
Type name |
Description |
|---|---|
|
Ticket opened on a service |
Ticket categories¶
There are 9 categories of tickets representing the type of the issue.
Category name |
Description |
|---|---|
|
The diagnostic reveals a problem of moved OTP |
|
The diagnostic reveals a problem of generic incident |
|
The diagnostic reveals a problem of synchronisation |
|
The diagnostic reveals a loss of packets |
|
The diagnostic reveals a low rate |
|
The diagnostic reveals a problem of authentication |
|
The diagnostic reveals a problem of slammed ligne |
|
The diagnostic reveals a problem after the completion of the service |
|
Other |
Ticket status and lifecycle¶
For now, only 5 status are available:
Status name |
Description |
Possible action |
|---|---|---|
|
Ticket has been successfully submitted and Covage team is processing it. |
N/A |
|
Covage need more information to keep processing the ticket |
|
|
Ticket has been processed by Covage. |
|
|
Ticket has been closed by the operator or by Covage. |
N/A |
Creating a Ticket¶
To create a new ticket, launch a POST to url /api/tickets/.
Example of a service ticket creation:
POST /api/tickets/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
{
"diagnostic_run_id": "D170403_001",
"type": "service",
"service_uuid": "t5y7r8ut",
"operator_ticket_ref": "PB12_32",
"description": "Customer complains about low rate",
"initial_comment": "Hello, customer plains about a low bitrate issue.\n\nCould you check please?",
"category": "low_rate",
"priority": "low",
"owner_contact":{
"first_name":"Patrick",
"last_name":"Bousso",
"email":"patrick.bousso@colibrix.fr",
"phone_number":"0785655656"
}
}
The creation of a ticket is accepted if these conditions are respected:
- A diagnostic_run id is given and the corresponding diagnostic is a standard diagnostic.
If the ticket is in one of the following category :
[“moving_otp”,”slamming”,”other”] Then the field diagnostic_run_id field can be either
nullor empty ("") but always required.There is no other ticket opened on the service.
There is no other ticket opened with same diagnostic run.
The successful creation of a ticket will:
Return a response containing the ticket itself (see Fetching a ticket for more info).
Result in the emission of an email to it’s author and a predefined (per operator) list of recipients. This email contains all the data contained in the ticket, except
modification_date, plus some data from the related diagnostic.
Fetching a Ticket¶
To retrieve detailed information about a ticket from its id, launch a GET to url /api/tickets/{id}/ or /api/tickets/{alias}/ or /api/tickets/{uuid}/.
GET /api/tickets/1234/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
{
"id": 989,
"alias": "T190517_08006",
"creation_date": "2019-05-17T08:51:23.185722Z",
"modification_date": "2019-05-17T08:51:23.186087Z",
"type": "service",
"status": "open",
"category": "synchro",
"priority": "low",
"author": "test",
"operator_ticket_ref": "779b14bd-d9e9-48e5-9ad1-86929c4d5890",
"description": "Customer complains about low rate",
"service_uuid": "8ccc5104-a7d3-4be3-8108-cf9641cb1fe6",
"service_alias": "S190322_11001",
"product_name": "ADSL-Max_shared_BE_KOSC",
"grt": "standard",
"diagnostic_run_id": 18956,
"diagnostic_run_alias": "D190425_12001",
"initial_comment": "Hello, customer complains about a low bitrate issue",
"last_comment": {
"comment": "Hello, customer complains about a low bitrate issue",
"author": "test"
},
"last_comment_author": "test operator",
"owner": "Untel",
"owner_contact": {
"first_name":"John",
"last_name":"Doe",
"email":"john@doe.com",
"phone_number":"0123456789"
},
"operator_contact_uuid": "zitjrmff",
"last_update_author": "TEST_PRE",
"next_available_status": [],
"clear_code": null,
"responsability": null
}
This call shows any ticket regardless of its status.
Listing all Tickets¶
To retrieve the list of tickets, launch a GET to url /api/tickets/.
Example: listing all tickets:
GET /api/tickets/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
[
{
"id": 989,
"alias": "T190517_08006",
"creation_date": "2019-05-17T08:51:23.185722Z",
"modification_date": "2019-05-17T08:51:23.186087Z",
"type": "service",
"status": "open",
"category": "synchro",
"priority": "low",
"author": "test",
"operator_ticket_ref": "779b14bd-d9e9-48e5-9ad1-86929c4d5890",
"description": "Customer complains about low rate",
"service_uuid": "cgjcbeva",
"service_alias": "S190322_11001",
"product_name": "ADSL-Max_shared_BE_KOSC",
"grt": "standard",
"diagnostic_run_id": 18956,
"diagnostic_run_alias": "D190425_12001",
"initial_comment": "Hello, customer plains about a low bitrate issue",
"last_comment": {
"comment": "Hello, customer complains about a low bitrate issue",
"author": "test"
},
"last_comment_author": "test operator",
"owner": "Untel",
"owner_contact": {
"first_name":"John",
"last_name":"Doe",
"email":"john@doe.com",
"phone_number":"0123456789"
},
"operator_contact_uuid": "zitjrmff",
"last_update_author": "TEST_PRE",
"next_available_status": [],
"clear_code": null,
"responsability": null,
"sort_value": "cD0yMDE5LTA1LTE3VDA4JTNBNTElM0EyMy4xODYwODda"
}
]
Tickets are listed in reverse order of modification_date (most recently updated first).
To get the tickets list of a chosen status via the API call GET to url /api/tickets/?status={status}.
You can specify the number of tickets you want to retreive by giving the limit query parameter (maximum 100).
You can get more tickets by giving the after query parameter with the sort_value field value found on last element of the previous call.
Editing a Ticket¶
You cannot edit a ticket.
Deleting a Ticket¶
You cannot delete a ticket, but you can close it (see below).
The status of a Ticket Event¶
Status Name |
Description |
Action by |
|---|---|---|
|
The ticket has been successfully submitted and Covage team is processing it. |
Opérateur |
|
Covage need more information to keep processing the ticket |
Covage |
|
The ticket has been processed by Covage. |
Covage |
|
The ticket has been reopened after being |
Covage |
|
The ticket has been closed by the operator or by Covage. |
Opérateur |
|
The ticket has been closed before being processed. |
Covage |
Clear code list¶
Clear Code |
Signification |
Responsability |
|---|---|---|
|
Physical disconnection of the link, position problem on ruler (alignment fault) |
Covage |
|
Defective client modem, client modem not connected |
Customer |
|
Configuration problem |
Covage |
|
Incorrect client Login / Password (Config) |
Customer |
|
Radius / Router problem |
Covage |
|
Line quality degradation impacting throughput or causing package losses |
Covage |
|
DSLAM / Switch / Router disconnected |
Covage |
|
Ticket cancellation by the customer |
Customer |
|
Other reasons, Customer responsability |
Customer |
|
Other reasons, Kosc responsability |
Covage |
Note
clear_code and responsability fields are only set when the ticket is cleared
Adding an Event to a Ticket¶
An event is a dictionary containing one or more of the following fiels:
Field |
Description |
|---|---|
status |
New ticket status |
comment |
A comment has been add to the ticket |
To add an event to a ticket, launch a POST to url /api/tickets/{id_or_alias}/events/ with one or more of the allowed fields.
The successful creation of a ticket event will return the event created.
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3826,
"status": "open",
"comment": "Hello, customer plains about a low bitrate issue",
"author": "test",
"creation_date": "2019-05-17T12:15:17.871750Z",
"clear_code": null,
"responsability": null,
"sort_value": "cD0yMDE5LTA1LTE3VDEyJTNBMTUlM0ExNy44NzE3NTBa"
}
Close a ticket¶
For now, the only allowed status change is to close an active ticket.
POST /api/tickets/1234/events/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
{
"status": "closed"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3806,
"status": "closed",
"comment": null,
"author": "test",
"creation_date": "2019-05-17T11:50:53.366966Z",
"clear_code": null,
"responsability": null
}
Note
The operator can only closed a cleared ticket.
Add comment to ticket¶
To add a comment to a ticket, call:
POST /api/tickets/1234/events/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
{
"comment": "this is a comment"
}
Server response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3807,
"status": null,
"comment": "this is a comment",
"author": "test",
"creation_date": "2019-05-17T11:53:11.738648Z",
"clear_code": null,
"responsability": null
}
Note
A comment event will automatically be created if the initial_comment field was provided during creating ticket.
Add comment and change status¶
To close and add a comment to a ticket, call:
POST /api/tickets/1234/events/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
{
"status": "closed",
"comment": "issue resolved"
}
Server response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3809,
"status": "closed",
"comment": "issue resolved",
"author": "test",
"creation_date": "2019-05-17T11:55:23.925132Z",
"clear_code": null,
"responsability": null
}
Note
The operator can only closed a cleared ticket.
Stop the deferred status on a ticket¶
To end the deferred status on a ticket, call:
POST /api/tickets/1234/events/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
{
"status": "open",
"comment": "some information"
}
Server response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 3809,
"status": "open",
"comment": "some information",
"author": "test",
"creation_date": "2019-05-17T11:55:23.925132Z",
"clear_code": null,
"responsability": null
}
Note
You can end the status without posting a comment, by simply removing the “comment” line from the payload.
Listing events of a ticket¶
To retrieve the list of events attached to a ticket, launch a GET to url /api/tickets/{id_or_alias}/events/.
GET /api/tickets/1234/events/ HTTP/1.1
Host: extranet.kosc-telecom.fr
Content-Type: application/json
[
{
"id": 3809,
"status": "closed",
"comment": "issue resolved",
"author": "test",
"creation_date": "2019-05-17T11:55:23.925132Z",
"clear_code": null,
"responsability": null,
"sort_value": "cD0yMDE5LTA1LTE3VDExJTNBNTUlM0EyMy45MjUxMzJa"
},
{
"id": 3808,
"status": "cleared",
"comment": null,
"author": "Kosc",
"creation_date": "2019-05-17T11:54:27.224833Z",
"clear_code": "modem",
"responsability": "Customer",
"sort_value": "cD0yMDE5LTA1LTE3VDExJTNBNTQlM0EyNy4yMjQ4MzNa"
},
{
"id": 3807,
"status": null,
"comment": "this is a comment",
"author": "test",
"creation_date": "2019-05-17T11:53:11.738648Z",
"clear_code": null,
"responsability": null,
"sort_value": "cD0yMDE5LTA1LTE3VDExJTNBNTMlM0ExMS43Mzg2NDha"
},
{
"id": 3783,
"status": "open",
"comment": "Hello, customer plains about a low bitrate issue",
"author": "test",
"creation_date": "2019-05-17T08:51:22.608964Z",
"clear_code": null,
"responsability": null,
"sort_value": "cD0yMDE5LTA1LTE3VDA4JTNBNTElM0EyMi42MDg5NjRa"
}
]
Events are listed in reverse order of creation date (most recent first, oldest last).