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

service

Ticket opened on a service

Ticket categories

There are 9 categories of tickets representing the type of the issue.

Category name

Description

moving_otp

The diagnostic reveals a problem of moved OTP

generic_incident

The diagnostic reveals a problem of generic incident

synchro

The diagnostic reveals a problem of synchronisation

packet_loss

The diagnostic reveals a loss of packets

low_rate

The diagnostic reveals a low rate

authentication

The diagnostic reveals a problem of authentication

slamming

The diagnostic reveals a problem of slammed ligne

post_prod

The diagnostic reveals a problem after the completion of the service

other

Other

Ticket status and lifecycle

For now, only 5 status are available:

Status name

Description

Possible action

open

Ticket has been successfully submitted and Covage team is processing it.

N/A

deferred

Covage need more information to keep processing the ticket

open

cleared

Ticket has been processed by Covage.

closed

closed

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 null or 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

open

The ticket has been successfully submitted and Covage team is processing it.

Opérateur

deferred

Covage need more information to keep processing the ticket

Covage

cleared

The ticket has been processed by Covage.

Covage

reopen

The ticket has been reopened after being cleared (the ticket is not yet processed).

Covage

closed

The ticket has been closed by the operator or by Covage.

Opérateur

canceled

The ticket has been closed before being processed.

Covage

Clear code list

Clear Code

Signification

Responsability

synchronization

Physical disconnection of the link, position problem on ruler (alignment fault)

Covage

modem

Defective client modem, client modem not connected

Customer

provisionning

Configuration problem

Covage

authentication_cust

Incorrect client Login / Password (Config)

Customer

authentication_kosc

Radius / Router problem

Covage

throughput_packet_loss

Line quality degradation impacting throughput or causing package losses

Covage

major_network_incident

DSLAM / Switch / Router disconnected

Covage

ticket_cancelation_cust

Ticket cancellation by the customer

Customer

other_cust

Other reasons, Customer responsability

Customer

other_kosc

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).