Nextpertise API v1.22 Documentation
Last modified: May 6, 2020
Getting Started
https://api.nextpertise.nl/Getting Started/v1
Nextpertise's API aims to expose the entire Nextpertise infrastructure via a standardized programmatic interface. Using Nextpertise's API, you can do EVERYTHING you can do on incontrol.nextpertise.nl webportal.

The Nextpertise API is a JSON-RPC API based on HTTPS requests. If you are a Nextpertise partner, you can obtain your InControl user credential which is also valid as API credential.

Who is Nextpertise?

Nextpertise is a Dutch Internet Service Provider (ISP) which focused on Broadband connections and Managed Infrastructure. Nextpertise is known for Wholesale Broadband Access and Managed Infrastructure services as Private Cloud, Kubernetes Hosting, DNS and Radius services.

Nextpertise offers public APIs with three audiences in mind.
  • Nextpertise partners
  • Nextpertise customers
  • Developers

Endpoints

The API is accessed by making HTTPS requests to a specific version endpoint URL. All request are HTTP POST methods with a JSON-RPC payload. Every endpoint is accessed only via the SSL-enabled HTTPS (port 443) protocol. The last parameter in the endpoint is the version number. Currently we are on Version 1 for all endpoints.

The stable prefix URL for all endpoints is:

https://api.nextpertise.com/<product_class>/v1

Requests

Requests must be sent over HTTPS with any payload formatted in JSON-RPC. Request must contain a
Authentication
header.

Using JSON

The API uses JSON-RPC 2.0 over HTTP for all interaction. To access the API you need to POST a JSON document to the product class URL.

There are many implementations of JSON-RPC clients in several popular languages available. In this document we will use the Linux command line tool curl in all examples. This is done because it illustrates 'what goes over the line' and to remain independent of a particular implementation language.

A JSON-RPC request is a JSON document containing 4 fields:
{  "jsonrpc": "2.0",  "id": <correlation id>,  "method": "<name of method to call>",  "params": {   "method_parameter_1": ...,   "method_parameter_N": ...  } }
The method parameters (actually the entire contents of the params field) are structurally validated using JSON Schema.

Using JSON Schema

The JSON Schema files are accessible under http://api.nextpertise.nl/schemas.

There is a direct correspondance between the API endpoint URL https://api.nextpertise.nl/broadband/basic/v1 for the zipcode method and the URL for the accompanying schemas
https://api.nextpertise.nl/schemas/broadband/basic/zipcode_request_v1.json and https://api.nextpertise.nl/schemas/broadband/basic/zipcode_reply_v1.json.

Authenticate

In order to use the API one needs to authenticate first.

API endpoints are accessible via the same credentials as the InControl webportal. All user accounts are available on both Basic Auth authentication (rfc7617) as on JWT authentication (rfc6749/rfc7519). All accounts are protected by either IP whitelisting or a TOTP Token (rfc6238) as second factor (or both). Both IP whitelisting as 2FA TOTP are managed from the Profile page in InControl or the User API methods
get_profile()
and
set_profile()
.

Basic Authentication Example

With curl you would use it as:
curl -u '<username>:<password>' https://api.nextpertise.nl/user/v1 -d '{}'

JWT Authentication Example

The token is used to request access to the API services:
curl -s -H 'Authorization: Bearer <your token>' https://api.nextpertise.nl/user/v1 ...
When applying for additional API access accounts you will receive a username password combination that can be used for JWT Authentication.

A JWT token is obtained by logging in:
curl -s https://api.nextpertise.nl/jwt/log-in -d '{  "username": "<your username>",  "password": "<your password>" }
This will produce a token which is valid for 18 hours.

The token is invalidated by calling:
curl -s -X POST -H 'Authorization: Bearer <your token>' https://api.nextpertise.nl/jwt/log-out
Errors
https://api.nextpertise.nl/Errors/v1
Errors are per JSON-RPC 2.0 specification returned through the error object.

There is an exception though. The basic zipcode() and extended zipcode() functions return the combined results of multiple backend calls. A single backend error would therefore suppress the valid results from the other providers. To alleviate this these two functions may return errors inline with the other results in their error keys.
List of errors
Code Description
001 Undocumented Error, please report to Nextpertise and refer to cid: %s. This error message indicates that something happened that we didn't anticipate. By reporting this incident to Nextpertise, mentioning the cid (correlation id) we may be able to resolve this and provide a better error message in the future.
002 Invalid zipcode/housenr combination: (%s,%d,%s). The given zipocde, house number, house number extension is not recognized as a valid combination. Use the The Postcodes API functions to select a valid combination.
003 The given address is valid but the provider does not service this address. This is most likely due to infrastructural constraints that will not change in the foreseeable future.
004 Service temporarily not available at this address (%s,%d,%s). The given address is valid but the provider cannot service this address or offer any information about it. This is must likely due to a temporary disruption in the backoffice system of the provider.
005 User is not authorised to order (%s). The user is not authorised to order product %s. By contacting Nextpertise we can discuss your options for future orders.
006 Failed to create requested (%s). Something went wrong during the creation of %s. This error can occur due to multiple reasons, for instance:

  • The (%s) already exists.
  • Prerequisites don't exist.
  • To create an mailbox, a client must exist already. (create_mailbox()).
  • To create a forwarder, the email can't exist yet as mailbox. (create_forwarder()).
007 Failed to delete requested (%s). Something went wrong during the deletion of (%s). As of now, there is one main reason why this error occurs, i.e.:

  • The (%s) does not exist.
008 Failed to update requested (%s). Something went wrong while updating (%s). As of now, there is one main reason why this error occurs, i.e.:

  • The (%s) does not exist.
010 Connection too complex for this version of the software. Please contact Nextpertise.
This error may occur when requesting a zipcode check on KPN WBA on an address that KPN has labeled a 'Complex Address'.
Eventually we expect to be able to handle this situation in the API but for now the only recourse is to contact Nextpertise.
011 JSON-RPC request or reply does not comply with its schema.
This error may occur when posting an invalid request to the API, but also when the API returns an invalid response. Nextpertise's internal APIs are also validated against schemas so the error may have been generated in an internal API call trying to satisfy the initial request.
You can verify that the request you issue validates against the published schema for the API call. If you are certain your request is valid please contact Nextpertise so that we can resolve the problem.
012 Config Prohibited Error.
This error occurs when a user tries to perform an action it is not authorized to. Contact your employer if you feel this is not right..
HTTP Error codes
Code Description
401 Unauthorized.
404 Not Found.
Details
401
You tried to access a resource for which you are not authorized:
curl -v -u 'user:pass' https://api.nextpertise.nl/postcodes/v1 -d '{}'| jq .
produces:
> POST /postcodes/v1 HTTP/1.1 > Host: api.nextpertise.nl > Authorization: Basic dXNlcjpwYXNz > Content-Length: 2 > Content-Type: application/json > < HTTP/1.1 401 Forbidden < Date: Mon, 13 Apr 2020 07:33:47 GMT < Content-Type: application/json; charset=utf-8 < Content-Length: 45 < Access-Control-Allow-Origin: * < { "message" : "You cannot consume this service" }
404
You tried to access a resource that doesn't exist:
curl -v -u 'user:pass' https://api.nextpertise.nl/doesnotexist
produces:
> GET /doesnotexist HTTP/1.1 > Host: api.nextpertise.nl > Authorization: Basic dXNlcjpwYXNz > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 404 Not Found < Date: Mon, 13 Apr 2020 07:51:05 GMT < Content-Type: text/html; charset=iso-8859-1 < Content-Length: 196 < Access-Control-Allow-Origin: * < < !DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.

</body></html>
Broadband
https://api.nextpertise.nl/broadband/v1
JSON-RPC
cancel_connection()
permission needed: #broadband-ordering-d
Since v1.19.0

Cancel order


Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "cancel_connection",
  "params": {
    "nid": "2408ZE000100100"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "result": {},
  "id": 1
}
JSON-RPC
carriercheck()
permission needed: #broadband-r
Since v1.10.0

Requests an overview of the ISRA/FTU access points available on a specific location.


Request params
open_in_new
Name Type Description
zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
housenr integer The house number that with the zipcode identifies an address.
housenrext string, null House number suffix.
carrier enum Enum options:
Copper|Fiber
. Select the kind of carrier 'Copper' or 'Fiber' to query.

Reply params
open_in_new
Name Type Description
line object, one of Describes the layout and contents of an copper endpoint.
    kind enum Enum options:
Copper
. Declares this object to describe a Copper endpoint
    status string, null Service is possible or not.
    number string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
    vendor string
    type string, null A string or no value at all.
    serviceid string, null
    additionalserviceid string, null
    connectionpoint array
    connectionpoint[#] object Describes a set of copper connectors.
        name string Connection point name
        isra string ISRA point identification
        nl1lines integer Number of lines present at the location
        nl1lines_available integer Number of unassigned lines at the location. Unassigned means that neither telephone nor broadband services are using these lines.
        nl2lines null, integer
        connection array
        connection[#] object Describes how a single connector is being used.
            type integer, null An integer or no value at all.
            nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
            serviceid null, string Service label, matches the carrier's nid when the service is provided by Nextpertise.
            number string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
            phonetype string, null A string or no value at all.
            futuretype integer, null An integer or no value at all.
            futurenid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
            futureserviceid null, string Service label, matches the carrier's nid when the service is provided by Nextpertise.
            futurenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
            futurephonetype string, null A string or no value at all.
        bonding_allowed integer, null An integer or no value at all.
        plan_date string, null A string or no value at all.
        cable_length integer, null An integer or no value at all.
        san_only string, null A string or no value at all.
    plan_date string, null A string or no value at all.
    isra_pin integer, null An integer or no value at all.
line object, one of Describes the layout and contents of a fiber endpoint.
    kind enum Enum options:
Fiber
. undefined
    areapop string, null
    vendor string
    connectionpoint array
    connectionpoint[#] object Describes the layout and contents of an fiber endpoint.
        id string, null A string or no value at all.
        ftu_type string, null A string or no value at all.
        connection array
        connection[#] object Describes how a single connector is being used.
            type integer
            odfid null, string Service label, matches the carrier's nid when the service is provided by Nextpertise.
            nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
            futuretype integer, null An integer or no value at all.
            futureodfid null, string Service label, matches the carrier's nid when the service is provided by Nextpertise.
            futurenid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
        carrier_status string, null A string or no value at all.
        nlstype null, string, integer
        plan_date string, null A string or no value at all.
        has_date string, null A string or no value at all.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "carriercheck",
  "params": {
    "carrier": "Copper",
    "zipcode": "2408ZE",
    "housenr": 2,
    "housenrext": null
  }
}
Reply example
{
  "result": {
    "line": {
      "isra_pin": null,
      "type": null,
      "kind": "Copper",
      "number": null,
      "status": null,
      "connectionpoint": [
        {
          "isra": "001/B/MTK/METERKAST",
          "san_only": "False",
          "nl1lines_available": 0,
          "name": "Berh",
          "nl2lines": 0,
          "connection": [
            {
              "futurephonetype": null,
              "type": 10,
              "nid": null,
              "number": null,
              "futureserviceid": null,
              "serviceid": "ABC12345",
              "phonetype": null,
              "futurenid": null,
              "futurenumber": null,
              "futuretype": 9
            }
          ],
          "plan_date": null,
          "nl1lines": 1,
          "cable_length": 13,
          "bonding_allowed": 2
        }
      ],
      "vendor": "MDF",
      "plan_date": null
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}
JSON-RPC
change_connection()
permission needed: #broadband-ordering-c
Since v1.20.0

Upgrades or downgrades connection


Request params
open_in_new
Name Type Description
carrier integer Identifies an individual product by numeric id.
circuit array
circuit[#] object
    circuit integer Identifies an individual product by numeric id.
    tags array
    tags[#] string Regex:
[a-zA-Z0-9=:_-]+
.
    vlan integer
    vci integer
    vpi integer
    nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
tags array
tags[#] string Regex:
[a-zA-Z0-9=:_-]+
.
contact_name string
contact_phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
contract_duration integer
additional_contact_phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
custwishdate string, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.

Reply params
open_in_new
Name Type Description
planned boolean
updating object
    ^[1-9][0-9]{3}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$ object
        vlan boolean
        circuit_product boolean
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "change_connection",
  "params": {
    "nid": "2408ZE000100100",
    "contract_duration": 12,
    "contact_name": "test",
    "enduser": {
      "uuid": "abcde123-0123-4abc-9876-012345678912"
    },
    "contact_phonenumber": "0101234567",
    "circuit": [
      {
        "circuit": 756,
        "nid": "2408ZE000100101",
        "vlan": 6
      },
      {
        "circuit": 756,
        "vlan": 7
      }
    ]
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "planned": false,
    "updating": {
      "2408ZE000100101": {
        "circuit_product": false,
        "vlan": false
      }
    }
  }
}
JSON-RPC
check_authentication()
permission needed: #broadband-r
Since v1.18.0

Request params
open_in_new
Name Type Description
username string
password string

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "check_authentication",
  "params": {
    "username": "testing@example.com",
    "password": "password"
  }
}
Reply example
{
  "result": "Mon Apr 13 10:02:48 CEST 2020\nSent Access-Request\n\tUser-Name = \"testing@example.com\"\n\tUser-Password = \"password\"\n\tFramed-Protocol = \"PPP\"\nReceived Access-Reject\n",
  "jsonrpc": "2.0",
  "id": 1
}
JSON-RPC
get_firewall()
permission needed: #broadband-r
Since v1.20.0

Request params
open_in_new
Name Type Description
name string

Reply params
open_in_new
Name Type Description
name string
raw string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_firewall",
  "params": {
    "name": "yourplatform"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "name": "yourplatform",
    "raw": "\nip:inacl#10=permit ip {{ primary_ipv4_address }} {{ primary_ipv4_wildcard }} 1.2.3.0 0.0.0.255\n ip:inacl#11=permit ip {{ primary_ipv4_address }} {{ primary_ipv4_wildcard }} 4.5.6.0 0.0.0.255\n ip:inacl#13=permit ip {{ primary_ipv4_address }} {{ primary_ipv4_wildcard }} host 5.6.7.8\n ip:inacl#99=deny ip any any"
  }
}
JSON-RPC
get_ordered_products()
permission needed: #broadband-r
Since v1.4.0

Get a list of the ordered broadband products.


Request params
open_in_new
Name Type Description
filter object Select relevant products by using one of the filter properties.
    state array The status of the product(s) must have one of the given values.
    state[#] enum Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED
. undefined
    plan_date string Regex:
^[0-9-]+$
. Select product where (part of) the plan date matches the given value.
    order_date string Regex:
^[0-9-]+$
. Select products where (part of) the order date matches the given value.
    street string Select products where (part of) the street name matches the given value.
    housenr string Select products where (part of) the house number matches the given value.
    housenrext string Select products where (part of) the house number extension matches the given value.
    zipcode string Select products where (part of) the zipcode matches the given value.
    city string Select products where (part of) the city name matches the given value.
    last_username string The last seen username on this circuit.
    last_ipv4 string, null Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))?$
. The last seen primary IPv4 address online on this circuit.
    sla string Select products where (part of) the SLA name matches the given value.
    online array Select products where the online status matches one or more of the array elements.
    online[#] enum Enum options:
online|offline|unknown
. undefined
    supplier string Select products where (part of) the supplier name matches the given value.
    base_technology string Select products where (part of) the base technology name matches the given value.
    data_technology string Select products where (part of) the data technology name matches the given value.
    carrier_tags array, one of
    carrier_tags[#] string
    carrier_tags string, one of
    circuit_tags array, one of
    circuit_tags[#] string
    circuit_tags string, one of
    carrier_nid string Select carrier product by its NID.
    circuit_nid string Select circuit product by its NID.
    enduser_uuid string Select carrier product by enduser_uuid.
    customer_id integer
    israpin integer, null Pin in isra on which the wire terminates.
    israspecs string, null Label of the ISRA location.
    carrier_type enum Enum options:
Copper|Copper_shared|Copper_only|BCopper_only|Fiber|FttH|FttO
. Defines the physical medium for internet access and whether the medium is shared with other (voice) services. FttH and FttO are both Fiber connections with other parameters.
    additional_serviceid string, null
    phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
    ftu_type string, null Define the Fiber Termination Unit.
    additional_israpin integer, null Pin in isra on which the second wire of a bonded connection terminates.
    vlan string, null VLAN ID when applicable
    vci integer, null VCI value when applicable
    vpi integer, null VPI value when applicable
    routed_ipv4 array
    routed_ipv4[#] string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
    firewall string, null A string or no value at all.
    ipvpn string
    authentication boolean
    primary_ipv4 string, null
    blocked boolean
    enabled boolean
    username string
sort object Sort (filtered) products by using one of the sort properties.
    state enum Enum options:
ASC|DESC
. Sort by type.
    plan_date enum Enum options:
ASC|DESC
. Sort by plan date.
    order_date enum Enum options:
ASC|DESC
. Sort by order date.
    street enum Enum options:
ASC|DESC
. Sort by street name.
    housenr enum Enum options:
ASC|DESC
. Sort by house number.
    housenrext enum Enum options:
ASC|DESC
. Sort by house number extension.
    zipcode enum Enum options:
ASC|DESC
. Sort by zipcode.
    city enum Enum options:
ASC|DESC
. Sort by city.
    last_username enum Enum options:
ASC|DESC
. Sort by RADIUS user name.
    ipv4 enum Enum options:
ASC|DESC
. Sort by IP4 address.
    sla enum Enum options:
ASC|DESC
. Sort by SLA product name.
    online enum Enum options:
ASC|DESC
. Sort by online status.
    supplier enum Enum options:
ASC|DESC
. Sort by product supplier.
    base_technology enum Enum options:
ASC|DESC
. Sort by base technology.
    data_technology enum Enum options:
ASC|DESC
. Sort by data technology.
paging object Request pagination of the result set.
    offset integer First record to include in result set.
    length integer Number of records to return, when the result set is smaller than this number it indicates that the last page is reached.

Reply params
open_in_new
Name Type Description
count integer count of all products
products object Group ordered products by product category
    broadband array List of ordered broadband products. Products are grouped by the connection they implement.
    broadband[#] object Describe a single broadband connection
        carrier object Describe the carrier component of the connection.
            nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
            tags array
            tags[#] string
            product object
                product_id integer Identifies an individual product by numeric id.
                name string The product name.
                description null, string Describes the product.
                extrainfo null, string Additional information about the product
            ftu_type string, null Define the Fiber Termination Unit.
            base_technology string Base technology for connection (POTS, SDSL, FIBER).
            carrier_type enum Enum options:
Copper|Copper_shared|Copper_only|BCopper_only|Fiber|FttH|FttO
. Defines the physical medium for internet access and whether the medium is shared with other (voice) services. FttH and FttO are both Fiber connections with other parameters.
            plan_date string, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
            data_technology string Data transfer technology (ADSL, VDSL, etc).
            state enum Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED|CANCEL_REQUESTED|CANCEL_REQUEST_CONFIRMED|TERMINATION_REQUESTED|TERMINATION_REQUEST_CONFIRMED|CHANGE_REQUESTED|CHANGE_REQUEST_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_TERMINATION_CONFIRMED
. State the product is in. One of PROCESSING Product is being ordered. ACTIVE Product is operational. TERMINATED Product is terminated.
            phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
            order_date string, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
            israspecs string, null Label of the ISRA location.
            israpin integer, null Pin in isra on which the wire terminates.
            additional_israpin integer, null Pin in isra on which the second wire of a bonded connection terminates.
            serviceid string, null
            additional_serviceid string, null
        circuits array List of circuits (EVCs) over this carrier
        circuits[#] object Describes a circuit component of the connection.
            nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
            tags array
            tags[#] string
            product object
                product_id integer Identifies an individual product by numeric id.
                name string The product name.
                description null, string Describes the product.
                extrainfo null, string Additional information about the product
            bandwidth_up integer Maximum upload capacity in kb/s.
            premium boolean Indicates if the circuit is a regular or premium product.
            bandwidth_down integer Maximum download capacity in kb/s.
            plan_date string, null, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
            vlan string, null VLAN ID when applicable
            vci integer, null VCI value when applicable
            state enum Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED|CANCEL_REQUESTED|CANCEL_REQUEST_CONFIRMED|TERMINATION_REQUESTED|TERMINATION_REQUEST_CONFIRMED|CHANGE_REQUESTED|CHANGE_REQUEST_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_TERMINATION_CONFIRMED
. Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED|CANCEL_REQUESTED|CANCEL_REQUEST_CONFIRMED|TERMINATION_REQUESTED|TERMINATION_REQUEST_CONFIRMED|CHANGE_REQUESTED|CHANGE_REQUEST_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_TERMINATION_CONFIRMED
. State the product is in. One of PROCESSING Product is being ordered. ACTIVE Product is operational. TERMINATED Product is terminated.
            last_ipv4 string, null The IPv4 address assigned to this circuit.
            online enum Enum options:
online|offline|unknown
. Indicator if the connection is active or not.
            order_date string, null, null, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
            last_username string, null The username used to login on RADIUS with this circuit.
            vpi integer, null VPI value when applicable
            provisioning object
                enabled boolean
                ipvpn string
                blocked boolean
                authentication boolean
                username string
                password string
                primary_ipv4 string, null Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
                routed_ipv4 array
                routed_ipv4[#] string, null Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
                firewall string, null A string or no value at all.
        sla object Describe the SLA product covering this connection.
            order_date string, null, null, null, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
            state enum Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED|CANCEL_REQUESTED|CANCEL_REQUEST_CONFIRMED|TERMINATION_REQUESTED|TERMINATION_REQUEST_CONFIRMED|CHANGE_REQUESTED|CHANGE_REQUEST_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_TERMINATION_CONFIRMED
. Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED|CANCEL_REQUESTED|CANCEL_REQUEST_CONFIRMED|TERMINATION_REQUESTED|TERMINATION_REQUEST_CONFIRMED|CHANGE_REQUESTED|CHANGE_REQUEST_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_TERMINATION_CONFIRMED
. Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED|CANCEL_REQUESTED|CANCEL_REQUEST_CONFIRMED|TERMINATION_REQUESTED|TERMINATION_REQUEST_CONFIRMED|CHANGE_REQUESTED|CHANGE_REQUEST_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_TERMINATION_CONFIRMED
. State the product is in. One of PROCESSING Product is being ordered. ACTIVE Product is operational. TERMINATED Product is terminated.
            product object
                product_id integer Identifies an individual product by numeric id.
                name string The product name.
                description null, string Describes the product.
                extrainfo null, string Additional information about the product
        terminate_cause object Terminate cause
            cause_code integer, null An integer or no value at all.
            cause_description string, null A string or no value at all.
            note string, null A string or no value at all.
            action enum Enum options:
CANCELLED|DISCONNECT|MIGRATE_OUT|ERROR
. undefined
            termination_date string, null, null, null, null, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
        contract_period object Defines start and end of the minimum contract period.
            to string, null, null, null, null, null, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
            from string, null, null, null, null, null, null, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
            last_change string, null, null, null, null, null, null, null, null, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
        address object A complete address with province, municipality, latitude and longitude.
            zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
            housenr integer The house number that with the zipcode identifies an address.
            housenrext string, null House number suffix.
            street string, null The street name.
            city string, null The city name.
            province string, null
            municipality string, null
            latitude string, null
            longitude string, null
        supplier enum Enum options:
KPNWBA
. Connection supplier, structure of the entire object depends on this field.
        enduser object
            uuid string
        location_contact object Who to reach at the location.
            phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
            name string Name of the contact person.
            email string, null Email address of the contact person.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_ordered_products",
  "params": {
    "paging": {
      "offset": 0,
      "length": 1
    },
    "sort": {
      "order_date": "DESC"
    },
    "filter": {
      "city": "Alphen"
    }
  }
}
Reply example
{
  "result": {
    "count": 2,
    "products": {
      "broadband": [
        {
          "sla": {
            "order_date": "2013-12-11",
            "state": "ACTIVE",
            "product": {
              "description": null,
              "product_id": 758,
              "extrainfo": null,
              "name": "Best Effort SLA"
            }
          },
          "location_contact": {
            "email": null,
            "phonenumber": "0628020604",
            "name": "Teun Ouwehand"
          },
          "supplier": "KPNWBA",
          "carrier": {
            "tags": [
              "company=Nextpertise Office"
            ],
            "nid": "2408ZE000100100",
            "plan_date": "2013-12-18",
            "carrier_type": "Fiber",
            "order_date": "2013-12-11",
            "base_technology": "FttH",
            "additional_israpin": null,
            "israspecs": null,
            "additional_serviceid": null,
            "id": 1,
            "data_technology": "GoF",
            "ftu_type": "FTU_GN02",
            "phonenumber": null,
            "serviceid": "REF0001234567",
            "israpin": null,
            "product": {
              "description": null,
              "product_id": 638,
              "extrainfo": null,
              "name": "Fiber (FttH, NLS6)"
            },
            "state": "ACTIVE"
          },
          "circuits": [
            {
              "premium": false,
              "tags": [],
              "nid": "2408ZE000100101",
              "plan_date": null,
              "bandwidth_up": 524000,
              "order_date": "2014-12-11",
              "bandwidth_down": 524000,
              "vpi": null,
              "last_ipv4": "1.2.3.4",
              "id": 2,
              "online": "online",
              "last_username": "2408ZE10-0101@nextpertise.nl",
              "provisioning": {
                "username": "2408ZE10-0101@nextpertise.nl",
                "authentication": false,
                "password": "secret01",
                "firewall": null,
                "enabled": true,
                "blocked": false,
                "routed_ipv4": [
                  "5.6.7.0/28"
                ],
                "ipvpn": "internet",
                "primary_ipv4": "1.2.3.4/32"
              },
              "vlan": "6",
              "product": {
                "description": null,
                "product_id": 281,
                "extrainfo": null,
                "name": "Regular Circuit 500Mb/500Mb"
              },
              "state": "ACTIVE",
              "vci": null
            },
            {
              "premium": true,
              "tags": [],
              "nid": "2408ZE000100102",
              "plan_date": null,
              "bandwidth_up": 256,
              "order_date": "2016-12-06",
              "bandwidth_down": 256,
              "vpi": null,
              "last_ipv4": null,
              "id": 8374,
              "online": "online",
              "last_username": "2408ZE10-0102@nextpertise.nl",
              "provisioning": {
                "username": "2408ZE10-0102@nextpertise.nl",
                "authentication": false,
                "password": "secret02",
                "firewall": null,
                "enabled": true,
                "blocked": false,
                "routed_ipv4": [],
                "ipvpn": "internet",
                "primary_ipv4": "1.2.3.5/32"
              },
              "vlan": "7",
              "product": {
                "description": null,
                "product_id": 332,
                "extrainfo": null,
                "name": "Circuit 256Kb/256Kb"
              },
              "state": "ACTIVE",
              "vci": null
            }
          ],
          "address": {
            "latitude": "52.1266051",
            "province": "Zuid-Holland",
            "street": "Zuidpoolsingel",
            "housenr": 10,
            "longitude": "4.6533684",
            "municipality": "Alphen aan den Rijn",
            "city": "Alphen aan den Rijn",
            "housenrext": null,
            "zipcode": "2408ZE"
          },
          "contract_period": {
            "to": "2014-12-15",
            "from": "2013-12-15",
            "last_change": null
          },
          "enduser": {
            "uuid": "abcde123-0123-4abc-9876-012345678912"
          }
        }
      ]
    }
  },
  "id": 1,
  "jsonrpc": "2.0"
}
JSON-RPC
get_settings()
permission needed: #broadband-r
Since v1.17.0

Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
settings object
    radius_server1 null, string
    radius_server2 null, string
    radius_secret string
    authentication_type enum Enum options:
managed|radius
. undefined
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_settings",
  "params": {}
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "settings": {
      "radius_server2": "yourradiusserver1.fqdn.com",
      "radius_server1": "yourradiusserver1.fqdn.com",
      "radius_secret": "your_nas_secret",
      "authentication_type": "radius"
    }
  }
}
JSON-RPC
list_auth_realm()
permission needed: #broadband-r
Since v1.17.0

Show realm's of the current logedin user's company.


Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
realm array
realm[#] object
    id integer
    name string
    default boolean
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_auth_realm",
  "params": {}
}
Reply example
{
  "jsonrpc": "2.0",
  "result": {
    "realm": [
      {
        "default": true,
        "realm_name": "nextpertise.nl",
        "id": 1
      },
      {
        "default": false,
        "realm_name": "ipv2.net",
        "id": 2
      }
    ]
  },
  "id": 1
}
JSON-RPC
list_events()
permission needed: #broadband-r
Since v1.20.0

Lists events


Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.

Reply params
open_in_new
Name Type Description
events array
events[#] object
    type enum Enum options:
notification|async_event|apirequest
. undefined
    cid string, null A string or no value at all.
    nid string, null A string or no value at all.
    method string, null A string or no value at all.
    request object, null
    username string, null A string or no value at all.
    recipient string, null A string or no value at all.
    action string, null A string or no value at all.
    response object, null
    datetime string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_events",
  "params": {
    "nid": "2408ZE000100200"
  }
}
Reply example
{
  "result": {
    "events": [
      {
        "action": null,
        "request": {
          "custwishdate": null,
          "contact_name": "Teun Ouwehand",
          "cpe": [],
          "zipcode": "2408ZE",
          "additional_contact_phonenumber": null,
          "contact_phonenumber": "0887775200",
          "confirm": {
            "Terminate Voice": false
          },
          "company": "Nextpertise",
          "requested_phonenumber": null,
          "serviceid": "",
          "circuit": [
            {
              "circuit": 272,
              "vlan": 6
            }
          ],
          "housenrext": "",
          "contract_duration": 12,
          "isra": "001//MTK/METERKAST",
          "carrier": 118,
          "housenr": 10,
          "tags": [],
          "sla": 606
        },
        "datetime": "2020-04-15T11:49:55",
        "recipient": null,
        "method": "broadband.order_connection",
        "cid": "83d71d5d-e07c-4061-8f8e-5a3b91a31a14",
        "type": "apirequest",
        "nid": "2408ZE000100200",
        "username": "teun@nextpertise.nl",
        "response": {
          "orderid": "2408ZE000100200"
        }
      }
    ]
  },
  "jsonrpc": "2.0",
  "id": 1
}
JSON-RPC
list_firewall()
permission needed: #broadband-r
Since v1.20.0

Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
firewall array
firewall[#] string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_firewall",
  "params": {}
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "firewall": [
      "yourplatform",
      "broadworks"
    ]
  }
}
JSON-RPC
list_ipvpn()
permission needed: #broadband-r
Since v1.20.0

Overview of ipvpn, ipranges, reservations and dns settings of the current logedin user's company. Shared ip pools should not be returned via the broadband API.


Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
ipvpn object
    internet object
        default boolean
        pool array
        pool[#] object
            network string
            subnetsize number
            priority integer
            exclude array
            exclude[#] object
                network string
                subnetsize number
        name string
        settings object
            ipv4_dns1 string
            ipv4_dns2 string
            loopback string
    voip object
        default boolean
        pool array
        pool[#] object
            network string
            subnetsize number
            default boolean
            exclude array
            exclude[#] object
                network string
                subnetsize number
        name string
        settings object
            ipv4_dns1 string
            ipv4_dns2 string
            loopback string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_ipvpn",
  "params": {}
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "ipvpn": {
      "voice": {
        "name": "voice",
        "default": false,
        "settings": {
          "loopback": "Loopback456",
          "ipv4_dns1": "1.2.3.4",
          "ipv4_dns2": "1.2.4.4"
        },
        "pool": [],
        "id": 2,
        "vrf": "vpn02-voice"
      },
      "internet": {
        "name": "internet",
        "default": true,
        "settings": {
          "loopback": "Loopback123",
          "ipv4_dns1": "1.2.3.4",
          "ipv4_dns2": "1.2.4.4"
        },
        "pool": [],
        "id": 1,
        "vrf": "vpn01-internet"
      }
    }
  }
}
JSON-RPC
list_providers()
permission needed: #broadband-r
Since v1.16.0

Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
providers array
providers[#] string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_providers",
  "params": {}
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "providers": [
      "KPNWBA",
      "KPNWEAS",
      "EUROFIBER",
      "TELE2",
      "ZIGGO"
    ]
  }
}
JSON-RPC
migrate_provisioning()
permission needed: #broadband-c
Since v1.20.0

Request params
open_in_new
Name Type Description
circuit_nid_src string
circuit_nid_dst string

Reply params
open_in_new
Name Type Description
provisioning object
    enabled boolean
    ipvpn string, null A string or no value at all.
    blocked boolean
    authentication boolean
    username string
    password string
    routed_ipv4 array
    routed_ipv4[#] string
    firewall string, null A string or no value at all.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "migrate_provisioning",
  "params": {
    "circuit_nid_src": "2408ZE000020101",
    "circuit_nid_dst": "1024MB000160101"
  }
}
Reply example
{
  "result": {
    "provisioning": {
      "username": "1024MB000160101@nextpertise.nl",
      "primary_ipv4": "1.2.3.4/32",
      "firewall": null,
      "enabled": true,
      "routed_ipv4": [
        "4.5.6.0/30"
      ],
      "authentication": false,
      "ipvpn": "vpn01-internet",
      "password": "secret01",
      "blocked": false
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}
JSON-RPC
order_connection()
permission needed: #broadband-ordering-c
Since v1.10.0

Order a connection consisting of a carrier, one or more circuits and an SLA


Request params
open_in_new
Name Type Description
zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
housenr integer The house number that with the zipcode identifies an address.
housenrext string, null House number suffix.
isra string Regex:
^[0-9a-zA-Z/(). -]+$
. Copy from the `connectionpoint` name off the :doc:`../broadband/zipcode` reply.
carrier integer Identifies an individual product by numeric id.
circuit array
circuit[#] object
    circuit integer Identifies an individual product by numeric id.
    tags array
    tags[#] string Regex:
[a-zA-Z0-9=:_-]+
.
    vlan integer
    vci integer
    vpi integer
sla null, one of
sla integer, one of Identifies an individual product by numeric id.
cpe array
cpe[#] integer, one of Identifies an individual product by numeric id.
tags array
tags[#] string Regex:
[a-zA-Z0-9=:_-]+
.
enduser object
    uuid string
contact_name string
contact_phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
contract_duration integer
additional_contact_phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
confirm object
    Terminate Voice boolean
custwishdate string, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
requested_phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
serviceid null, string Service label, matches the carrier's nid when the service is provided by Nextpertise.

Reply params
open_in_new
Name Type Description
errorcode integer
commentcode string
orderid string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "order_connection",
  "params": {
    "zipcode": "2408ZE",
    "housenr": 9,
    "circuit": [
      {
        "circuit": 272,
        "vlan": 6
      }
    ],
    "isra": "0/8/MTK/METERKAST",
    "serviceid": "",
    "requested_phonenumber": null,
    "carrier": 633,
    "cpe": [],
    "enduser": {
      "uuid": "abcde900-08e4-4d95-8793-8083660ea700"
    },
    "contact_phonenumber": "0101234567",
    "additional_contact_phonenumber": null,
    "contact_name": "Mrs. Your Client",
    "sla": 606,
    "contract_duration": 12,
    "custwishdate": null,
    "tags": [],
    "confirm": {
      "Terminate Voice": false
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "orderid": "2408ZE000090100"
  }
}
JSON-RPC
replan_connection()
permission needed: #broadband-ordering-c
Since v1.21.0

Replan order


Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
custwishdate string, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "replan_connection",
  "params": {
    "nid": "1024MB000160100",
    "custwishdate": "2020-04-23"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "result": {},
  "id": 1
}
JSON-RPC
set_auth_realm()
permission needed: #broadband-c
Since v1.17.0

Sets realm of the current logedin user's company.


Request params
open_in_new
Name Type Description
realm array
realm[#] object
    id integer
    default boolean

Reply params
open_in_new
Name Type Description
realm array
realm[#] object
    id integer
    name string
    default boolean
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_auth_realm",
  "params": {
    "realm": [
      {
        "id": 1,
        "realm_name": "nextpertise.nl"
      }
    ]
  }
}
Reply example
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "realm": [
      {
        "id": 1,
        "realm_name": "nextpertise.nl",
        "default": true
      }
    ]
  }
}
JSON-RPC
set_enduser()
permission needed: #broadband-c
Since v1.22.0

Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
enduser object
    uuid string, null

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_enduser",
  "params": {
    "nid": "2408ZE000100100",
    "enduser": {
      "uuid": "abcde123-0123-4abc-9876-012345678912"
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "result": {},
  "id": 1
}
JSON-RPC
set_ipvpn()
permission needed: #broadband-c
Since v1.20.0

Request params
open_in_new
Name Type Description
ipvpn object
    .+ object
        name string
        vrf string
        pool array
        pool[#] object
            network string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
            subnetsize number
            priority integer
            exclude array
            exclude[#] object
                network string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
                subnetsize number
        settings object
            ipv4_dns1 string
            ipv4_dns2 string
            loopback string
        default boolean

Reply params
open_in_new
Name Type Description
ipvpn object
    .+ object
        name string
        vrf string
        pool array
        pool[#] object
            network string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
            subnetsize number
            priority integer
            exclude array
            exclude[#] object
                network string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
                subnetsize number
        settings object
            ipv4_dns1 string
            ipv4_dns2 string
            loopback string
        default boolean
        id number
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_ipvpn",
  "params": {
    "ipvpn": {
      "voice": {
        "name": "voice",
        "vrf": "vpn02-voice",
        "pool": [],
        "max_subnetsize": 29,
        "default_subnetsize": 32,
        "settings": {
          "loopback": "Loopback123",
          "ipv4_dns1": "1.2.3.4",
          "ipv4_dns2": "1.2.4.4"
        },
        "default": false
      }
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "ipvpn": {
      "voice": {
        "name": "voice",
        "default": false,
        "settings": {
          "loopback": "Loopback456",
          "ipv4_dns1": "1.2.3.4",
          "ipv4_dns2": "1.2.4.4"
        },
        "pool": [],
        "id": 2,
        "vrf": "vpn02-voice"
      },
      "internet": {
        "name": "internet",
        "default": true,
        "settings": {
          "loopback": "Loopback123",
          "ipv4_dns1": "1.2.3.4",
          "ipv4_dns2": "1.2.4.4"
        },
        "pool": [],
        "id": 1,
        "vrf": "vpn01-internet"
      }
    }
  }
}
JSON-RPC
set_provisioning()
permission needed: #broadband-c
Since v1.20.0

Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
provisioning object
    enabled boolean
    ipvpn string
    blocked boolean
    authentication boolean
    username string
    password string
    primary_ipv4 string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
    routed_ipv4 array
    routed_ipv4[#] string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
    firewall string, null A string or no value at all.

Reply params
open_in_new
Name Type Description
provisioning object
    enabled boolean
    ipvpn string, null A string or no value at all.
    blocked boolean
    authentication boolean
    username string
    password string
    routed_ipv4 array
    routed_ipv4[#] string Regex:
^([0-9]{1,3}\.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))$
. The IPv4 subnet assigned to this circuit in CIDR format
    firewall string, null A string or no value at all.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_provisioning",
  "params": {
    "nid": "2408ZE000100101",
    "provisioning": {
      "password": "secret01"
    }
  }
}
Reply example
{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "provisioning": {
      "routed_ipv4": [
        "1.2.3.0/30"
      ],
      "password": "secret01",
      "firewall": null,
      "ipvpn": "internet",
      "enabled": true,
      "username": "2408ZE10-0101@nextpertise.nl",
      "authentication": false,
      "blocked": false,
      "primary_ipv4": "1.2.3.4/32"
    }
  }
}
JSON-RPC
set_settings()
permission needed: #broadband-c
Since v1.17.0

Request params
open_in_new
Name Type Description
settings object
    radius_server1 null, string
    radius_server2 null, string
    radius_secret string
    authentication_type enum Enum options:
managed|radius
. undefined

Reply params
open_in_new
Name Type Description
settings object
    radius_server1 null, string
    radius_server2 null, string
    radius_secret string
    authentication_type enum Enum options:
managed|radius
. undefined
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_settings",
  "params": {
    "settings": {
      "authentication_type": "radius",
      "radius_secret": "secret01"
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "result": {
    "settings": {
      "authentication_type": "radius",
      "radius_secret": "secret01",
      "radius_server1": "yourradiusserver1.fqdn.com",
      "radius_server2": "yourradiusserver2.fqdn.com"
    }
  },
  "id": 1
}
JSON-RPC
set_tags()
permission needed: #broadband-c
Since v1.12.0

Assign a set of tags to a product identified by an nid.


Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
tags array
tags[#] string Regex:
[a-zA-Z0-9=:_-]+
.

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_tags",
  "params": {
    "nid": "2408ZE000100201",
    "tags": [
      "office",
      "data"
    ]
  }
}
Reply example
{
  "id": 1,
  "result": {},
  "jsonrpc": "2.0"
}
JSON-RPC
terminate_connection()
permission needed: #broadband-ordering-d
Since v1.17.0

Terminates RFS connection


Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
custwishdate string, null Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "terminate_connection",
  "params": {
    "nid": "2408ZE000100100"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "result": {},
  "id": 1
}
JSON-RPC
zipcode()
permission needed: #broadband-r
Since v1.0.0

Requests an overview of the products available on a specific location.


Request params
open_in_new
Name Type Description
zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
housenr integer The house number that with the zipcode identifies an address.
housenrext string, null House number suffix.
filter object
    provider array Provider filter
    provider[#] enum Enum options:
TELE2|KPNWEAS|KPNWBA|EUROFIBER|ZIGGO
. undefined

Reply params
open_in_new
Name Type Description
available object
    KPNWBA|KPNWEAS|TELE2|EUROFIBER|ZIGGO object
        carrier object
            ^[0-9]+$ object Define a carrier by its product definition and provide a specification.
                product_id integer Identifies an individual product by numeric id.
                name string The product name.
                description null, string Describes the product.
                extrainfo null, string Additional information about the product
                distance string, null Optional indication of the non-recurring costs (supplier specific).
                area string, null Optional indication of the recurring costs (supplier specific).
                carrier_type enum Enum options:
Copper|Copper_shared|Copper_only|BCopper_only|Fiber|FttH|FttO
. Defines the physical medium for internet access and whether the medium is shared with other (voice) services. FttH and FttO are both Fiber connections with other parameters.
                circuits array
                circuits[#] integer
                download integer
                upload integer
                terminate_voice boolean If this field is true, you terminate the voice connection when ordering this carrier.
                cpe array
                cpe[#] integer
                sla array
                sla[#] integer
                estimated_delivery_duration string, null Regex:
^[0-9]+[dw]$
. Defines the estimated delivery duration of a carrier product.
                wishdate boolean Indicates if carrier vendor allows customer wish date.
        EVC object
            ^[0-9]+$ object Define a circuit by its product definition and provide a specification.
                product_id integer Identifies an individual product by numeric id.
                name string The product name.
                description null, string Describes the product.
                extrainfo null, string Additional information about the product
                max_upload integer Highest possible upload speed in kb/s
                max_download integer Highest possible download speed in kb/s
                min_upload integer Lowest upload speed in kb/s
                min_download integer Lowest upload speed in kb/s
                overbooking integer
                quality enum Enum options:
regular|premium
. undefined
        connectionpoint object
            ^[0-9a-zA-Z/(). -]+$ object
                ADSL|VDSL|BVDSL|SDSL|Fiber array
                ADSL|VDSL|BVDSL|SDSL|Fiber[#] integer
                nl1lines integer Number of lines present at the location
                nl1lines_available integer Number of unassigned lines at the location. Unassigned means that neither telephone nor broadband services are using these lines.
                nl2lines integer
                available_service array Possibly empty list of services and phonenumbers
                available_service[#] object
                    type integer, null An integer or no value at all.
                    service null, string Service label, matches the carrier's nid when the service is provided by Nextpertise.
                    nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
                    phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
                available_technology array
                available_technology[#] enum Enum options:
ADSL|VDSL|BVDSL|SDSL|SDSL.bis|Fiber|VPLUS|BVPLUS
. undefined
        sla object
            ^[0-9]+$ object
                product_id integer Identifies an individual product by numeric id.
                name string The product name.
                description null, string Describes the product.
                extrainfo null, string Additional information about the product
        cpe object
            ^[0-9]+$ object
                product_id integer Identifies an individual product by numeric id.
                name string The product name.
                description null, string Describes the product.
                extrainfo null, string Additional information about the product
address any of, object A complete address with province, municipality, latitude and longitude.
    zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
    housenr integer The house number that with the zipcode identifies an address.
    housenrext string, null House number suffix.
    street string, null The street name.
    city string, null The city name.
    province string, null
    municipality string, null
    latitude string, null
    longitude string, null
address any of, object
    zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
    housenr integer The house number that with the zipcode identifies an address.
    housenrext string, null House number suffix.
    street string, null The street name.
    city string, null The city name.
error object
    KPNWBA|KPNWEAS|TELE2|EUROFIBER|ZIGGO object
        message string
        code integer
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "zipcode",
  "params": {
    "zipcode": "1024MB",
    "housenr": 340,
    "filter": {
      "provider": [
        "KPNWBA"
      ]
    }
  }
}
Reply example
{
  "result": {
    "address": {
      "latitude": "52.3911892",
      "longitude": "4.9637384",
      "housenr": 340,
      "street": "Hilversumstraat",
      "housenrext": null,
      "province": "Noord-Holland",
      "zipcode": "1024MB",
      "municipality": "Amsterdam",
      "city": "Amsterdam"
    },
    "available": {
      "KPNWBA": {
        "carrier": {
          "616": {
            "terminate_voice": false,
            "product_id": 616,
            "sub_technology": "ADSL2+",
            "extrainfo": null,
            "contract_duration": [
              12
            ],
            "estimated_delivery_duration": "50d",
            "prices": {},
            "download": 14213,
            "cpe": [
              651
            ],
            "distance": "NLS3;TL",
            "name": "ADSL2+ (non-shared line, NLS3)",
            "upload": 976,
            "carrier_type": "Copper_only",
            "description": null,
            "sla": [
              606,
              607,
              608
            ],
            "wishdate": true,
            "area": "",
            "circuits": [
              311,
              299,
              652
            ],
            "data_technology": "ADSL",
            "actions": {}
          },
          "626": {
            "terminate_voice": false,
            "product_id": 626,
            "sub_technology": "VVDSL2",
            "extrainfo": null,
            "contract_duration": [
              12
            ],
            "estimated_delivery_duration": "50d",
            "prices": {},
            "download": 61914,
            "cpe": [
              651
            ],
            "distance": "NLS3;TL",
            "name": "VVDSL (non-shared line, NLS3)",
            "upload": 14201,
            "carrier_type": "Copper_only",
            "description": null,
            "sla": [
              606,
              607,
              608
            ],
            "wishdate": true,
            "area": "",
            "circuits": [
              267,
              268,
              272,
              755,
              332,
              652,
              249,
              253,
              255,
              257,
              316
            ],
            "data_technology": "VDSL",
            "actions": {}
          },
          "633": {
            "terminate_voice": false,
            "product_id": 633,
            "sub_technology": "BVVDSL2",
            "extrainfo": null,
            "contract_duration": [
              12
            ],
            "estimated_delivery_duration": "50d",
            "prices": {},
            "download": 123827,
            "cpe": [
              651
            ],
            "distance": "NLS3;TL",
            "name": "BVVDSL (NLS3)",
            "upload": 28401,
            "carrier_type": "BCopper_only",
            "description": null,
            "sla": [
              606,
              607,
              608
            ],
            "wishdate": true,
            "area": "",
            "circuits": [
              268,
              272,
              754,
              332,
              652,
              249,
              253,
              255,
              257,
              258,
              316
            ],
            "data_technology": "BVDSL",
            "actions": {}
          }
        },
        "cpe": {
          "651": {
            "name": "Wall outlet",
            "product_id": 651,
            "description": null,
            "extrainfo": null,
            "prices": {},
            "actions": {}
          }
        },
        "sla": {
          "606": {
            "name": "Best Effort SLA",
            "product_id": 606,
            "description": null,
            "extrainfo": null,
            "prices": {},
            "actions": {}
          },
          "607": {
            "name": "Office Hours SLA",
            "product_id": 607,
            "description": null,
            "extrainfo": null,
            "prices": {},
            "actions": {}
          },
          "608": {
            "name": "24x7 SLA",
            "product_id": 608,
            "description": null,
            "extrainfo": null,
            "prices": {},
            "actions": {}
          }
        },
        "EVC": {
          "249": {
            "product_id": 249,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 1Mb/1Mb",
            "description": null,
            "max_upload": 1024,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 1024,
            "actions": {}
          },
          "253": {
            "product_id": 253,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 2Mb/2Mb",
            "description": null,
            "max_upload": 2048,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 2048,
            "actions": {}
          },
          "255": {
            "product_id": 255,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 5Mb/5Mb",
            "description": null,
            "max_upload": 5120,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 5120,
            "actions": {}
          },
          "257": {
            "product_id": 257,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 10Mb/10Mb",
            "description": null,
            "max_upload": 10240,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 10240,
            "actions": {}
          },
          "258": {
            "product_id": 258,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 20Mb/20Mb",
            "description": null,
            "max_upload": 20480,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 20480,
            "actions": {}
          },
          "267": {
            "product_id": 267,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Regular Circuit 20Mb/2Mb",
            "description": null,
            "max_upload": 2048,
            "quality": "regular",
            "overbooking": 0,
            "max_download": 20480,
            "actions": {}
          },
          "268": {
            "product_id": 268,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Regular Circuit 30Mb/3Mb",
            "description": null,
            "max_upload": 3072,
            "quality": "regular",
            "overbooking": 0,
            "max_download": 30720,
            "actions": {}
          },
          "272": {
            "product_id": 272,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Regular Circuit 50Mb/5Mb",
            "description": null,
            "max_upload": 10240,
            "quality": "regular",
            "overbooking": 0,
            "max_download": 51200,
            "actions": {}
          },
          "299": {
            "product_id": 299,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 256Kb/256Kb",
            "description": null,
            "max_upload": 256,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 256,
            "actions": {}
          },
          "311": {
            "product_id": 311,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "GFR Circuit 22Mb/1Mb",
            "description": null,
            "max_upload": 1024,
            "quality": "regular",
            "overbooking": 0,
            "max_download": 22000,
            "actions": {}
          },
          "316": {
            "product_id": 316,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 50Mb/10Mb",
            "description": null,
            "max_upload": 10240,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 51200,
            "actions": {}
          },
          "332": {
            "product_id": 332,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Circuit 256Kb/256Kb",
            "description": null,
            "max_upload": 256,
            "quality": "premium",
            "overbooking": 0,
            "max_download": 256,
            "actions": {}
          },
          "652": {
            "product_id": 652,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Premium Circuit 512Kb/512Kb overbooking 1:1",
            "description": null,
            "max_upload": 512,
            "quality": "premium",
            "overbooking": 99999,
            "max_download": 512,
            "actions": {}
          },
          "754": {
            "product_id": 754,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Regular Circuit 200Mb/60Mb",
            "description": null,
            "max_upload": 61440,
            "quality": "regular",
            "overbooking": 0,
            "max_download": 204800,
            "actions": {}
          },
          "755": {
            "product_id": 755,
            "min_download": 0,
            "extrainfo": null,
            "min_upload": 0,
            "prices": {},
            "name": "Regular Circuit 100Mb/30Mb",
            "description": null,
            "max_upload": 30720,
            "quality": "regular",
            "overbooking": 0,
            "max_download": 102400,
            "actions": {}
          }
        },
        "connectionpoint": {
          "0/B/MTK/METERKAST": {
            "available_service": [],
            "available_technology": [
              "ADSL",
              "VDSL",
              "BVDSL"
            ],
            "nl1lines_available": 0,
            "nl1lines": 0,
            "BVDSL": [
              633
            ],
            "nl2lines": 0,
            "ADSL": [
              616
            ],
            "VDSL": [
              626
            ]
          }
        }
      }
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}
Broadband-basic
https://api.nextpertise.nl/broadband/basic/v1
JSON-RPC
zipcode()
permission needed: #false
Since v1.0.0

Requests an overview of the products available on a specific location.


Request params
open_in_new
Name Type Description
zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
housenr integer The house number that with the zipcode identifies an address.
housenrext string, null House number suffix.
filter object
    provider array Provider filter
    provider[#] enum Enum options:
TELE2|KPNWEAS|KPNWBA|EUROFIBER|ZIGGO
. undefined

Reply params
open_in_new
Name Type Description
available object Provides per access technology the maximum speed (kb/s) and an optional area code.
    KPNWBA|KPNWEAS|TELE2|EUROFIBER|ZIGGO object
        ADSL|VDSL|BVDSL|SDSL|SDSL.bis|Fiber|VPLUS|BVPLUS object
            max_download integer The maximum available download speed in kb/s.
            max_upload integer The maximum available upload speed in kb/s.
            area string A (possibly empty) string indicating recurring costs.
            distance string A (possible empty) string indicating setup costs.
            carrier enum Enum options:
Copper|Copper_shared|Copper_only|BCopper_only|Fiber|FttH|FttO
. Defines the physical medium for internet access and whether the medium is shared with other (voice) services. FttH and FttO are both Fiber connections with other parameters.
address any of, object A complete address with province, municipality, latitude and longitude.
    zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
    housenr integer The house number that with the zipcode identifies an address.
    housenrext string, null House number suffix.
    street string, null The street name.
    city string, null The city name.
    province string, null
    municipality string, null
    latitude string, null
    longitude string, null
address any of, object
    zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
    housenr integer The house number that with the zipcode identifies an address.
    housenrext string, null House number suffix.
    street string, null The street name.
    city string, null The city name.
error object
    KPNWBA|KPNWEAS|TELE2|EUROFIBER|ZIGGO object
        message string
        code integer
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "zipcode",
  "params": {
    "zipcode": "2408ZE",
    "housenr": 2,
    "housenrext": null,
    "filter": {
      "provider": [
        "TELE2"
      ]
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "address": {
      "street": "Zuidpoolsingel",
      "housenr": 2,
      "longitude": "4.6538731",
      "latitude": "52.1265701",
      "province": "Zuid-Holland",
      "city": "Alphen aan den Rijn",
      "municipality": "Alphen aan den Rijn",
      "zipcode": "2408ZE",
      "housenrext": null
    },
    "available": {
      "TELE2": {
        "Fiber": {
          "distance": "Nearnet",
          "max_download": 1024000,
          "max_upload": 1024000,
          "area": "4",
          "carrier": "Fiber"
        },
        "SDSL.bis": {
          "distance": "",
          "max_download": 6144,
          "max_upload": 6144,
          "area": "",
          "carrier": "Copper"
        }
      }
    }
  }
}
Broadband-diagnostics
https://api.nextpertise.nl/broadband/diagnostics/v1
JSON-RPC
diagnose()
permission needed: #broadband-diagnostics-r
Since v1.7.0

Requests a diagnostic report of a designated circuit.


Request params
open_in_new
Name Type Description
kind enum Enum options:
port_status|line_analysis
. Defines the requested report type
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.

Reply params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
kind enum Enum options:
port_status|line_analysis
. undefined
status array, one of DSLAM port status as reported by KPN
status[#] object
    operation object
        stability string
        linesync boolean
        laststatus string
    configuration object
        cpetype string
        dsltype string
    parameter object
        ^lqd.parameter..+$ object
            downstream string
            unit string
            upstream string
    diagnostics array
    diagnostics[#] object
        explanation string
        probablecause string
status object, one of SELT line status as reported by KPN
    ScanDetails object
        ScanName string
        ProgressId string
    ScanResponses array
    ScanResponses[#] object
        ExitValue string
        Answer string
        Detail string
    TransactionDetails string
    ErrorDetails object
        ErrorCode string
        ErrorDescription string
Examples
Example One
Example Two
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "diagnose",
  "params": {
    "kind": "port_status",
    "nid": "2408ZE000100102"
  }
}
Reply example
{
  "result": {
    "kind": "port_status",
    "status": [
      {
        "configuration": {
          "cpetype": "",
          "dsltype": ""
        },
        "operation": {
          "stability": "",
          "laststatus": "",
          "linesync": false
        },
        "parameter": {},
        "diagnostics": []
      }
    ]
  },
  "jsonrpc": "2.0",
  "id": 1
}
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "diagnose",
  "params": {
    "kind": "line_analysis",
    "nid": "2408ZE000100102"
  }
}
Reply example
{
  "id": 1,
  "result": {
    "kind": "line_analysis",
    "status": {
      "ScanResponses": [
        {
          "Detail": "",
          "ExitValue": "209",
          "Answer": "request received, processing asynchronous"
        }
      ],
      "ScanDetails": {
        "ProgressId": "27549585443434265",
        "ScanName": "SELT"
      },
      "TransactionDetails": "",
      "ErrorDetails": {
        "ErrorCode": "0",
        "ErrorDescription": ""
      }
    }
  },
  "jsonrpc": "2.0"
}
JSON-RPC
force_disconnect()
permission needed: #broadband-diagnostics-r
Since v1.7.0

Disconnects a circuit forcing it to initiate a new login.


Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "force_disconnect",
  "params": {
    "nid": "2408ZE000100102"
  }
}
Reply example
{
  "result": {},
  "jsonrpc": "2.0",
  "id": 1
}
JSON-RPC
get_authlog()
permission needed: #broadband-diagnostics-r
Since v1.7.0

Requests logs for a given circuit, optionally after a given moment.


Request params
open_in_new
Name Type Description
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
after string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS

Reply params
open_in_new
Name Type Description
log_entries array
log_entries[#] object
    username string
    loginstatus enum Enum options:
ok|incorrect|
. undefined
    datetime string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_authlog",
  "params": {
    "nid": "2408ZE000100102",
    "after": "2018-01-29 17:18:00"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "log_entries": [
      {
        "username": "user@realm",
        "loginstatus": "ok",
        "datetime": "2018-01-29 17:17:27"
      },
      {
        "username": "user@realm",
        "loginstatus": "ok",
        "datetime": "2018-01-29 18:15:00"
      },
      {
        "username": "user@realm",
        "loginstatus": "incorrect",
        "datetime": "2018-02-02 19:16:10"
      }
    ]
  }
}
JSON-RPC
get_report()
permission needed: #broadband-diagnostics-r
Since v1.7.0

Fetch a stored diagnostic report.


Request params
open_in_new
Name Type Description
uuid string

Reply params
open_in_new
Name Type Description
data array
data[#]
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_report",
  "params": {
    "uuid": "51175922778160569"
  }
}
Reply example
{
  "id": 1,
  "result": {
    "data": [
      {
        "status": [
          {
            "configuration": {
              "cpetype": "Unknown",
              "dsltype": "non.shdsl.opermode vdsl2.g9932.profile.17a, line.type.pots,g.inp,sra,vectored"
            },
            "diagnostics": [],
            "operation": {
              "linesync": true,
              "laststatus": "20190709080119",
              "stability": "STABLE"
            },
            "parameter": {
              "lqd.parameter.noise.margin": {
                "unit": "dB",
                "downstream": "7.1",
                "upstream": "5.5"
              },
              "lqd.parameter.actual.bitrate": {
                "unit": "kb/s",
                "downstream": "51998.0",
                "upstream": "10445.0"
              },
              "lqd.parameter.loop.attenuation": {
                "unit": "dB",
                "downstream": "21.5",
                "upstream": "14.4"
              },
              "lqd.parameter.rel.capacity.occupation": {
                "unit": "%",
                "downstream": "93.0",
                "upstream": "97.0"
              },
              "lqd.parameter.attenuation": {
                "unit": "dB",
                "downstream": "19.2",
                "upstream": "14.2"
              },
              "lqd.parameter.actual.psd": {
                "unit": "dBm/Hz",
                "downstream": "-57.6",
                "upstream": "-55.6"
              },
              "lqd.parameter.attainable.bitrate": {
                "unit": "kb/s",
                "downstream": "56281.0",
                "upstream": "10432.0"
              },
              "lqd.parameter.power": {
                "unit": "dBm",
                "downstream": "10.7",
                "upstream": "6.4"
              }
            }
          }
        ],
        "kind": "port_status"
      }
    ]
  },
  "jsonrpc": "2.0"
}
JSON-RPC
list_reports()
permission needed: #broadband-diagnostics-r
Since v1.7.0

Produce a list of the stored diagnostic reports.


Request params
open_in_new
Name Type Description
kind enum Enum options:
port_status|line_analysis
. Defines the requested report type
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.

Reply params
open_in_new
Name Type Description
list array
list[#] object
    updated string
    uuid string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_reports",
  "params": {
    "kind": "port_status",
    "nid": "1062AB001370101"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "list": [
      {
        "updated": "2018-02-01 15:58:48",
        "uuid": "25437187642824708"
      },
      {
        "updated": "2018-02-02 13:04:58",
        "uuid": "25460733154473988"
      }
    ]
  }
}
Postcodes
https://api.nextpertise.nl/postcodes/v1
JSON-RPC
get_housenrs()
permission needed: #postcodes-r
Since v1.2.0

Fetches a list of house numbers belonging to a specific zipcode.


Request params
open_in_new
Name Type Description
zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.

Reply params
open_in_new
Name Type Description
housenrs array
housenrs[#] integer
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_housenrs",
  "params": {
    "zipcode": "2408ZE"
  }
}
Reply example
{
  "result": {
    "housenrs": [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14
    ]
  },
  "id": 1,
  "jsonrpc": "2.0"
}
JSON-RPC
get_housenrext()
permission needed: #postcodes-r
Since v1.2.0

Fetches the address and a list of house number extentions for a specific zipcode/housenr combination.


Request params
open_in_new
Name Type Description
zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
housenr integer

Reply params
open_in_new
Name Type Description
CADASTRAL object
    address object A complete address with province, municipality, latitude and longitude.
        zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
        housenr integer The house number that with the zipcode identifies an address.
        housenrext string, null House number suffix.
        street string, null The street name.
        city string, null The city name.
        province string, null
        municipality string, null
        latitude string, null
        longitude string, null
    housenrexts array
    housenrexts[#] string
KPNWBA object
    housenrexts array
    housenrexts[#] string
KPNWEAS object
    housenrexts array
    housenrexts[#] string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_housenrext",
  "params": {
    "zipcode": "2408ZE",
    "housenr": 2
  }
}
Reply example
{
  "result": {
    "KPNWEAS": {
      "housenrexts": [
        "",
        "A",
        "GML",
        "KT",
        "KT01",
        "MST"
      ]
    },
    "CADASTRAL": {
      "housenrexts": [
        ""
      ],
      "address": {
        "street": "Zuidpoolsingel",
        "latitude": "52.1265701",
        "zipcode": "2408ZE",
        "municipality": "Alphen aan den Rijn",
        "city": "Alphen aan den Rijn",
        "longitude": "4.6538731",
        "housenr": 2,
        "province": "Zuid-Holland"
      }
    },
    "KPNWBA": {
      "housenrexts": [
        "",
        "A",
        "GML",
        "KT",
        "KT01",
        "MST"
      ]
    }
  },
  "jsonrpc": "2.0",
  "id": 1
}
Product
https://api.nextpertise.nl/product/v1
JSON-RPC
list_products()
permission needed: #product-r
Since v1.12.0

Lists all products available to you.


Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
products array
products[#] object
    category string
    product_id integer
    depends_on array
    depends_on[#] integer
    supplier string
    name string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_products",
  "params": {}
}
Reply example
{
  "id": 1,
  "result": {
    "products": [
      {
        "name": "ADSL (non-shared line, NLS1 ZTL)",
        "depends_on": [],
        "supplier": "KPNWBA",
        "product_id": 108,
        "category": "carrier"
      },
      {
        "name": "GFR Circuit 22Mb/1Mb",
        "depends_on": [
          610
        ],
        "supplier": "KPNWBA",
        "product_id": 311,
        "category": "circuit"
      },
      {
        "name": "24x7 SLA",
        "depends_on": [
          108
        ],
        "supplier": "KPNWBA",
        "product_id": 759,
        "category": "sla"
      }
    ]
  },
  "jsonrpc": "2.0"
}
Enduser
https://api.nextpertise.nl/enduser/v1
JSON-RPC
del_enduser()
permission needed: #enduser-d
Since v1.22.0

Request params
open_in_new
Name Type Description
uuid string

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "del_enduser",
  "params": {
    "uuid": "abcde123-0123-4abc-9876-012345678912"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {}
}
JSON-RPC
get_enduser()
permission needed: #enduser-r
Since v1.22.0

Request params
open_in_new
Name Type Description
uuid string

Reply params
open_in_new
Name Type Description
enduser object
    uuid string
    company_name string, null
    phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
    address object A complete address with province, municipality, latitude and longitude.
        zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
        housenr integer The house number that with the zipcode identifies an address.
        housenrext string, null House number suffix.
        street string, null The street name.
        city string, null The city name.
        province string, null
        municipality string, null
        latitude string, null
        longitude string, null
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_enduser",
  "params": {
    "uuid": "abcde123-0123-4abc-9876-012345678912"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "enduser": {
      "uuid": "abcde123-0123-4abc-9876-012345678912",
      "company_name": "Nextpertise Office",
      "phonenumber": "0887775200",
      "address": {
        "zipcode": "2408ZE",
        "city": "Alphen aan den Rijn",
        "street": "Zuidpoolsingel",
        "housenr": 10,
        "housenrext": null,
        "province": "Zuid-Holland",
        "municipality": "Alphen aan den Rijn",
        "latitude": "52.1266051",
        "longitude": "4.6533684"
      }
    }
  }
}
JSON-RPC
list_endusers()
permission needed: #enduser-r
Since v1.22.0

Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
endusers array
endusers[#] object
    uuid string
    company_name string, null
    phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
    address object A complete address with province, municipality, latitude and longitude.
        zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
        housenr integer The house number that with the zipcode identifies an address.
        housenrext string, null House number suffix.
        street string, null The street name.
        city string, null The city name.
        province string, null
        municipality string, null
        latitude string, null
        longitude string, null
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_endusers",
  "params": {}
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "endusers": [
      {
        "uuid": "abcde123-0123-4abc-9876-012345678912",
        "company_name": "Nextpertise Office",
        "phonenumber": "0887775222",
        "address": {
          "zipcode": "2408ZE",
          "housenr": 10,
          "housenrext": "",
          "city": "Alphen aan den Rijn",
          "street": "Zuidpoolsingel",
          "province": "Zuid-Holland",
          "municipality": "Alphen aan den Rijn",
          "latitude": "52.1266051",
          "longitude": "4.6533684"
        }
      },
      {
        "uuid": "fe1f15a3-b255-4572-afeb-1edd961137b9",
        "company_name": "Dierenhoekje",
        "phonenumber": "0101234567",
        "address": {
          "zipcode": "1075SC",
          "housenr": 53,
          "housenrext": null,
          "city": "Amsterdam",
          "street": "Zeilstraat",
          "province": "Noord-Holland",
          "municipality": "Amsterdam",
          "latitude": "52.3506857",
          "longitude": "4.8535913"
        }
      }
    ]
  }
}
JSON-RPC
set_enduser()
permission needed: #enduser-c
Since v1.22.0

Request params
open_in_new
Name Type Description
enduser object
    uuid string, null
    company_name string, null
    phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
    address object
        zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
        housenr integer
        housenrext string, null A string or no value at all.

Reply params
open_in_new
Name Type Description
enduser object
    uuid string
    company_name string, null
    phonenumber string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
    address object A complete address with province, municipality, latitude and longitude.
        zipcode string Regex:
^[0-9]{4}[A-Z]{2}$
. The zipcode must conform to the Dutch postcode format. Note that the initial digit is not allowed to be '0' unless when testing.
        housenr integer The house number that with the zipcode identifies an address.
        housenrext string, null House number suffix.
        street string, null The street name.
        city string, null The city name.
        province string, null
        municipality string, null
        latitude string, null
        longitude string, null
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_enduser",
  "params": {
    "enduser": {
      "company_name": "Nextpertise Office",
      "phonenumber": "0887775222",
      "address": {
        "zipcode": "2408ZE",
        "housenr": 2,
        "housenrext": null
      }
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "enduser": {
      "uuid": "abcde123-0123-4abc-9876-012345678912",
      "company_name": "Nextpertise Office",
      "phonenumber": "0887775222",
      "address": {
        "zipcode": "2408ZE",
        "housenr": 10,
        "housenrext": "",
        "city": "Alphen aan den Rijn",
        "street": "Zuidpoolsingel",
        "province": "Zuid-Holland",
        "municipality": "Alphen aan den Rijn",
        "latitude": "52.1266051",
        "longitude": "4.6533684"
      }
    }
  }
}
Email
https://api.nextpertise.nl/email/v1
JSON-RPC
create_forwarder()
permission needed: #email-c
Since v1.3.5

Create a forwarder for the client of the customer.


Request params
open_in_new
Name Type Description
mailbox string Regex:
(^[a-zA-Z0-9_.+-/*]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
. Full address of the mailbox localpart@example.com
recipients array List of email addresses to which incoming mail is forwarded.
recipients[#] string Regex:
(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
.

Reply params
open_in_new
This method returns an empty object:
{}
Examples
JSON-RPC
create_mailbox()
permission needed: #email-c
Since v1.3.5

Request an action on a mailbox for the client of the customer.


Request params
open_in_new
Name Type Description
mailbox string Regex:
(^[a-zA-Z0-9_.+-/*]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
. Full address of the mailbox localpart@example.com

Reply params
open_in_new
Name Type Description
password string The password assigned to the mailbox when it is created.
Examples
JSON-RPC
delete_forwarder()
permission needed: #email-d
Since v1.3.5

Request an action on a mailbox for the client of the customer.


Request params
open_in_new
Name Type Description
mailbox string Regex:
(^[a-zA-Z0-9_.+-/*]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
. Full address of the mailbox localpart@example.com

Reply params
open_in_new
This method returns an empty object:
{}
Examples
JSON-RPC
delete_mailbox()
permission needed: #email-d
Since v1.3.5

Request an action on a mailbox for the client of the customer.


Request params
open_in_new
Name Type Description
mailbox string Regex:
(^[a-zA-Z0-9_.+-/*]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
. Full address of the mailbox localpart@example.com

Reply params
open_in_new
This method returns an empty object:
{}
Examples
JSON-RPC
get_forwarders()
permission needed: #email-r
Since v1.3.5

Get all forwarders.


Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
forwarders array
forwarders[#] object
    mailbox string
    recipients array
Examples
JSON-RPC
get_mailbox_usage()
permission needed: #email-r
Since v1.3.5

Get a list with all mailboxes and their usage for a given year and month.


Request params
open_in_new
Name Type Description
year integer
month integer

Reply params
open_in_new
Name Type Description
usage array
usage[#] object
    usage number
    status string
    mailbox string
    year integer
    month integer
Examples
JSON-RPC
get_mailboxes()
permission needed: #email-r
Since v1.3.5

Get a list with all mailboxes.


Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
mailboxes array
mailboxes[#] string
Examples
JSON-RPC
get_ordered_products()
permission needed: #email-r
Since v1.4.0

Get a list of the ordered email products.


Request params
open_in_new
This method expects an empty object as input:
{}

Reply params
open_in_new
Name Type Description
products object Group ordered products by product category
    email array List of ordered email products.
    email[#] object Describe a single email product
        product object
            product_id integer Identifies an individual product by numeric id.
            name string The product name.
            description null, string Describes the product.
            extrainfo null, string Additional information about the product
        state enum Enum options:
PROCESSING|ACTIVE|TERMINATED|CANCELLED|CANCEL_REQUESTED|CANCEL_REQUEST_CONFIRMED|TERMINATION_REQUESTED|TERMINATION_REQUEST_CONFIRMED|CHANGE_REQUESTED|CHANGE_REQUEST_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_PROCESSING_CONFIRMED|CHANGE_REQUEST_TERMINATION_CONFIRMED
. State the product is in. One of PROCESSING Product is being ordered. ACTIVE Product is operational. TERMINATED Product is terminated.
        address string Email address associated with the mailbox or forwarder.
        order_date string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9]$
. Date in international format YYYY-MM-DD
        type enum Enum options:
mailbox|forwarder
. Defines type of product.
Examples
JSON-RPC
update_forwarder()
permission needed: #email-c
Since v1.3.5

Update a forwarder for the client of the customer.


Request params
open_in_new
Name Type Description
mailbox string Regex:
(^[a-zA-Z0-9_.+-/*]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
. Full address of the mailbox localpart@example.com
recipients array List of email addresses to which incoming mail is forwarded.
recipients[#] string Regex:
(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)
.

Reply params
open_in_new
This method returns an empty object:
{}
Examples
JSON-RPC
update_password()
permission needed: #email-c
Since v1.3.5

Change the password of a mailbox.


Request params
open_in_new
Name Type Description
mailbox string Full address of the mailbox localpart@example.com
password string The new password for the mailbox.

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Support
https://api.nextpertise.nl/support/v1
JSON-RPC
create_ticket()
permission needed: #support-c
Since v1.21.0

Creates a single ticket with opening comment.


Request params
open_in_new
Name Type Description
subject string The title of the ticket.
comment string The opening comment of the ticket. Essentially the body.
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
reference string External support reference.
contact object Contact info
    phone string, null Regex:
^0([1-7][0-9]|85|88)[0-9]{7}$
. Dutch national telephone number
    name string
technical_specifications string Add technical details to the ticket.
uploads array List of upload-tokens.
uploads[#] string

Reply params
open_in_new
Name Type Description
id integer The ID of the newly created ticket.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create_ticket",
  "params": {
    "subject": "Connection down for Nextpertise Office",
    "comment": "Problem persists after a router reboot. Please help me!",
    "nid": "2408ZE000100100",
    "reference": "#123 - Nextpertise Office",
    "contact": {
      "name": "John Doe",
      "phone": "0612345678"
    },
    "uploads": []
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "id": 12345
  }
}
JSON-RPC
get_ticket()
permission needed: #support-r
Since v1.21.0

Returns a single ticket with comments.


Request params
open_in_new
Name Type Description
id integer The ID of the ticket.

Reply params
open_in_new
Name Type Description
id integer The ID of the ticket.
nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
reference null, string External support reference.
created_at string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS
updated_at string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS
subject string The title of the ticket.
description string Opening comment of ticket. Is the same as the body of the first comment in 'comments'.
status enum Enum options:
new|open|pending|solved|closed
. Current status of the ticket.
comments array List of all comments on ticket, ordered by date.
comments[#] object
    body string Comment text. Stripped of inline attachments & HTML.
    created_at string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS
    author object Support user information.
        name string
        photo null, object Profile picture of author. Can be null.
            thumbnail_url null, string Direct URL to a thumbnail of the file.
            url string Direct url to file.
    attachments array List of attached files.
    attachments[#] object
        file_name string
        size null, integer File size in bytes.
        url string Direct url to file.
        thumbnail_url null, string Direct URL to a thumbnail of the file.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "create_ticket",
  "params": {
    "id": 12345
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "id": 12345,
    "nid": "2408ZE000100100",
    "reference": "#123 - Nextpertise Office",
    "subject": "Connection down for Nextpertise Office",
    "description": "Problem persists after a router reboot. Please help me!\n\nContactpersoon:\nJohn Doe\n0612345678",
    "status": "new",
    "created_at": "2020-04-10 13:40:35",
    "updated_at": "2020-04-10 13:40:35",
    "comments": [
      {
        "body": "Problem persists after a router reboot. Please help me!\n\nContactpersoon:\nJohn Doe\n0612345678",
        "created_at": "2020-04-10 13:40:35",
        "attachments": [],
        "author": {
          "name": "johndo@company.com",
          "photo": null
        }
      }
    ]
  }
}
JSON-RPC
list_tickets()
permission needed: #support-r
Since v1.21.0

Returns a list of tickets.


Request params
open_in_new
Name Type Description
closed boolean Whether or not closed tickets should be returned. Defaults to true.
pagination object Used to limit the amount of tickets returned.
    per_page integer Amount of tickets per page (request).
    page integer The requested page-index, starts at 1.
filter object Filter tickets.
    search string Filter tickets by search string.
sort object Sort tickets. Can only sort by one key at a time. By default all tickets are sorted in descending order of last update time.
    updated_at enum Enum options:
ASC|DESC
. Sort by date of last update.
    created_at enum Enum options:
ASC|DESC
. Sort by date of creation.
    id enum Enum options:
ASC|DESC
. Sort by ticket number.
    requester enum Enum options:
ASC|DESC
. Sort by ticket creator.
    status enum Enum options:
ASC|DESC
. Sort by ticket status.
    subject enum Enum options:
ASC|DESC
. Sort by ticket subject.

Reply params
open_in_new
Name Type Description
ticket_count integer Total amount of tickets found for the user & filter.
pagination object Information about the pagination settings. If a '..._page' returns null, the page does not exist.
    previous_page integer, null An integer or no value at all.
    next_page integer, null An integer or no value at all.
    per_page integer Max amount of tickets per page.
tickets array List of tickets.
tickets[#] object
    requester object Support user information.
        name string
        photo null, object Profile picture of author. Can be null.
            thumbnail_url null, string Direct URL to a thumbnail of the file.
            url string Direct url to file.
    created_at string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS
    updated_at string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS
    nid string, null Regex:
^[0-9]{4}[A-Z]{2}[0-9]{5}[0-9A-Z]{4}$
. Carrier or circuit identification. To harmonize the way ordered broadband products are identified.
    status enum Enum options:
new|open|pending|solved|closed
. Current status of the ticket.
    reference string, null External support reference.
    subject string The title of the ticket.
    description string Opening comment of ticket.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_tickets",
  "params": {
    "pagination": {
      "per_page": 50,
      "page": 1
    },
    "filter": {
      "search": "Nextpertise"
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tickets": [
      {
        "id": 12345,
        "nid": "2408ZE000080100",
        "reference": "#123 - Nextpertise Office",
        "subject": "Connection down for Nextpertise Office",
        "description": "Problem persists after a router reboot. Please help me!\n\nContactpersoon:\nJohn Doe\n0612345678\n\nTechnische specificaties:\ntech-specs",
        "status": "closed",
        "created_at": "2020-04-01 13:26:09",
        "updated_at": "2020-04-02 15:02:21",
        "requester": {
          "name": "johndoe@company.com",
          "photo": null
        }
      }
    ],
    "pagination": {
      "next_page": null,
      "previous_page": null,
      "per_page": 50
    },
    "ticket_count": 1
  }
}
JSON-RPC
update_ticket()
permission needed: #support-c
Since v1.21.0

Updates a single ticket.


Request params
open_in_new
Name Type Description
id integer The ID of the ticket.
comment object Adds a new comment to the ticket.
    body string Comment text.
    uploads array List of upload-tokens.
    uploads[#] string
solved boolean Mark ticket as (un)solved.

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "update_ticket",
  "params": {
    "id": 12345,
    "comment": {
      "body": "Ticket update comment!"
    },
    "solved": false
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {}
}
JSON-RPC
upload_attachment()
permission needed: #support-c
Since v1.21.0

Upload base64 encoded file.


Request params
open_in_new
Name Type Description
filename string The name of the file, preferably with extension.
file string Base64 encoded filestring.

Reply params
open_in_new
Name Type Description
content_url string Direct URL to the file.
token string Upload token used to add uploaded file as an attachment to a ticket or comment. Can be used once before 'expires_at'.
expires_at string Regex:
^[1-9][0-9]{3}-[01][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]$
. Datetime in international format YYYY-MM-DD HH:MM:SS
thumbnail_url null, string Direct URL to a thumbnail of the file. Can be null.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "upload_attachment",
  "params": {
    "filename": "nextpertise.png",
    "file": "Base64AttachmentHere"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "token": "Xq1btFytMAHug9dYXPCKhahx6",
    "expires_at": "2020-04-13 13:56:27",
    "content_url": "https://support.nextpertise.nl/attachments/token/ELswoFARZ3tcttbkeQtYuawbP/?name=nextpertise.png",
    "thumbnail_url": "https://support.nextpertise.nl/attachments/token/SpyHCk3ed1jQGlBpmDFXx9Zy5/?name=nextpertise_thumb.png"
  }
}
User
https://api.nextpertise.nl/user/v1
JSON-RPC
get_profile()
permission needed: #user-r
Since v1.11.0

Get all information about a user's profile


Request params
open_in_new
Name Type Description
username string

Reply params
open_in_new
Name Type Description
user object
    language enum Enum options:
en-US|nl-NL
. IETF BCP 47 language tag
    firstname string
    lastname string
    username string
notification array
security object Object containing security options.
    totp_enabled boolean Whether or not TOTP based 2FA is enabled.
    whitelist_enabled boolean Whether or not the IP whitelist is enabled.
    whitelist array List of whitelisted IPV4s.
    whitelist[#] object
        ipv4 string
        description string
permissions object User permissions.
    [a-z]- object
        r null, boolean If true, user has read permission.
        c null, boolean If true, user has create/edit permission.
        d null, boolean If true, user has delete permission.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "get_profile",
  "params": {}
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "user": {
      "language": "nl-NL",
      "firstname": "Teun",
      "lastname": "Ouwehand",
      "username": "t90@nextpertise.nl"
    },
    "notification": [
      "Broadband"
    ],
    "security": {
      "whitelist_enabled": true,
      "totp_enabled": false,
      "whitelist": [
        {
          "ipv4": "10.20.30.44/32",
          "description": "Development VPS"
        },
        {
          "ipv4": "1.2.3.4/30",
          "description": "Nextpertise Office"
        }
      ]
    },
    "permissions": {
      "broadband": {
        "show_prices": true,
        "purchase": true
      },
      "user": {
        "admin": true
      }
    }
  }
}
JSON-RPC
list_profiles()
permission needed: #user-r
Since v1.23.0

List all profiles for loggedin users company


Request params
open_in_new
Name Type Description
filter object
    firstname string
    lastname string
    username string
    language string
sort object
    firstname enum Enum options:
ASC|DESC
. undefined
    lastname enum Enum options:
ASC|DESC
. undefined
    username enum Enum options:
ASC|DESC
. undefined
    language enum Enum options:
ASC|DESC
. undefined
paging object Request pagination of the result set.
    offset integer First record to include in result set.
    length integer Number of records to return, when the result set is smaller than this number it indicates that the last page is reached.

Reply params
open_in_new
Name Type Description
count integer
profiles array
profiles[#] object
    user object
        language enum Enum options:
en-US|nl-NL
. IETF BCP 47 language tag
        firstname string
        lastname string
        username string
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "list_profiles",
  "params": {
    "filter": {},
    "sort": {
      "username": "DESC"
    },
    "paging": {
      "offset": 0,
      "length": 2
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "profiles": [
      {
        "user": {
          "language": "en-US",
          "firstname": "Teun",
          "lastname": "Ouwehand",
          "username": "t90@nextpertise.nl"
        }
      },
      {
        "user": {
          "language": "nl-NL",
          "firstname": "Patrick",
          "lastname": "Van der Valk",
          "username": "ajvandervalk@nextpertise.nl"
        }
      }
    ],
    "count": 5
  }
}
JSON-RPC
set_profile()
permission needed: #user-c
Since v1.11.0

Set information about a user's profile


Request params
open_in_new
Name Type Description
username string Regex:
^(.+@.+\..+)$
.
new_user boolean If true - create new user else edit user
user object
    language enum Enum options:
en-US|nl-NL
. IETF BCP 47 language tag
    firstname string
    lastname string
notification array
security object Object containing security options.
    totp_enabled boolean Turn TOTP based 2FA on or off. Either TOTP or the whitelist needs to be enabled. The TOTP token is reset and returned after toggling this setting.
    totp_reset boolean If true, the TOTP key will be reset.
    whitelist_enabled boolean Turn the IP whitelist on or off. Either TOTP or the whitelist needs to be enabled.
    whitelist array Sets whitelist to this list of IPV4s.
    whitelist[#] object
        ipv4 string
        description string
    password string Update password.
    password_reset boolean Reset password.
permissions object User permissions.
    [a-z]- object
        r null, boolean If true, user has read permission.
        c null, boolean If true, user has create/edit permission.
        d null, boolean If true, user has delete permission.

Reply params
open_in_new
Name Type Description
user object
    language enum Enum options:
en-US|nl-NL
. IETF BCP 47 language tag
    firstname string
    lastname string
    username string
notification array
security object Object containing security options.
    totp_enabled boolean Whether or not TOTP based 2FA is enabled.
    whitelist_enabled boolean Whether or not the IP whitelist is enabled.
    whitelist array List of whitelisted IPV4s.
    whitelist[#] object
        ipv4 string
        description string
permissions object User permissions.
    [a-z]- object
        r null, boolean If true, user has read permission.
        c null, boolean If true, user has create/edit permission.
        d null, boolean If true, user has delete permission.
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "set_profile",
  "params": {
    "user": {
      "lastname": "Ouwehand",
      "firstname": "Teun",
      "language": "nl-NL"
    }
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "user": {
      "language": "nl-NL",
      "firstname": "Teun",
      "lastname": "Ouwehand",
      "username": "t90@nextpertise.nl"
    },
    "notification": [
      "Broadband"
    ],
    "security": {
      "whitelist_enabled": true,
      "totp_enabled": false,
      "whitelist": [
        {
          "ipv4": "10.20.30.44/32",
          "description": "Development VPS"
        },
        {
          "ipv4": "1.2.3.4/30",
          "description": "Nextpertise Office"
        }
      ]
    },
    "permissions": {
      "broadband": {
        "show_prices": true,
        "purchase": true
      },
      "user": {
        "admin": true
      }
    }
  }
}
JSON-RPC
del_profile()
permission needed: #user-d
Since v1.23.0

Request params
open_in_new
Name Type Description
username string

Reply params
open_in_new
This method returns an empty object:
{}
Examples
Request example
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "del_profile",
  "params": {
    "username": "teun@nextpertise.nl"
  }
}
Reply example
{
  "jsonrpc": "2.0",
  "id": 1,
  "params": {}
}
Release notes
https://api.nextpertise.nl/Release notes/v1

Changelog


Changed in version 1.23.0.


Changed in version 1.22.0, released on May 6th, 2020.


Changed in version 1.21.0, released on April 1st, 2020.


Changed in version 1.20.0, released on Feb 24th, 2020.


Changed in version 1.19.0, released on Dec 3th, 2019.


Changed in version 1.18.0, released on Oct 286th, 2019.


Changed in version 1.17.0, released on Oct 2nd, 2019.


Changed in version 1.16.0, released on Aug 9th, 2019.


Changed in version 1.12.0, released on Jul 8th, 2019.


Changed in version 1.11.0, released on May 14th, 2019.


Changed in version 1.10.0, released on Oct 8th, 2018.


Changed in version 1.7.0, released on Mar 29th, 2018.


Changed in version 1.4.0, released on Nov 16th, 2017.


Changed in version 1.3.5, released on Jul 18th, 2017.


Changed in version 1.2.0, released on May 9th, 2017.


Changed in version 1.0.0, released on Jan 4th, 2017.

Generated with Doca by CloudFlare