All URIs are relative to https://api.sendinblue.com/v3
Method | HTTP request | Description |
---|---|---|
addCredits | POST /reseller/children/{childIdentifier}/credits/add | Add Email and/or SMS credits to a specific child account |
associateIpToChild | POST /reseller/children/{childIdentifier}/ips/associate | Associate a dedicated IP to the child |
createChildDomain | POST /reseller/children/{childIdentifier}/domains | Create a domain for a child account |
createResellerChild | POST /reseller/children | Creates a reseller child |
deleteChildDomain | DELETE /reseller/children/{childIdentifier}/domains/{domainName} | Delete the sender domain of the reseller child based on the childIdentifier and domainName passed |
deleteResellerChild | DELETE /reseller/children/{childIdentifier} | Delete a single reseller child based on the child identifier supplied |
dissociateIpFromChild | POST /reseller/children/{childIdentifier}/ips/dissociate | Dissociate a dedicated IP to the child |
getChildAccountCreationStatus | GET /reseller/children/{childIdentifier}/accountCreationStatus | Get the status of a reseller's child account creation, whether it is successfully created (exists) or not based on the identifier supplied |
getChildDomains | GET /reseller/children/{childIdentifier}/domains | Get all sender domains for a specific child account |
getChildInfo | GET /reseller/children/{childIdentifier} | Get a child account's details |
getResellerChilds | GET /reseller/children | Get the list of all children accounts |
getSsoToken | GET /reseller/children/{childIdentifier}/auth | Get session token to access Sendinblue (SSO) |
removeCredits | POST /reseller/children/{childIdentifier}/credits/remove | Remove Email and/or SMS credits from a specific child account |
updateChildAccountStatus | PUT /reseller/children/{childIdentifier}/accountStatus | Update info of reseller's child account status based on the childIdentifier supplied |
updateChildDomain | PUT /reseller/children/{childIdentifier}/domains/{domainName} | Update the sender domain of reseller's child based on the childIdentifier and domainName passed |
updateResellerChild | PUT /reseller/children/{childIdentifier} | Update info of reseller's child based on the child identifier supplied |
RemainingCreditModel addCredits(childIdentifier, addCredits)
Add Email and/or SMS credits to a specific child account
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var addCredits = new SibApiV3Sdk.AddCredits(); // AddCredits | Values to post to add credit to a specific child account
apiInstance.addCredits(childIdentifier, addCredits).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
addCredits | AddCredits | Values to post to add credit to a specific child account |
- Content-Type: application/json
- Accept: application/json
associateIpToChild(childIdentifier, ip)
Associate a dedicated IP to the child
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var ip = new SibApiV3Sdk.ManageIp(); // ManageIp | IP to associate
apiInstance.associateIpToChild(childIdentifier, ip).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
ip | ManageIp | IP to associate |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
createChildDomain(childIdentifier, addChildDomain)
Create a domain for a child account
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var addChildDomain = new SibApiV3Sdk.AddChildDomain(); // AddChildDomain | Sender domain to add for a specific child account. This will not be displayed to the parent account.
apiInstance.createChildDomain(childIdentifier, addChildDomain).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
addChildDomain | AddChildDomain | Sender domain to add for a specific child account. This will not be displayed to the parent account. |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
CreateReseller createResellerChild(opts)
Creates a reseller child
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var opts = {
'resellerChild': new SibApiV3Sdk.CreateChild() // CreateChild | reseller child to add
};
apiInstance.createResellerChild(opts).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
resellerChild | CreateChild | reseller child to add | [optional] |
- Content-Type: application/json
- Accept: application/json
deleteChildDomain(childIdentifier, domainName)
Delete the sender domain of the reseller child based on the childIdentifier and domainName passed
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var domainName = "domainName_example"; // String | Pass the existing domain that needs to be deleted
apiInstance.deleteChildDomain(childIdentifier, domainName).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
domainName | String | Pass the existing domain that needs to be deleted |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
deleteResellerChild(childIdentifier)
Delete a single reseller child based on the child identifier supplied
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or child id of reseller's child
apiInstance.deleteResellerChild(childIdentifier).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or child id of reseller's child |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
dissociateIpFromChild(childIdentifier, ip)
Dissociate a dedicated IP to the child
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var ip = new SibApiV3Sdk.ManageIp(); // ManageIp | IP to dissociate
apiInstance.dissociateIpFromChild(childIdentifier, ip).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
ip | ManageIp | IP to dissociate |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
GetChildAccountCreationStatus getChildAccountCreationStatus(childIdentifier)
Get the status of a reseller's child account creation, whether it is successfully created (exists) or not based on the identifier supplied
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
apiInstance.getChildAccountCreationStatus(childIdentifier).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child |
- Content-Type: application/json
- Accept: application/json
GetChildDomains getChildDomains(childIdentifier)
Get all sender domains for a specific child account
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
apiInstance.getChildDomains(childIdentifier).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child |
- Content-Type: application/json
- Accept: application/json
GetChildInfo getChildInfo(childIdentifier)
Get a child account's details
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
apiInstance.getChildInfo(childIdentifier).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child |
- Content-Type: application/json
- Accept: application/json
GetChildrenList getResellerChilds(opts)
Get the list of all children accounts
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var opts = {
'limit': 10, // Number | Number of documents for child accounts information per page
'offset': 0 // Number | Index of the first document in the page
};
apiInstance.getResellerChilds(opts).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
limit | Number | Number of documents for child accounts information per page | [optional] [default to 10] |
offset | Number | Index of the first document in the page | [optional] [default to 0] |
- Content-Type: application/json
- Accept: application/json
GetSsoToken getSsoToken(childIdentifier)
Get session token to access Sendinblue (SSO)
It returns a session [token] which will remain valid for a short period of time. A child account will be able to access a white-labeled section by using the following url pattern => https:/email.mydomain.com/login/sso?token=[token]
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
apiInstance.getSsoToken(childIdentifier).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child |
- Content-Type: application/json
- Accept: application/json
RemainingCreditModel removeCredits(childIdentifier, removeCredits)
Remove Email and/or SMS credits from a specific child account
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var removeCredits = new SibApiV3Sdk.RemoveCredits(); // RemoveCredits | Values to post to remove email or SMS credits from a specific child account
apiInstance.removeCredits(childIdentifier, removeCredits).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
removeCredits | RemoveCredits | Values to post to remove email or SMS credits from a specific child account |
- Content-Type: application/json
- Accept: application/json
updateChildAccountStatus(childIdentifier, updateChildAccountStatus)
Update info of reseller's child account status based on the childIdentifier supplied
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var updateChildAccountStatus = new SibApiV3Sdk.UpdateChildAccountStatus(); // UpdateChildAccountStatus | values to update in child account status
apiInstance.updateChildAccountStatus(childIdentifier, updateChildAccountStatus).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
updateChildAccountStatus | UpdateChildAccountStatus | values to update in child account status |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
updateChildDomain(childIdentifier, domainName, updateChildDomain)
Update the sender domain of reseller's child based on the childIdentifier and domainName passed
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var domainName = "domainName_example"; // String | Pass the existing domain that needs to be updated
var updateChildDomain = new SibApiV3Sdk.UpdateChildDomain(); // UpdateChildDomain | value to update for sender domain
apiInstance.updateChildDomain(childIdentifier, domainName, updateChildDomain).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
domainName | String | Pass the existing domain that needs to be updated | |
updateChildDomain | UpdateChildDomain | value to update for sender domain |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
updateResellerChild(childIdentifier, resellerChild)
Update info of reseller's child based on the child identifier supplied
var SibApiV3Sdk = require('sib-api-v3-sdk');
var defaultClient = SibApiV3Sdk.ApiClient.instance;
// Configure API key authorization: api-key
var apiKey = defaultClient.authentications['api-key'];
apiKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//apiKey.apiKeyPrefix = 'Token';
// Configure API key authorization: partner-key
var partnerKey = defaultClient.authentications['partner-key'];
partnerKey.apiKey = 'YOUR API KEY';
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//partnerKey.apiKeyPrefix = 'Token';
var apiInstance = new SibApiV3Sdk.ResellerApi();
var childIdentifier = "childIdentifier_example"; // String | Either auth key or id of reseller's child
var resellerChild = new SibApiV3Sdk.UpdateChild(); // UpdateChild | values to update in child profile
apiInstance.updateResellerChild(childIdentifier, resellerChild).then(function() {
console.log('API called successfully.');
}, function(error) {
console.error(error);
});
Name | Type | Description | Notes |
---|---|---|---|
childIdentifier | String | Either auth key or id of reseller's child | |
resellerChild | UpdateChild | values to update in child profile |
null (empty response body)
- Content-Type: application/json
- Accept: application/json