Api >

Service Portal REST API

GET list of Available Trunk Drop Extensions
Given there is a Trunk with ID 12
which has:
  • trunkNumber: 0
  • baseNumber: +48 (22) 123456
  • numberblockStart: 0
  • numberblockEnd: 20
And there are:
  • a Phone Extension with id 100 a Voicemail with id 101 and extension 123 and name Phone Extension
  • a Virtual Fax Extension with id 200 and extension 223 and name Virtual Fax Extension
  • a Group Service with id 300 and extension 323 and name Group Service
  • a Queue Service with id 400 and extension 423 and name Queue Service
  • a Skill Service with id 500 and extension 523 and name Skill Service
  • a IVR Service with id 600 and extension 723 and name IVR Service
  • a Time Control Service with id 700 and extension 823 and name Time Control Service
  • a Conference Service with id 800 and extension 923 and name Conference Service
  • a Direct Dial with id 900 and number *123
  • a Phone Book with id 1000 and number +49 (66) 1234-56 and name Phone Book
and I am authenticated as customer K0002
When I send /api/customers/K0002/trunks/0048.22.123456.0-20/available-drop-extensions?_orderBy=name&_orderBy=type
Then I should receive HTTP/1.1 200 OK
And Content-Type header should be application/vnd.collection.next+json
with following body:
{
  "href": "/api/customers/K0002/trunks/0048.22.123456.0-20/available-drop-extensions?_offset=0&_pagesize=16&_orderBy=name&_order=ASC&_orderBy=type",
  "offset": 0,
  "total": 10,
  "size": 10,
  "links": [],
  "items": [{
    "href": "/api/customers/K0002/targets/conference-services/1",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Conference Service"
    }, {
      "name": "displayName",
      "value": "Conference Service"
    }, {
      "name": "extensionNumber",
      "value": "923"
    }, {
      "name": "type",
      "value": "CONFERENCE"
    }, {
      "name": "serviceNumber",
      "value": 1
    }, {
      "name": "serviceCode",
      "value": "*780001"
    }]
  }, {
    "href": "/api/customers/K0002/targets/group-services/1",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Group Service"
    }, {
      "name": "displayName",
      "value": "Group Service"
    }, {
      "name": "extensionNumber",
      "value": "323"
    }, {
      "name": "type",
      "value": "GROUP"
    }, {
      "name": "serviceNumber",
      "value": 1
    }, {
      "name": "serviceCode",
      "value": "*750001"
    }]
  }, {
    "href": "/api/customers/K0002/targets/ivr-services/1",
    "links": [],
    "data": [{
      "name": "name",
      "value": "IVR Service"
    }, {
      "name": "displayName",
      "value": "IVR Service"
    }, {
      "name": "extensionNumber",
      "value": "723"
    }, {
      "name": "type",
      "value": "IVR"
    }, {
      "name": "serviceNumber",
      "value": 1
    }, {
      "name": "serviceCode",
      "value": "*760001"
    }]
  }, {
    "href": "/api/customers/K0002/targets/NO_ACTION",
    "links": [],
    "data": [{
      "name": "name",
      "value": "NO_ACTION"
    }, {
      "name": "displayName",
      "value": "NO_ACTION"
    }, {
      "name": "type",
      "value": "NO_ACTION"
    }]
  }, {
    "href": "/api/customers/K0002/targets/phone-extensions/123",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Phone Extension"
    }, {
      "name": "displayName",
      "value": "Phone Extension"
    }, {
      "name": "extensionNumber",
      "value": "123"
    }, {
      "name": "type",
      "value": "PHONE"
    }]
  }, {
    "href": "/api/customers/K0002/targets/phone-extensions/123/voice-mail",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Phone Extension"
    }, {
      "name": "displayName",
      "value": "Phone Extension"
    }, {
      "name": "extensionNumber",
      "value": "123"
    }, {
      "name": "type",
      "value": "VOICEMAIL"
    }]
  }, {
    "href": "/api/customers/K0002/targets/queue-services/1",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Queue Service"
    }, {
      "name": "displayName",
      "value": "Queue Service"
    }, {
      "name": "extensionNumber",
      "value": "423"
    }, {
      "name": "type",
      "value": "QUEUE"
    }, {
      "name": "serviceNumber",
      "value": 1
    }, {
      "name": "serviceCode",
      "value": "*770001"
    }]
  }, {
    "href": "/api/customers/K0002/targets/skill-services/1",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Skill Service"
    }, {
      "name": "displayName",
      "value": "Skill Service"
    }, {
      "name": "extensionNumber",
      "value": "523"
    }, {
      "name": "type",
      "value": "SKILL"
    }, {
      "name": "serviceNumber",
      "value": 1
    }, {
      "name": "serviceCode",
      "value": "*720001"
    }]
  }, {
    "href": "/api/customers/K0002/targets/time-control-services/1",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Time Control Service"
    }, {
      "name": "displayName",
      "value": "Time Control Service"
    }, {
      "name": "extensionNumber",
      "value": "823"
    }, {
      "name": "type",
      "value": "TIME"
    }, {
      "name": "serviceNumber",
      "value": 1
    }, {
      "name": "serviceCode",
      "value": "*740001"
    }]
  }, {
    "href": "/api/customers/K0002/targets/virtual-fax-extensions/223",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Virtual Fax Extension"
    }, {
      "name": "displayName",
      "value": "Virtual Fax Extension"
    }, {
      "name": "extensionNumber",
      "value": "223"
    }, {
      "name": "type",
      "value": "VIRTUALFAX"
    }, {
      "name": "serviceNumber",
      "value": 0
    }, {
      "name": "serviceCode",
      "value": "*730000"
    }]
  }]
}
GET filtered list of Available Trunk Drop Extensions
Given there is a Trunk with ID 12
which has:
  • trunkNumber: 0
  • baseNumber: +48 (22) 123456
  • numberblockStart: 0
  • numberblockEnd: 20
And there are:
  • a Queue Service with id 400 and extension 423 and name Queue Service
  • a Skill Service with id 500 and extension 523 and name Skill Service
and I am authenticated as customer K0002
When I send /api/customers/K0002/trunks/0048.22.123456.0-20/available-drop-extensions?_q=queue
Then I should receive HTTP/1.1 200 OK
And Content-Type header should be application/vnd.collection.next+json
with following body:
{
  "href": "/api/customers/K0002/trunks/0048.22.123456.0-20/available-drop-extensions?_offset=0&_pagesize=16&_q=queue&_orderBy=extensionNumber&_order=ASC",
  "offset": 0,
  "total": 1,
  "size": 1,
  "links": [],
  "items": [{
    "href": "/api/customers/K0002/targets/queue-services/1",
    "links": [],
    "data": [{
      "name": "name",
      "value": "Queue Service"
    }, {
      "name": "displayName",
      "value": "Queue Service"
    }, {
      "name": "extensionNumber",
      "value": "423"
    }, {
      "name": "type",
      "value": "QUEUE"
    }, {
      "name": "serviceNumber",
      "value": 1
    }, {
      "name": "serviceCode",
      "value": "*770001"
    }]
  }]
}
Missing Trunk
Given I am authenticated as Customer K0002
And there is no Trunk with Id +48 (22) 404(0-404) When I send /api/customers/K0002/trunks/0048.22.404.0-404/available-drop-extensions
Then I should receive HTTP/1.1 404 Not Found
And Content-Type header should be application/api-problem+json
with following body:
{
  "title": "Trunk not found",
  "detail": "Trunk with number 0048.22.404.0-404 has not been found",
  "described_by": "http://api.nfon.net/probs/trunk-not-found"
}
Missing Customer
Given I am authenticated as Admin
When I send /api/customers/K404/trunks/0048.22.123456.0-20/available-drop-extensions
Then I should receive HTTP/1.1 404 Not Found
And Content-Type header should be application/api-problem+json
with following body:
{
  "title": "Customer not found",
  "detail": "Customer with identifier K404 has not been found",
  "described_by": "http://api.nfon.net/probs/customer-not-found"
}
Customer cannot GET other Customer's Available Trunk Drop Extension list
Given I am authenticated as customer K0003
When I send /api/customers/K0002/trunks/0048.22.123456.0-20/available-drop-extensions
Then I should receive HTTP/1.1 403 Forbidden
And Content-Type header should be application/api-problem+json
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 Available Trunk Drop Extension list of Customer that does not belong to him
Given I am authenticated as System Integrator S0002
When I send /api/customers/K0003/trunks/0048.22.123456.0-20/available-drop-extensions
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 Available Trunk Drop Extension list of Customer that does not belong to him
Given I am authenticated as Operator C0002
When I send /api/customers/K0003/trunks/0048.22.123456.0-20/available-drop-extensions
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"
}