Skip to main content

Release 1.0

JSON-RPC API methods are designed for interaction with the service and making changes to the settings.


The API was designed using JSON-RPC protocol and is compatible with the following versions: 1.0 and 2.0. More info is available here: http://www.jsonrpc.org/specification

An example of a CURL request for JSON-RPC 1.0:

curl -X POST https://www.safedns.com/api/json/v1-L-d '{"id":0,"method":"methodName","params":{"param1":"param1"}}'

An example of a CURL request for JSON-RPC 2.0:

curl -X POST https://www.safedns.com/api/json/v2-L-d '{"id":0,"jsonrpc":"2.0","method":"methodName","params":{"param1":"para m1"}}'

Some API methods require basic authentication. In this case, authentication details must be sent in the request. Example:

curl -X POST https://www.safedns.com/api/json/v2 -L --user username:password -d '{"id":0,"jsonrpc":"2.0","method":"methodName","params":{"param1":"para m1"}}'

 

Response format: JSON.

A response example of a successful API call:

{
"jsonrpc": "2.0",
"id": 0,
"result": "result"
}

A method result is included in the “result” key.

In case of an incorrect request the response will be the following:

{
"jsonrpc": "2.0",
"id": 0,
"error": {"code": "code", "name": "name", "message": "message", "data": "data"}
}

Сurrently available API methods:


Available methods:

systemInfo

Gets information on the system settings.

Response:

{
"public_dns": <public_dns>,
"nxdomain": <nxdomain>,
"blockpage": <blockpage>,
"blockpage_token": <blockpage_token>,
"blockapi": <blockapi>
}

myip

Gets current client’s IP.

Response:

<ip address>

testAuth

User’s authentication. Mandatory parameters:

  • username - client’s username.
  • password - client’s password.

Response:

<true|false>

register‌

Registers a new user.

Mandatory parameters:

  • username - client’s username.
  • password - client's password.

Response:

In case of a successful registration:

[true]

If an error occurred:

[false, <error>]

userInfo

Gets user information. Authorization is required.

Response:

{
"plan": {
"name": <plan.name>,
"code": <plan.code>,
"features": <features>
},
"tz": <timezone_offset / 3600>,
"tz_minutes": <timezone_offset / 60>
}

profiles

Gets a list of available filtering profiles. Authorization is required.

Response:

[
{
"name": <name>,
"default": <true|false>,
"white_list_only":<true|false>,
"token": <token>,
"safe_search_enabled": <true|false>,
"is_schedule_enabled": <true|false>,
"id": <id>
}
]

addProfile

Creates a new filtering profile. Authorization is required.

Mandatory parameter:

  • name - profile name

Response:

{
"name": <name>,
"default": <true|false>,
"white_list_only": <true|false>,
"token": <token>,
"safe_search_enabled": <true|false>,
"is_schedule_enabled": <true|false>,
"id": <id>
}

removeProfile

Deletes a filtering profile. Authorization is required.

Mandatory parameter:

  • profile_id - id of the profile that should be deleted.

Response:

null

renameProfile

Renames a filtering profile. Authorization is required. Mandatory parameters:

  • profile_id - profile id.
  • name - profile name.

Response:

<name>

categories

Gets a list of available filtering categories. Authorization is required.


Response:


[

{

"title": <group1>,

"items": [{"title": <item1>, "id": <id>}]

}

]


userFilter

Gets a list of filtering categories applied for a user. Authorization is required. Mandatory parameter:

profile_id - profile id.


Response:


[<cat_id1>, <cat_id2>, <cat_id3>]


setFilterCat

Changes filtering settings. Authorization is required. Mandatory parameters:

profile_id - profile id.


cat - category id.


state - boolean value (add/remove the category from the filtering settings).


Response:


null


domains

Gets a list of white- and black-listed domains for a certain filtering profile. Authorization is required.


Mandatory parameters:


profile_id - profile id.


choice - domain type (available options: “black”, “white”, “alias”).

Response:

If the domain type is “black” or “white”


[{"domain":<domain>,"id":<id>}]



If the domain type is “alias”:


[{"domain":<domain>,"id":<id>,"ip":<ip>}]


addDomain

Adds a domain to the white or black list for a certain filtering profile. Authorization is required.


Mandatory parameters:


profile_id - profile ID.


choice - domain type (available options: “black”, “white”, “alias”).

domain – domain. Optional parameter:

ip - IP address, the parameter should be used if the “alias” domain is being

added.


comment - adds a comment for a domain.


Response:

<id of added domain>


removeDomain

Deletes a domain from the white or black list for a certain filtering profile. Authorization is required.


Mandatory parameters:


profile_id - profile ID.

choice - domain type (available options: “black”, “white”, “alias”).

domain – domain.


Response:


null


clearDomains

Clears the list of white-/black- listed domains for a certain filtering profile. Authorization is required.


Mandatory parameters:


profile_id - profile ID.

choice - domain type (available options: “black”, “white”, “alias”).


Response:


null


updateNic

Updates a dynamic IP. Authorization is required.


Mandatory parameters:


profile_id - profile ID.


hostname - hostname.


Response:


<IP address>


setWhiteListOnly

Enables/disables the “White list only” mode. Authorization is required. Mandatory parameters:

profile_id - profile ID.


flag - enable/disable option (boolean value).


Response:


null


setSafeSearchEnabled

Enables/disables “Safe Search mode” for Google and Bing. Authorization is required.


Mandatory parameters:


profile_id - profile ID.


flag - boolean value (enable/disable option).

Response:


null


setSafeYoutubeEnabled

Enables/disables “Safe Search mode” for Google and Bing. Authorization is required.


Mandatory parameters:


profile_id - profile ID.


flag - boolean value (enable/disable option).


Response:


null


setBlockUnknownEnabled

Enables/disables “Restricted YouTube mode”. Authorization is required. Mandatory parameters:

profile_id - profile ID.


flag - boolean value (enable/disable option).


Response:


null


multiSchedule

Gets information on the filtering schedule for a certain profile. Authorization is required.

Mandatory parameter:


profile_id - profile ID.


Response:


[[<offset1>, <true|false>], [<offset2>, <true|false>]]


setSchedule

Sets filtering schedule for a certain profile. Authorization is required Mandatory parameter:

profile_id - profile ID.


segments - a list of segments for scheduling: [[<offset1>, <true|false>], [<offset2>, <true|false>]].


Response:


[true]


setScheduleEnabled

Enables/disables filtering schedule for a certain profile. Authorization is required


Mandatory parameter:


profile_id - profile ID.


flag - boolean value (enable/disable option).


Response:


<true|false>


profileScheduleActivity

Gets the time left before a change of the filtering profile according to the filtering schedule. Authorization is required


Mandatory parameter:


profile_id - profile ID


Response:


[<true|false>, <mins_until_change>]



Note:

If the scheduling is turned off or there are no other states: mins_until_change = -1.


getProfile

This method includes 3 functions, depending on the parameters. Authorization is required.:

  1. creates AgentInfo;

  2. gets AgentInfo status;

  3. updates AgentInfo profile


    Mandatory parameters for creating Agent info and getting a profile:


uid - ""

hostname - hostname.

version - version.

os_info - information on the OS.

address - IP address.

Mandatory parameters for getting the current profile of AgentInfo:


uid - uid AgentInfo.

hostname - "".

version - "".

os_info - "".

address - "".


Mandatory parameters for updating AgentInfo:


uid - uid AgentInfo.

hostname - new hostname.

version - new version.

os_info - new information on the OS.

address - new IP address.


Response:


[<uid>, <token>, <profile_id>]


setProfile

Sets a filtering profile for AgentInfo. Authorization is required


Mandatory parameters:


uid - uid AgentInfo.


profile_id - profile ID.


Response:


null


feedback

Sends user’s feedback. Authorization is required.


Mandatory parameters:


title - the subject line.


message – user’s message.


Response:


null


getCategoriesDailyStats

Gets daily categories stats of a profile. Authorization is required.


Mandatory parameter:


profile_id - profile ID.


Optional parameters:


lang - response language.


categories_list - defines a list of categories. if it’s not set - the result will show all the categories.


Response:


{<category_name>: <value>}


getAdvertising

Gets the information on promo. Authorization is required


Response:


{<strAdvUrl>, <strImageUrl>}


getPlans

Gets the list of available billing plans


Optional parameter:


mobile - gets the Plans list, and determines whether to respond with mobile plans only. Boolean value.


Response:


{

'name': <plan name>, 'code': <plan code>,

'isMobile': <is mobile plan>, 'period': <period>, 'trialPeriod': <is trial>, 'price': <price>, 'description': <path>,

}


getPlan

Gets user’s billing plan. Authorization is required.


Response:


{

'name': <plan name>, 'expired': <expired_days>, 'isMobile': <true|false>,

}


getAPCVersion

Gets mobile app’s version: minimal supported (that should be mandatorily updated) and the current one.


Optional parameter:

tag - tag for getting the versions (the value “default” is set by default).


Response:


{

"minimalSupported": <minimum supported version (integer, non-negative number)>,

"current":<current version of the mobile agent (integer, non-negative number)>

}