Api >

Service Portal REST API

PUT updates requested Frontdesk Service's data
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{
  "data": [{
    "name": "displayName",
    "value": "New Frontdesk Service"
  }, {
    "name": "extensionNumber",
    "value": "72"
  }, {
    "name": "introText",
    "value": "New Frontdesk intro text"
  }, {
    "name": "context",
    "value": "New context"
  }]
}
Then I should receive HTTP/1.1 204 No Content
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/2"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "New Frontdesk Service"
  }, {
    "name": "displayName",
    "value": "New Frontdesk Service"
  }, {
    "name": "extensionNumber",
    "value": "72"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "New context"
  }, {
    "name": "introText",
    "value": "New Frontdesk intro text"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }, {
    "name": "language",
    "value": "de"
  }]
}
PUT updates requested Frontdesk fallback target
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
and there exists a Conference Service with serviceNumber 12 for customer K0002
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body
{
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/12"
  }],
  "data": [{
    "name": "language",
    "value": "pl"
  }]
}
Then I should receive HTTP/1.1 204 No Content
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/12"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "Frontdesk basic agent"
  }, {
    "name": "displayName",
    "value": "Frontdesk basic agent"
  }, {
    "name": "extensionNumber",
    "value": "35"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "frontdesk agent context"
  }, {
    "name": "introText",
    "value": "welcome frontdesk agent"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }, {
    "name": "language",
    "value": "pl"
  }]
}
PUT does not update Frontdesk fallback target with incorrect value
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
and there exists a Conference Service with serviceNumber 12 for customer K0002
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002"
  }]
}
Then I should receive HTTP/1.1 400 Bad Request with following body:
{
  "detail": "Could not create or update resource due to constraint violations",
  "title": "Validation error",
  "errors": [{
    "message": "Invalid fallback target: resolved entity is not a valid destination",
    "path": "fallbackTarget",
    "value": "/api/customers/K0002"
  }],
  "described_by": "http://api.nfon.net/probs/validation-error"
}
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/2"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "Frontdesk basic agent"
  }, {
    "name": "displayName",
    "value": "Frontdesk basic agent"
  }, {
    "name": "extensionNumber",
    "value": "35"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "frontdesk agent context"
  }, {
    "name": "introText",
    "value": "welcome frontdesk agent"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }]
}
PUT does not update Frontdesk Service if display name contains invalid characters or missing parameters
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{
  "data": [{
    "name": "displayName",
    "value": "invalid display=name"
  }]
}
Then I should receive HTTP/1.1 400 Bad Request with following body:
{
  "errors": [{
    "message": "Display name should not contain these characters: & $ ! ? = | \" { }",
    "path": "displayName",
    "value": "invalid display=name"
  }]
}
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/2"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "Frontdesk basic agent"
  }, {
    "name": "displayName",
    "value": "Frontdesk basic agent"
  }, {
    "name": "extensionNumber",
    "value": "35"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "frontdesk agent context"
  }, {
    "name": "introText",
    "value": "welcome frontdesk agent"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }]
}
PUT does not update Frontdesk Service with too long display name
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{
  "data": [{
    "name": "displayName",
    "value": "this is a way, way, way, way, way, way, way, way, way to long displayName"
  }]
}
Then I should receive HTTP/1.1 400 Bad Request with following body:
{
  "errors": [{
    "message": "Display name should have a length between 1 and 50 characters",
    "path": "displayName",
    "value": "this is a way, way, way, way, way, way, way, way, way to long displayName"
  }]
}
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/2"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "Frontdesk basic agent"
  }, {
    "name": "displayName",
    "value": "Frontdesk basic agent"
  }, {
    "name": "extensionNumber",
    "value": "35"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "frontdesk agent context"
  }, {
    "name": "introText",
    "value": "welcome frontdesk agent"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }]
}
PUT does not update Frontdesk Service with invalid format of extension number
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{
  "data": [{
    "name": "extensionNumber",
    "value": "0123"
  }]
}
Then I should receive HTTP/1.1 400 Bad Request with following body:
{
  "errors": [{
    "message": "Invalid extension number format. Must not start with the dial-out-prefix (default 0)",
    "path": "extensionNumber",
    "value": "0123"
  }]
}
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/2"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "Frontdesk basic agent"
  }, {
    "name": "displayName",
    "value": "Frontdesk basic agent"
  }, {
    "name": "extensionNumber",
    "value": "35"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "frontdesk agent context"
  }, {
    "name": "introText",
    "value": "welcome frontdesk agent"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }]
}
PUT does not update Frontdesk Service with too long extension number
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{
  "data": [{
    "name": "extensionNumber",
    "value": "12345678901234567890123456789"
  }]
}
Then I should receive HTTP/1.1 400 Bad Request with following body:
{
  "errors": [{
    "message": "Extension number length should not exceed 20 characters",
    "path": "extensionNumber",
    "value": "12345678901234567890123456789"
  }]
}
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/2"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "Frontdesk basic agent"
  }, {
    "name": "displayName",
    "value": "Frontdesk basic agent"
  }, {
    "name": "extensionNumber",
    "value": "35"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "frontdesk agent context"
  }, {
    "name": "introText",
    "value": "welcome frontdesk agent"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }]
}
PUT does not update Frontdesk Service with duplicated extension number
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as customer K0002
and there exists a Frontdesk Service with:
  • extension 87
  • display name Frontdesk advanced agent
  • serviceNumber 456
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{
  "data": [{
    "name": "extensionNumber",
    "value": "87"
  }]
}
Then I should receive HTTP/1.1 400 Bad Request with following body:
{
  "detail": "Could not create or update resource due to constraint violations",
  "title": "Validation error",
  "errors": [{
    "message": "Extension number is not unique.",
    "path": "extensionNumber",
    "value": "87"
  }],
  "described_by": "http://api.nfon.net/probs/validation-error"
}
Given I am authenticated as customer K0002
Then request /api/customers/K0002/targets/frontdesk-services/123 should return
{
  "href": "/api/customers/K0002/targets/frontdesk-services/123",
  "links": [{
    "rel": "fallbackTarget",
    "href": "/api/customers/K0002/targets/conference-services/2"
  }, {
    "rel": "inboundTrunkNumbers",
    "href": "/api/customers/K0002/targets/frontdesk-services/123/inbound-trunk-numbers"
  }],
  "data": [{
    "name": "name",
    "value": "Frontdesk basic agent"
  }, {
    "name": "displayName",
    "value": "Frontdesk basic agent"
  }, {
    "name": "extensionNumber",
    "value": "35"
  }, {
    "name": "type",
    "value": "FRONTDESK"
  }, {
    "name": "serviceNumber",
    "value": 123
  }, {
    "name": "serviceCode",
    "value": "*710123"
  }, {
    "name": "context",
    "value": "frontdesk agent context"
  }, {
    "name": "introText",
    "value": "welcome frontdesk agent"
  }, {
    "name": "voice",
    "value": "de-DE-KatjaNeural"
  }, {
    "name": "description",
    "value": "frontdesk agent description"
  }]
}
Missing Customer
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as Admin
When I send /api/customers/K0404/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{}
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 K0404 has not been found",
  "described_by": "http://api.nfon.net/probs/customer-not-found"
}
PUT returns 403 if Customer is trying to update other Customer's Frontdesk Services
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as K0003
When I send /api/customers/K0002/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{}
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 update Frontdesk Service of Customer that does not belong to him
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as System Integrator S0002
When I send /api/customers/K0003/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{}
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 update Frontdesk Service of Customer that does not belong to him
Test setup
Given there is a Frontdesk Service with:
  • extension 35
  • display name Frontdesk basic agent
  • serviceNumber 123
  • description frontdesk agent description
  • context frontdesk agent context
  • introduction text welcome frontdesk agent
  • voice de-DE-KatjaNeural
  • fallback target reference /api/customers/K0002/targets/conference-services/2
Given I am authenticated as Operator C0002
When I send /api/customers/K0003/targets/frontdesk-services/123 as application/json; charset=UTF-8 with following body:
{}
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"
}