Api >

Service Portal REST API

GET retrieves all Customer's Targets
Given I am authenticated as customer K0002
Given there are following targets available:
  • Phone Extension Phone (ext. 17)
  • Virtual Fax Extension Fax (ext. 18)
  • Group Service Group (service num. 24)
  • IVR Service IVR (service num. 56)
  • Queue Service Queue (service num. 23)
  • Skill Service Skill (service num. 79)
  • Time Control Service Time Control (service num. 83)
  • Conference Service Conference (service num. 93)
When I send /api/customers/K0002/targets
Then I should receive HTTP/1.1 200 OK
with following body:
{
  "href": "/api/customers/K0002/targets?_offset=0&_pagesize=16&_orderBy=extensionNumber&_order=ASC",
  "offset": 0,
  "total": 8,
  "size": 8,
  "links": [],
  "items": [{
    "href": "/api/customers/K0002/targets/queue-services/23",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Queue"
    }, {
      "name": "displayName",
      "value": "Queue"
    }, {
      "name": "type",
      "value": "QUEUE"
    }, {
      "name": "serviceNumber",
      "value": 23
    }, {
      "name": "serviceCode",
      "value": "*770023"
    }]
  }, {
    "href": "/api/customers/K0002/targets/phone-extensions/17",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Phone"
    }, {
      "name": "displayName",
      "value": "Phone"
    }, {
      "name": "extensionNumber",
      "value": "17"
    }, {
      "name": "type",
      "value": "PHONE"
    }]
  }, {
    "href": "/api/customers/K0002/targets/virtual-fax-extensions/18",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Fax"
    }, {
      "name": "displayName",
      "value": "Fax"
    }, {
      "name": "extensionNumber",
      "value": "18"
    }, {
      "name": "type",
      "value": "VIRTUALFAX"
    }, {
      "name": "serviceNumber",
      "value": 0
    }, {
      "name": "serviceCode",
      "value": "*730000"
    }]
  }, {
    "href": "/api/customers/K0002/targets/group-services/24",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Group"
    }, {
      "name": "displayName",
      "value": "Group"
    }, {
      "name": "extensionNumber",
      "value": "2"
    }, {
      "name": "type",
      "value": "GROUP"
    }, {
      "name": "serviceNumber",
      "value": 24
    }, {
      "name": "serviceCode",
      "value": "*750024"
    }]
  }, {
    "href": "/api/customers/K0002/targets/ivr-services/56",
    "links": [],
    "data": [{
      "name": "name",
      "value": "IVR"
    }, {
      "name": "displayName",
      "value": "IVR"
    }, {
      "name": "extensionNumber",
      "value": "3"
    }, {
      "name": "type",
      "value": "IVR"
    }, {
      "name": "serviceNumber",
      "value": 56
    }, {
      "name": "serviceCode",
      "value": "*760056"
    }]
  }, {
    "href": "/api/customers/K0002/targets/skill-services/79",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Skill"
    }, {
      "name": "displayName",
      "value": "Skill"
    }, {
      "name": "extensionNumber",
      "value": "4"
    }, {
      "name": "type",
      "value": "SKILL"
    }, {
      "name": "serviceNumber",
      "value": 79
    }, {
      "name": "serviceCode",
      "value": "*720079"
    }]
  }, {
    "href": "/api/customers/K0002/targets/time-control-services/83",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Time Control"
    }, {
      "name": "displayName",
      "value": "Time Control"
    }, {
      "name": "extensionNumber",
      "value": "5"
    }, {
      "name": "type",
      "value": "TIME"
    }, {
      "name": "serviceNumber",
      "value": 83
    }, {
      "name": "serviceCode",
      "value": "*740083"
    }]
  }, {
    "href": "/api/customers/K0002/targets/conference-services/93",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Conference"
    }, {
      "name": "displayName",
      "value": "Conference"
    }, {
      "name": "extensionNumber",
      "value": "6"
    }, {
      "name": "type",
      "value": "CONFERENCE"
    }, {
      "name": "serviceNumber",
      "value": 93
    }, {
      "name": "serviceCode",
      "value": "*780093"
    }]
  }]
}
GET does not returns extensionNumber for Service if it starts with asterisk '*'
Given I am authenticated as customer K0002
Given there are following targets available:
  • Skill Service Skill (service num. 79, ext. *123)
When I send /api/customers/K0002/targets
Then I should receive HTTP/1.1 200 OK
with following body:
{
  "href": "/api/customers/K0002/targets?_offset=0&_pagesize=16&_orderBy=extensionNumber&_order=ASC",
  "offset": 0,
  "total": 1,
  "size": 1,
  "links": [],
  "items": [{
    "href": "/api/customers/K0002/targets/skill-services/79",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Skill"
    }, {
      "name": "displayName",
      "value": "Skill"
    }, {
      "name": "type",
      "value": "SKILL"
    }, {
      "name": "serviceNumber",
      "value": 79
    }, {
      "name": "serviceCode",
      "value": "*720079"
    }]
  }]
}
GET does not return extensionNumber for Extension if it starts with asterisk '*'
Given I am authenticated as customer K0002
Given there are following targets available:
  • Virtual Fax Extension Fax (ext. *18)
When I send /api/customers/K0002/targets
Then I should receive HTTP/1.1 200 OK
with following body:
{
  "href": "/api/customers/K0002/targets?_offset=0&_pagesize=16&_orderBy=extensionNumber&_order=ASC",
  "offset": 0,
  "total": 1,
  "size": 1,
  "links": [],
  "items": [{
    "href": "/api/customers/K0002/targets/virtual-fax-extensions/_0",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Fax"
    }, {
      "name": "displayName",
      "value": "Fax"
    }, {
      "name": "type",
      "value": "VIRTUALFAX"
    }, {
      "name": "serviceNumber",
      "value": 0
    }, {
      "name": "serviceCode",
      "value": "*730000"
    }]
  }]
}
Cannot read data for missing Customer
Given I am authenticated as Admin
When I send /api/customers/K0404/targets
Then I should receive HTTP/1.1 404 Not Found
with following body:
{
  "described_by": "http://api.nfon.net/probs/customer-not-found",
  "title": "Customer not found",
  "detail": "Customer with identifier K0404 has not been found"
}
GET does not retrieve Targets held by other Customer
Given I am authenticated as Customer K0003
and there is a Phone Extension with extension number 17 and display name Phone Extension that belongs to K0002
When I send /api/customers/K0002/targets
Then I should receive HTTP/1.1 403 Forbidden
with following body:
{
  "title": "Access forbidden",
  "detail": "Access denied to [Customer] with id [K0002]",
  "described_by": "http://api.nfon.net/probs/invalid-authorization"
}
System Integrator cannot access Targets of Customer that does not belong to him
Given I am authenticated as System Integrator S0002
When I send /api/customers/K0003/targets
Then I should receive HTTP/1.1 403 Forbidden
with following body
{
  "title": "Access forbidden",
  "detail": "Access denied to [Customer] with id [K0003]",
  "described_by": "http://api.nfon.net/probs/invalid-authorization"
}
Operator cannot access Targets of Customer that does not belong to him
Given I am authenticated as Operator C0002
When I send /api/customers/K0003/targets
Then I should receive HTTP/1.1 403 Forbidden
with following body
{
  "title": "Access forbidden",
  "detail": "Access denied to [Customer] with id [K0003]",
  "described_by": "http://api.nfon.net/probs/invalid-authorization"
}
GET retrieves filtered Customer's Targets
Filtering is done on fields :
  • name
  • extensionNumber
  • serviceNumber
Given I am authenticated as customer K0002
Given there are following targets available:
  • Phone Extension Jen 18 (ext. 17)
  • Phone Extension Jenny (ext. 188)
  • Conference Service Conference (service num. 18)
  • Phone Extension Jan (ext. 19)
When I send /api/customers/K0002/targets?_q=18
Then I should receive HTTP/1.1 200 OK
with following body:
{
  "href": "/api/customers/K0002/targets?_offset=0&_pagesize=16&_q=18&_orderBy=extensionNumber&_order=ASC",
  "offset": 0,
  "total": 3,
  "size": 3,
  "links": [],
  "items": [{
    "href": "/api/customers/K0002/targets/phone-extensions/17",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Jen 18"
    }, {
      "name": "displayName",
      "value": "Jen 18"
    }, {
      "name": "extensionNumber",
      "value": "17"
    }, {
      "name": "type",
      "value": "PHONE"
    }]
  }, {
    "href": "/api/customers/K0002/targets/phone-extensions/188",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Jenny"
    }, {
      "name": "displayName",
      "value": "Jenny"
    }, {
      "name": "extensionNumber",
      "value": "188"
    }, {
      "name": "type",
      "value": "PHONE"
    }]
  }, {
    "href": "/api/customers/K0002/targets/conference-services/18",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Conference"
    }, {
      "name": "displayName",
      "value": "Conference"
    }, {
      "name": "extensionNumber",
      "value": "2"
    }, {
      "name": "type",
      "value": "CONFERENCE"
    }, {
      "name": "serviceNumber",
      "value": 18
    }, {
      "name": "serviceCode",
      "value": "*780018"
    }]
  }]
}