Control Scrapoxy with a REST API
Endpoint
You can access to the commander API at http://localhost:8889/api
Authentication
Every requests must have an Authorization header.
The value is the hash base64 of the password set in the configuration (commander/password).
Instances
Get all instances
Request
GET http://localhost:8889/api/instances
Response (JSON)
Status: 200
The body contains all informations about instances.
Example:
const request = require('request');
const password = 'YOUR_COMMANDER_PASSWORD';
const opts = {
method: 'GET',
url: 'http://localhost:8889/api/instances',
headers: {
'Authorization': new Buffer(password).toString('base64'),
},
};
request(opts, (err, res, body) => {
if (err) return console.log('Error: ', err);
console.log('Status: %d\n\n', res.statusCode);
const bodyParsed = JSON.parse(body);
console.log(bodyParsed);
});
Stop an instance
Request
POST http://localhost:8889/api/instances/stop
JSON payload:
{
"name": "<name of the proxy>"
}
Response (JSON)
Status: 200
The instance exists.
Scrapoxy stops it. And the instance is restarted, with a new IP address.
The body contains the remaining count of alive instances.
{
"alive": <count>
}
Status: 404
The instance does not exist.
Example:
const request = require('request');
const password = 'YOUR_COMMANDER_PASSWORD',
instanceName = 'YOUR INSTANCE NAME';
const opts = {
method: 'POST',
url: 'http://localhost:8889/api/instances/stop',
json: {
name: instanceName,
},
headers: {
'Authorization': new Buffer(password).toString('base64'),
},
};
request(opts, (err, res, body) => {
if (err) return console.log('Error: ', err);
console.log('Status: %d\n\n', res.statusCode);
console.log(body);
});
Scaling
Get the scaling
Request
GET http://localhost:8889/api/scaling
Response (JSON)
Status: 200
The body contains all the configuration of the scaling.
Example:
const request = require('request');
const password = 'YOUR_COMMANDER_PASSWORD';
const opts = {
method: 'GET',
url: 'http://localhost:8889/api/scaling',
headers: {
'Authorization': new Buffer(password).toString('base64'),
},
};
request(opts, (err, res, body) => {
if (err) return console.log('Error: ', err);
console.log('Status: %d\n\n', res.statusCode);
const bodyParsed = JSON.parse(body);
console.log(bodyParsed);
});
Update the scaling
Request
PATCH http://localhost:8889/api/scaling
JSON payload:
{
"min": "min_scaling",
"required": "required_scaling",
"max": "max_scaling",
}
Response (JSON)
Status: 200
The scaling is updated.
Status: 204
The scaling is not updated.
Example:
const request = require('request');
const password = 'YOUR_COMMANDER_PASSWORD';
const opts = {
method: 'PATCH',
url: 'http://localhost:8889/api/scaling',
json: {
min: 1,
required: 5,
max: 10,
},
headers: {
'Authorization': new Buffer(password).toString('base64'),
},
};
request(opts, (err, res, body) => {
if (err) return console.log('Error: ', err);
console.log('Status: %d\n\n', res.statusCode);
console.log(body);
});
Configuration
Get the configuration
Request
GET http://localhost:8889/api/config
Response (JSON)
Status: 200
The body contains all the configuration of Scrapoxy (including scaling).
Example:
const request = require('request');
const password = 'YOUR_COMMANDER_PASSWORD';
const opts = {
method: 'GET',
url: 'http://localhost:8889/api/config',
headers: {
'Authorization': new Buffer(password).toString('base64'),
},
};
request(opts, (err, res, body) => {
if (err) return console.log('Error: ', err);
console.log('Status: %d\n\n', res.statusCode);
const bodyParsed = JSON.parse(body);
console.log(bodyParsed);
});
Update the configuration
Request
PATCH http://localhost:8889/api/config
JSON payload:
{
"key_to_override": "<new_value>",
"section": {
"key2_to_override": "<new value>"
}
}
Response (JSON)
Status: 200
The configuration is updated.
Status: 204
The configuration is not updated.
Example:
const request = require('request');
const password = 'YOUR_COMMANDER_PASSWORD';
const opts = {
method: 'PATCH',
url: 'http://localhost:8889/api/config',
json: {
instance: {
scaling: {
max: 300,
},
},
},
headers: {
'Authorization': new Buffer(password).toString('base64'),
},
};
request(opts, (err, res, body) => {
if (err) return console.log('Error: ', err);
console.log('Status: %d\n\n', res.statusCode);
console.log(body);
});