All Classes Files Functions Variables Pages
Sample API Communication

A working example which guides you through the API basics. It prints a list of all available interfaces.

To make it work, please follow these steps:

1. Login

Login includes entering server hostname and login credentials with administration rights.

Request

POST /admin/api/jsonrpc/ HTTP/1.1
Accept: application/json-rpc
Content-Type: application/json-rpc; charset=UTF-8
Host: fw.company.tld:4081
Content-Length: 234
Connection: close
{"jsonrpc":"2.0","id":1,"method":"Session.login","params":{"userName":"admin","password":"PassVV0rd","application":{"name":"Example App","vendor":"Kerio Technologies s.r.o.","version":"1.0"}}}

Response

HTTP/1.1 200 OK
Connection: Close
Content-Type: application/json-rpc
Date: Fri, 25 Apr 2014 12:28:28 GMT
Server: Kerio Control Embedded Web Server
X-UA-Compatible: IE=edge
Set-Cookie: SESSION_CONTROL_WEBADMIN=e0f02476e5644f10ea47d12e0364b71fc25f3b6a2a46da5194878aa63e58d45c; path=/admin/; secure; HttpOnly
Set-Cookie: TOKEN_CONTROL_WEBADMIN=1064758fcaf191dd968f8d7b588db490a7dfcf1b17142b241d1b75a0b488847f; path=/admin/; secure
{"jsonrpc":"2.0","id":1,"result":{"token":"1064758fcaf191dd968f8d7b588db490a7dfcf1b17142b241d1b75a0b488847f"}}

It is also possible to use the read-only rights but please keep in mind that you cannot change any settings then.

2. CSRF Protection

Each request must contain valid Cookies with the X-Token value you obtained from login response.

3. Send a Request

To send a request, just send the JSON to server's API endpoint.

Request

POST /admin/api/jsonrpc/ HTTP/1.1
Accept: application/json-rpc
Content-Type: application/json-rpc; charset=UTF-8
Host: fw.company.tld:4081
Content-Length: 165
Connection: close
Cookie: SESSION_CONTROL_WEBADMIN=e0f02476e5644f10ea47d12e0364b71fc25f3b6a2a46da5194878aa63e58d45c; TOKEN_CONTROL_WEBADMIN=1064758fcaf191dd968f8d7b588db490a7dfcf1b17142b241d1b75a0b488847f;
X-Token: 1064758fcaf191dd968f8d7b588db490a7dfcf1b17142b241d1b75a0b488847f
{"jsonrpc":"2.0","id":2,"method":"Interfaces.get","params":{"sortByGroup":true,"query":{"start":0,"limit":-1,"orderBy":[{"columnName":"name","direction":"Asc"}]}}}

Response

HTTP/1.1 200 OK
Connection: Close
Content-Type: application/json-rpc
Date: Fri, 25 Apr 2014 13:09:26 GMT
Server: Kerio Control Embedded Web Server
X-UA-Compatible: IE=edge
{"jsonrpc":"2.0","id":2,"result":{"list":[{"enabled":true,"type":"Ethernet","status":"StoreStatusClean","dhcpServerEnabled":true,"id":"ac90fb7a-8c41-4bf7-b645-ed32d407e76f","group":"Trusted","name":"Ethernet","linkStatus":"Up","details":{"localizable":false,"fixedMessage":"Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)","localizableMessage":{"message":"","positionalParameters":[],"plurality":0}},"mac":"00-0c-29-ab-5a-32","systemName":"eth0","ip4Enabled":true,"mode":"InterfaceModeAutomatic","ip":"192.168.64.185","subnetMask":"255.255.255.0","secondaryAddresses":[],"dnsAutodetected":true,"dnsServers":"192.168.10.10;192.168.1.11;192.168.1.21","gatewayAutodetected":true,"gateway":"192.168.64.1","ip6Enabled":false,"ip6Mode":"InterfaceModeAutomatic","ip6Addresses":[],"linkIp6Address":"","ip6Gateway":"","routedIp6Prefix":"","connectivityParameters":{"failoverRole":"None","onDemand":false,"loadBalancingWeight":{"enabled":true,"value":1}},"encap":"InterfaceEncapNative","mtuOverride":{"enabled":false,"value":0},"ras":{"dead":false,"entryName":"","useOwnCredentials":false,"credentials":{"userName":"","password":"","passwordChanged":false},"timeout":{"enabled":false,"value":0},"connectTime":{"enabled":false,"id":"","name":""},"noConnectTime":{"enabled":false,"id":"","name":""},"bdScriptEnabled":false,"adScriptEnabled":false,"bhScriptEnabled":false,"ahScriptEnabled":false,"rasType":"PPPoE","pppoeIfaceId":"","server":"","papEnabled":false,"chapEnabled":false,"mschapEnabled":false,"mschapv2Enabled":false,"mppe":"MppeDisabled","mppeStateful":false},"server":{"kerioVpnEnabled":false,"kerioVpnCertificate":{"id":"","name":"","invalid":false},"port":0,"defaultRoute":false,"ipsecVpnEnabled":false,"mschapv2Enabled":false,"ipsecVpnCertificate":{"id":"","name":"","invalid":false},"cipherIke":"","cipherEsp":"","useCertificate":false,"psk":{"enabled":false,"value":""},"routes":[],"network":"","mask":"","localDns":false,"primaryDns":"","secondaryDns":"","autodetectDomainSuffix":false,"domainSuffix":"","localWins":false,"primaryWins":"","secondaryWins":""},"tunnel":{"type":"VpnKerio","peer":{"enabled":false,"value":""},"localRoutes":[],"remoteRoutes":[],"remoteFingerprint":"","useRemoteAutomaticRoutes":false,"useRemoteCustomRoutes":false,"psk":{"enabled":false,"value":""},"certificate":{"id":"","name":"","invalid":false},"cipherIke":"","cipherEsp":"","localIdValue":"","remoteIdValue":"","useLocalAutomaticRoutes":false,"useLocalCustomRoutes":false},"flags":{"deletable":false,"dialable":false,"hangable":false,"virtualSwitch":false,"wifi":false,"vlan":false},"ports":["\/device\/eth\/{00-0c-29-ab-5a-32}"],"stp":false,"vlanId":0},{"enabled":true,"type":"Ethernet","status":"StoreStatusClean","dhcpServerEnabled":true,"id":"de39c4a5-84a7-9346-817f-9b659f81c8ca","group":"Trusted","name":"Ethernet 2","linkStatus":"Up","details":{"localizable":false,"fixedMessage":"Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)","localizableMessage":{"message":"","positionalParameters":[],"plurality":0}},"mac":"00-0c-29-ab-5a-3c","systemName":"eth1","ip4Enabled":true,"mode":"InterfaceModeAutomatic","ip":"","subnetMask":"","secondaryAddresses":[],"dnsAutodetected":true,"dnsServers":"","gatewayAutodetected":true,"gateway":"","ip6Enabled":false,"ip6Mode":"InterfaceModeAutomatic","ip6Addresses":[],"linkIp6Address":"","ip6Gateway":"","routedIp6Prefix":"","connectivityParameters":{"failoverRole":"None","onDemand":false,"loadBalancingWeight":{"enabled":true,"value":1}},"encap":"InterfaceEncapNative","mtuOverride":{"enabled":false,"value":0},"ras":{"dead":false,"entryName":"","useOwnCredentials":false,"credentials":{"userName":"","password":"","passwordChanged":false},"timeout":{"enabled":false,"value":0},"connectTime":{"enabled":false,"id":"","name":""},"noConnectTime":{"enabled":false,"id":"","name":""},"bdScriptEnabled":false,"adScriptEnabled":false,"bhScriptEnabled":false,"ahScriptEnabled":false,"rasType":"PPPoE","pppoeIfaceId":"","server":"","papEnabled":false,"chapEnabled":false,"mschapEnabled":false,"mschapv2Enabled":false,"mppe":"MppeDisabled","mppeStateful":false},"server":{"kerioVpnEnabled":false,"kerioVpnCertificate":{"id":"","name":"","invalid":false},"port":0,"defaultRoute":false,"ipsecVpnEnabled":false,"mschapv2Enabled":false,"ipsecVpnCertificate":{"id":"","name":"","invalid":false},"cipherIke":"","cipherEsp":"","useCertificate":false,"psk":{"enabled":false,"value":""},"routes":[],"network":"","mask":"","localDns":false,"primaryDns":"","secondaryDns":"","autodetectDomainSuffix":false,"domainSuffix":"","localWins":false,"primaryWins":"","secondaryWins":""},"tunnel":{"type":"VpnKerio","peer":{"enabled":false,"value":""},"localRoutes":[],"remoteRoutes":[],"remoteFingerprint":"","useRemoteAutomaticRoutes":false,"useRemoteCustomRoutes":false,"psk":{"enabled":false,"value":""},"certificate":{"id":"","name":"","invalid":false},"cipherIke":"","cipherEsp":"","localIdValue":"","remoteIdValue":"","useLocalAutomaticRoutes":false,"useLocalCustomRoutes":false},"flags":{"deletable":false,"dialable":false,"hangable":false,"virtualSwitch":false,"wifi":false,"vlan":false},"ports":["\/device\/eth\/{00-0c-29-ab-5a-3c}"],"stp":false,"vlanId":0},{"enabled":true,"type":"VpnServer","status":"StoreStatusClean","dhcpServerEnabled":false,"id":"VpnServer","group":"Vpn","name":"VpnServer","linkStatus":"Up","details":{"localizable":true,"fixedMessage":"","localizableMessage":{"message":"%1 clients connected.","positionalParameters":["0"],"plurality":1}},"mac":"","systemName":"","ip4Enabled":false,"mode":"InterfaceModeManual","ip":"172.27.116.1","subnetMask":"","secondaryAddresses":[],"dnsAutodetected":false,"dnsServers":"","gatewayAutodetected":false,"gateway":"","ip6Enabled":false,"ip6Mode":"InterfaceModeManual","ip6Addresses":[],"linkIp6Address":"","ip6Gateway":"","routedIp6Prefix":"","connectivityParameters":{"failoverRole":"None","onDemand":false,"loadBalancingWeight":{"enabled":false,"value":0}},"encap":"InterfaceEncapNative","mtuOverride":{"enabled":false,"value":0},"ras":{"dead":false,"entryName":"","useOwnCredentials":false,"credentials":{"userName":"","password":"","passwordChanged":false},"timeout":{"enabled":false,"value":0},"connectTime":{"enabled":false,"id":"","name":""},"noConnectTime":{"enabled":false,"id":"","name":""},"bdScriptEnabled":false,"adScriptEnabled":false,"bhScriptEnabled":false,"ahScriptEnabled":false,"rasType":"PPPoE","pppoeIfaceId":"","server":"","papEnabled":false,"chapEnabled":false,"mschapEnabled":false,"mschapv2Enabled":false,"mppe":"MppeDisabled","mppeStateful":false},"server":{"kerioVpnEnabled":true,"kerioVpnCertificate":{"id":"90f46bc6-8d45-0547-9b0e-3fa797fbccca","name":"Default","invalid":false},"port":4090,"defaultRoute":false,"ipsecVpnEnabled":true,"mschapv2Enabled":false,"ipsecVpnCertificate":{"id":"90f46bc6-8d45-0547-9b0e-3fa797fbccca","name":"Default","invalid":false},"cipherIke":"aes128-sha1-modp2048,3des-sha1-modp1536","cipherEsp":"aes128-sha1,3des-sha1","useCertificate":true,"psk":{"enabled":false,"value":""},"routes":[],"network":"172.27.116.0","mask":"255.255.255.0","localDns":true,"primaryDns":"","secondaryDns":"","autodetectDomainSuffix":true,"domainSuffix":"","localWins":true,"primaryWins":"","secondaryWins":""},"tunnel":{"type":"VpnKerio","peer":{"enabled":false,"value":""},"localRoutes":[],"remoteRoutes":[],"remoteFingerprint":"","useRemoteAutomaticRoutes":false,"useRemoteCustomRoutes":false,"psk":{"enabled":false,"value":""},"certificate":{"id":"","name":"","invalid":false},"cipherIke":"","cipherEsp":"","localIdValue":"","remoteIdValue":"","useLocalAutomaticRoutes":false,"useLocalCustomRoutes":false},"flags":{"deletable":false,"dialable":false,"hangable":false,"virtualSwitch":false,"wifi":false,"vlan":false},"ports":[],"stp":false,"vlanId":0}],"totalItems":3}}

4. Logout

At the end, it is a good practice to logout and close connection to the server. You are done.

Request

POST /admin/api/jsonrpc/ HTTP/1.1
Accept: application/json-rpc
Content-Type: application/json-rpc; charset=UTF-8
Host: fw.company.tld:4081
Content-Length: 127
Connection: close
Cookie: SESSION_CONTROL_WEBADMIN=e0f02476e5644f10ea47d12e0364b71fc25f3b6a2a46da5194878aa63e58d45c; TOKEN_CONTROL_WEBADMIN=1064758fcaf191dd968f8d7b588db490a7dfcf1b17142b241d1b75a0b488847f;
X-Token: 1064758fcaf191dd968f8d7b588db490a7dfcf1b17142b241d1b75a0b488847f
{"jsonrpc":"2.0","id":3,"method":"Session.logout"}

Response

HTTP/1.1 200 OK
Connection: Close
Content-Type: application/json-rpc
Date: Fri, 25 Apr 2014 13:09:26 GMT
Server: Kerio Control Embedded Web Server
X-UA-Compatible: IE=edge
{"jsonrpc":"2.0","id":3,"result":{}}