JSON Reference Guide

The input and output of the configurator are specified using JSON. Below you will find JSON annotated with comments about all available options.

{
	"version": 1,
	"organization": {
		"name": "Fairy Tail", // Required
		"email": "info@fairy.tail",
		"street": "My Street",
		"number": "42",
		"numberAddition": "a",
		"zipCode": "1234AA",
		"city": "Delft",
		"country": "NL", // ISO-3166-1 alpha-2
		// Required, if any external number is defined. 
		// Must be one of the defined external phone number objects.
		"centralPhoneNumber": {
			"new": false,
			"value": "0151111111"
		}
	},
	"departments": [
		{
			"name": "Sales",
			"users": ["natsu@fairy.tail", "happy@fairy.tail"], // User's 'email' in this department
			"enableCallRecording": false, // Optional, if true will enable call recording for this department. Default: false
			"fallback": {
				"type": "dept", // 'voicemail' | 'dept' | 'user'
				"value": "Support" // User's 'email' | Department's 'name'
			},
			// Must be unique. Between 1 and including 4 digits long.
			// Must not start with 0 or 1, be an emergency number, not be a reserved number such as 600 or 7000.
			"internalNumbers": ["200"], 
			"externalNumbers": [
				{
					"new": true, // If true, this is a new number. If false, this is an existing number. Default: false.
					// Must be unique. If an existing number, must be a valid external number in organization's country.
					// If organization's country is not specified, only international numbers are valid. 
					// If a new number, can be a string.
					"value": "Sales 1", 
					"country": "NL", // Required, if this is a new number. Country of number, in ISO 3166-1 alpha-2 format.
					"area": "015" // Required, if this is a new number. Area code of number.
				},
				{
					"new": false,
					"value": "0151111111"
				}
			],
			// Optional, contains the opening hours schedule. 
			// When closed, calls are redirected to a special 'organization closed' phone line.
			"openingHoursSchedule": [ 
				{
					"day": "mon", // mon | tue | wed | thu | fri | sat | sun
					"time": {
						"start": "08:00",
						"end": "09:00"
					}
				},
				{
					"day": "tue",
					"time": {
						"start": "10:00",
						"end": "24:00" // 24:00 is supported as end time
					}
				}
			],
		},
		{
			"name": "Support",
			"users": ["lucy@fairy.tail"],
			"fallback": {
				"type": "user",
				"value": "natsu@fairy.tail"
			},
			"internalNumbers": ["300"],
			"externalNumbers": []
		},
		{
			"name": "R&D",
			"users": ["levy@fairy.tail"],
			"enableCallRecording": true,
			"fallback": {
				"type": "voicemail"
			}, 
			"internalNumbers": ["400"],
			"externalNumbers": []
		}
	],
	"users": [
		{
			"email": "natsu@fairy.tail", // Required. Must be unique. Used as Xelion username.
			"personName": "Natsu Dragneel", // Must be unique.
			"enableCallRecording": false, // Optional, if true will enable call recording for this user. Default: false
			"fallback": {
				"type": "voicemail"
			},
			"internalNumbers": ["202"],
			"externalNumbers": [
				{
					"new": false,
					"value": "0152222222"
				}
			],
			// Optional, contains the personal mobile phone number of the user. Used in app provisioning.
			"mobilePhoneNumber": "0691111111", 
			// Selected phones for this user. Name must be present in settings.availablePhones.device.
			"phones": ["Jabra Evolve 75 Stereo"] 
		},
		{
			"email": "lucy@fairy.tail",
			"personName": "Lucy Heartfilia",
			"fallback": {
				"type": "dept",
				"value": "Support"
			},
			"internalNumbers": ["203"],
			"externalNumbers": [],
			"phones": ["Yealink SIP-T53"]
		},
		{
			"email": "happy@fairy.tail",
			"personName": "Happy",
			"fallback": {
				"type": "user",
				"value": "natsu@fairy.tail"
			},
			"internalNumbers": ["204"],
			"externalNumbers": [],
			"phones": []
		},
		{
			"email": "levy@fairy.tail",
			"personName": "Levy McGarden",
			"enableCallRecording": true,
			"fallback": {
				"type": "dept",
				"value": "R&D"
			},
			"internalNumbers": ["221"],
			"externalNumbers": [],
			"phones": ["Yealink SIP-T53", "Jabra Evolve 75 Stereo"]
		}
	],
	// This section contains settings, which are shared over orders, of the configurator and provisioning interface,
	// as a way to restrict access to features, specify available phones and set pricing.
	"settings": {
		"features": { // enable/disable features for provisioning. For more details, see API documentation. Defaults are listed.
			// If true, will use the mobile phone number of a user to allow login with mobile phone number in the Android and iOS apps.
			"enableAppCloudProvisioning": false,
			// If true, will create an opening hours schedule per department, if defined, and show the opening hours section in the UI.
			"enableOpeningHoursPerDepartment": false,
			// If true, default call recording retention is enabled. If the default value of retention period on Tenant has been changed, this will do nothing and use the changed value, otherwise 7 days will be used.
			// If false, the default call recording retention is set to 0, effectively disabling call recordings. If the default value of retention period on the Tenant has been changed, the provisioning will fail! This is because you have explicitly set a retention period, but now here explicitly ask to disable it.
			"enableDefaultCallRecordingRetention": false,
			// If true, will create three default locations: 'home', 'office', 'external'.
			"enableDefaultLocations": false,
			// If true, will create a default wallboard for each department. 
			"enableDefaultWallboardPerDepartment": false,
			// If true, will set the general pickup number to '*8'.
			"enableGeneralPickupNumber": false,
			// If true, will enable Microsoft Exchange functionality.
			"enableMSExchange": false,
			// If true, will set hotdesking to never terminate.
			"enableNeverTerminateHotdesking": false,
			// If true, will enable checks to verify the tenant is not in use.
			"enablePristineCheck": true,
			// If true, for each user, will add each department and each user of the department the user is member of, as a favorite of the current user.
			"enableUserFavorites": false
		},
		"availablePhones": [ // Optional. List of phones available for selection in UI. Multiple instances of a single phone can be selected.
			{
				"type": "hard", // hard / soft
				"device": "Yealink SIP-T46S", // Name of phone
				"price": 10000 // Price of the phone, in cents
			},
			{
				"type": "hard",
				"device": "Gigaset N670",
				"price": 20000
			},
			{
				"type": "soft",
				"device": "Jabra Evolve 75 Stereo",
				"price": 12000
			}
		],
		"pricing": { // Optional
			"currency": "€", // Currency symbol to use for pricing. If not specified, will hide pricing and only show amounts.
			"oneTime": {
				"installation": 10000 // Price in cents, for example installation fee
			},
			"recurring": { // Per month
				"xelionLicense": 1000, // Price in cents, one Xelion user license
				"trunk": 500, // Price in cents, of a trunk
				"phoneNumber": 100 // Price in cents, of a phone number
			}
		},
		"defaultDepartment": { // Optional, if specified will allow overwriting the automatically generated new department values in the UI.
			"name": "Reception", // Name of the first department.
			"internalNumber": {
				"initial": 200, // Initial internal number for new departments. Value is the default.
				"incrementBy": 100, // Increment each next new department's internal number with this much, e.g. 200+100 = 300. Value is the default.
			},
		},
		"defaultUser": { // Optional, if specified will allow overwriting the automatically generated new user values in the UI.
			"internalNumber": {
				"initial": 201, // Initial internal number for new users. Value is the default.
				"incrementBy": 1, // Increment each next new user's internal number with this much, e.g. 201+1 = 202. Value is the default.
			},
		},
		"limitUsers": 10, // Optional. If set, will limit the number of users that can be created using the intake. Useful if in an external process the number of users has been set.
		"limitExternalNumbers": ["0151111111", "0152222222", "0153333333"] // Optional. If set, will limit the external numbers than can be selected using the intake. Useful if in an external process the avaialble numbers are already known.
	}
}