Table of Contents
- Subscribe to the API on the Orange Developer website
- Check the other prerequisites
- Start using the API
- Generate a token
- Find your Orange service numbers
- Create a trouble ticket
- Update a ticket with a new comment
- Get the details of a trouble ticket based on the ID
- Search for trouble tickets based on filters
- API Error handling
- Get the status of the API
- Postman collection to download
Subscribe to the API on the Orange Developer website
We have sent you an email inviting you to discover the Orange Wholesale International Trouble tickets API. If you wish to test the API, we also offer a Sandbox version connected with our test environment.
Open the link included in the email. You'll be asked to create or sign up to your Orange Developer account.
Click on the Use this API button
- Select an existing app or create a new one. You can name the app as you want.
- Click on the Next button. Your subscription to the API will be automatically approved.
Check the other prerequisites
Your Orange Wholesale International representative will set up your access to the eCare customer portal
You'll be provided an
ApplicationID
. (Different from the one you see on your Orange Developer account)You'll also need your
client_id
andclient_secret
that can be found on your Orange Developer account in My apps section.
Start using the API
Generate a token
Access to this API is secured by the OAuth 2.0 framework with the Client Credentials grant type, which means that you will have to present an OAuth 2.0 access_token
whenever you want to request this API.
It's easy to negotiate this access_token
: just send a request to the proper token negotiation endpoint, with a Basic Authentication header valued with your own client_id
and client_secret
.
For this API, the token negotiation endpoint is:
https://api.orange.com/oauth/v3/token
A technical guide is available to learn how to negotiate and manage these access_token
.
Find your Orange service numbers
First of all, before creating a trouble ticket, you'll need to retrieve the Orange service numbers linked to your account (aka the LD number).
Request
- Method :
GET
- URL: https://api.orange.com/orange-wholesale-trouble-tickets/v1/product/
- Authorization : OAuth 2.0 authentication to get the access token
- Header :
ApplicationID
Response
You will receive a code 200
with the following body :
Body
[
{
"productCharacteristic": [
{
"name": "productType",
"value": "SERVICE_CODE"
},
{
"name": "productTypeLabel",
"value": "Name of the service"
}
],
"orangeServiceNumbers": [
{
"orangeServiceNumber": "LD000000",
"technicalNumbers": [
"LD000001"
]
}
]
}
]
Consult the results and pick the orangeServiceNumber
and technicalNumbers
associated with the service for whom you want to create a trouble ticket.
Create a Trouble Ticket
Please note that it is not possible to add an attachment in the V1.0 of the API
Request
- Method :
POST
` - URL : https://api.orange.com/orange-wholesale-trouble-tickets/v1/troubleTicket
- Authorization : OAuth 2.0 authentication to get the access token
- Header :
ApplicationID
Request body
{
"attachment": [],
"relatedParty": [
{
"contactMedium": [
{
"id": "email@email.com",
"contactType": "email"
},
{
"id": "+331234567890",
"contactType": "phone"
}
],
"name": "John Doe",
"role": "depositor",
"characteristic": [
{
"id": "",
"name": "firstName",
"value": "John"
},
{
"id": "",
"name": "lastName",
"value": "Doe"
}
],
"@type": "RelatedPartyTtContactMedium"
}
],
"relatedEntity": [
{
"id": "LD000000",
"role":"orangeServiceNumber"
},
{
"id": "LD000001",
"role": "technicalNumber"
}
],
"externalId": "Customer Reference",
"description": "Please describe the issue here"
}
Response
You will receive a code 200
with the following body :
body_
{
"ticketId": {
"id": "1234567890"
}
}
This is the id of your trouble ticket.
Update a ticket with a new comment
Request
- Method :
PATCH
- URL : https://api.orange.com/orange-wholesale-trouble-tickets/v1/troubleTicket/{id}
- Authorization : OAuth 2.0 authentication to get the access token
- Header :
ApplicationID
In the URL, replace {id}
by the trouble ticket id you want to update.
Request body
{
"attachment": [],
"note": {
"date": "2023-08-28T14:40:38.041Z",
"type": "Comments",
"text": "Type the new comment here"
},
"relatedEntity": {
"id": "LD000000",
"role": "orangeServiceNumber"
}
}
Response
You will receive a code 200
meaning that the ticket has been successfully updated with your comment
Get the details of a Trouble Ticket based on the ID
Request
- Method :
GET
- URL : https://api.orange.com/orange-wholesale-trouble-tickets/v1/troubleTicket/{id}/
- Authorization : OAuth 2.0 authentication to get the access token
- Header :
ApplicationID
In the URL, replace {id}
by the trouble ticket id you want to consult.
Response
Body
You will receive a code 200
with the following body :
{
"ticket": {
"id": "1234567890",
"description": "null",
"note": [
{
"date": "2023-07-20T15:18:38.000Z",
"type": "Inward customer comments",
"text": "Comment 1",
"@type": "NoteTtType"
}
],
"creationDate": "2023-07-20T15:18:00.000Z",
"status": "ongoing",
"relatedentity": [
{
"id": "LD000000",
"role": "product"
},
{
"id": "LD000001",
"role": "additionalTechnicalInformation"
}
],
"resolutionDate": "1970-01-01T00:00:00.000Z",
"statusChange": {
"changeDate": "1970-01-01T00:00:00.000Z",
"changeReason": "Closure"
},
"externalId": "Customer reference",
"relatedParty": [
{
"contactMedium": [
{
"id": "+33 1234567890",
"contactType": "universalPhone"
},
{
"id": "+33 1234567890",
"contactType": "usPhone"
},
{
"id": "+33 1234567890",
"contactType": "frPhone"
},
{
"id": "++33 1234567890",
"contactType": "directPhone"
},
{
"id": "csciw@orange.com",
"contactType": "email"
},
{
"id": "+33 1234567890",
"contactType": "phone"
}
],
"name": "Customer Service Center International Wholesale",
"role": "csc",
"@type": "RelatedPartyTtContactMedium"
},
{
"contactMedium": [
{
"id": null,
"contactType": "universalPhone"
},
{
"id": null,
"contactType": "usPhone"
},
{
"id": null,
"contactType": "frPhone"
},
{
"id": null,
"contactType": "directPhone"
},
{
"id": null,
"contactType": "email"
},
{
"id": "+33 1234567890",
"contactType": "phone"
}
],
"name": "John Doe",
"role": "depositor",
"@type": "RelatedPartyTtContactMedium"
}
],
"attachment": {
"name": "{}"
},
"priority": null,
"escalationLevel": "0",
"@Type": "TtEscalationLevel"
}
}
Search for Trouble Tickets based on filters
Request
- Method :
GET
- URL : https://api.orange.com/orange-wholesale-trouble-tickets/v1/troubleTicket?ctxid=TCKTNG&sctxid=wse&sortAsc=false&sortColumn=START_DATE&creationDateFrom=&creationDateTo=&orangeServiceNumber=&reportedBy=&id=&status=-1
- Authorization : OAuth 2.0 authentication to get the access token
- Header :
ApplicationID
,offset
(The index of the first element to retrieve. Zero is the first item of the collection)
The API provides a filter mechanism with the following query parameters
ctxid
: The only accepted value is TCKTNGsctxid
: The only accepted value is wsesortAsc
: The accepted values are : true, falsesortColumn
: The accepted values are TICKET_NUMBER, ORANGE_SERVICE_NUMBER, STATUS START_DATE, CUSTOMER_REF, REPORTED_BYcreationDateFrom
: The accepted format is YYYY-MM-DDThh:mm:ss.mssZ (ex: 2023-08-28T14:40:38.041Z)creationDateTo
: The accepted format is YYYY-MM-DDThh:mm:ss.mssZ (ex: 2023-08-28T14:40:38.041Z)orangeServiceNumber
: Your Orange service numberreportedBy
: The name of the ticket reporterid
: The id of the trouble ticketstatus
: The status of the trouble ticket. The accepted values are submitted, in_qualification, ongoing, restored, repaired, closed, frozen, errored, -1
Response
You will receive a code 200
with 2 headers :
Header
X_Page_Count
, the number of pagesX-Total-Count
, the number of all trouble tickets matching selected criteria.
And the following body (in this example, we only show one result, but you can have many entries)
Body
{
"search": {
"tickets": [
{
"id": "1234567890",
"description": Description of the ticket,
"creationDate": "2023-12-01T15:01:00.000Z",
"status": "ongoing",
"relatedentity": [
{
"id": "LD000000",
"role": "product"
},
{
"id": "LD000000",
"role": "additionalTechnicalInformation"
}
],
"resolutionDate": "1970-01-01T00:00:00.000Z",
"statusChange": {
"changeDate": "1970-01-01T00:00:00.000Z",
"changeReason": "Closure"
},
"externalId": null,
"relatedParty": [
{
"contactMedium": [
{
"id": null,
"contactType": "universalPhone"
},
{
"id": null,
"contactType": "usPhone"
},
{
"id": null,
"contactType": "frPhone"
},
{
"id": null,
"contactType": "directPhone"
},
{
"id": null,
"contactType": "email"
},
{
"id": null,
"contactType": "phone"
}
],
"name": "John Doe",
"role": "depositor",
"@type": "RelatedPartyTtContactMedium"
}
],
"attachment": {
"name": null
},
"priority": null,
"escalationLevel": "0",
"@Type": "TtEscalationLevel"
},
API Error handling
- Code : 400
- Meaning : Bad request
{
"code": 0,
"message": "string",
"description": "string",
"infoURL": "string"
}
- Code : 404
- Meaning : Not Found
{
"code": 0,
"message": "string",
"description": "string",
"infoURL": "string"
}
- Code : 405
- Meaning : Method Not Allowed
{
"code": 0,
"message": "string",
"description": "string",
"infoURL": "string"
}
- Code : 422
- Meaning : Unprocessable entity Business error
{
"code": 0,
"message": "string",
"description": "string",
"infoURL": "string"
}
- Code : 500
- Meaning : Internal Server Error
{
"code": 0,
"message": "string",
"description": "string",
"infoURL": "string"
}
- Code : 503
- Meaning : Service Unavailable
{
"code": 0,
"message": "string",
"description": "string",
"infoURL": "string"
}
Get the status of the API
Request
- Method :
GET
- URL : https://api.orange.com/orange-wholesale-trouble-tickets/v1/status
- Authorization : OAuth 2.0 authentication to get the access token
- Header :
ApplicationID
Response
Body
You will receive a code 200
with the following body :
{
"status": "ok",
"name": "API Ticketing WIN_BUS",
"version": "",
"components": {
"status": "ok",
"name": "WSE",
"version": ""
}
}