Toggle provides service for feature-flag/parameters based applications. Toggly API allows organizing your project configuration as standalone flexible and reliable service.
See GitHub repository for source code.
See Docker Store for details.
See docker-compose.yml file for details
docker-compose up -d
# Start MongoDB server
docker run -d -v mongo:/data --network toggly --name mongo mongo
# Start Redis server
docker run -d -v redis:/data --network toggly --name redis redis
# Start Toggly server
docker run -it -d --network toggly \
-p 8080:8080 \
--name toggly-server \
toggly/toggly-server \
--store.mongo.url=mongodb://mongo:27017/toggly \
--cache.type=redis \
--cache.redis.url=redis://redis:6379
| Short | Long | Environment | Default | Description |
|---|---|---|---|---|
| -v | --version | Show version | ||
| -p | --port | TOGGLY_API_PORT | 8080 | Port |
| --base-path | TOGGLY_API_BASE_PATH | /api | Base API Path | |
| --no-logo | false | Do not show application logo | ||
| --store.mongo.url | TOGGLY_STORE_MONGO_URL | Mongo connection url | ||
| --cache.type | TOGGLY_CACHE_TYPE | Cache type [memory|redis] | ||
| --cache.redis.url | TOGGLY_CACHE_REDIS_URL | Redis connection url | ||
| -h | --help | Show help message |
cd cmd/toggly-server && go install
toggly-server --version
docker build -t toggly/toggly-server .
See public OpenAPI specification.
{
"owner": "owner1",
"code": "project1",
"description": "Project description",
"status": "active",
"reg_date": "2018-10-12T23:47:18.967Z"
}
Where:
status can be active or disabledreg_date is date in ISO 8601 format{
"owner": "owner1",
"project_code": "project1",
"code": "dev",
"description": "Development environment",
"protected": false,
"reg_date": "2018-10-12T23:47:18.967Z"
}
Where:
reg_date is date in ISO 8601 format{
"code": "user",
"owner": "owner1",
"project_code": "project1",
"env_code": "env1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
Where:
parameters.type can be boot, int or stringparameters.value depends on typeEach request has to specify followed headers:
| Name | Required | Description |
|---|---|---|
| X-Toggly-Request-Id | No | Request ID for request tracking. Automatically generated If not specified |
| X-Toggly-Owner-Id | Yes | Owner identifier |
GET /v1/project - projects list for ownerResponse:
[
{
"owner": "owner1",
"code": "project1",
"description": "Project description",
"status": "active",
"reg_date": "2018-10-12T23:47:18.967Z"
}
]
POST /v1/project - create projectRequest:
{
"code": "project1",
"description": "Project description",
"status": "active"
}
Response:
{
"owner": "owner1",
"code": "project1",
"description": "Project description",
"status": "active",
"reg_date": "2018-10-12T23:47:18.967Z"
}
PUT /v1/project - update projectRequest:
{
"code": "project1",
"description": "Project description",
"status": "active"
}
Response:
{
"owner": "owner1",
"code": "project1",
"description": "Project description",
"status": "active",
"reg_date": "2018-10-12T23:47:18.967Z"
}
GET /v1/project/{project_code} - get project informationResponse:
{
"owner": "owner1",
"code": "project1",
"description": "Project description",
"status": "active",
"reg_date": "2018-10-12T23:47:18.967Z"
}
DELETE /v1/project/{project_code} - delete projectGET /v1/project/{project_code}/env - environments list for projectResponse:
{
"environments": [
{
"owner": "owner1",
"project_code": "project1",
"code": "dev",
"description": "Development environment",
"protected": false,
"reg_date": "2018-10-12T23:47:18.967Z"
}
]
}
POST /project/{project_code}/env - create environmentRequest:
{
"code": "dev",
"description": "Development environment",
"protected": false
}
Response:
{
"owner": "owner1",
"project_code": "project1",
"code": "dev",
"description": "Development environment",
"protected": false,
"reg_date": "2018-10-12T23:47:18.967Z"
}
PUT /project/{project_code}/env - update environmentRequest:
{
"code": "dev",
"description": "Development environment",
"protected": false
}
Response:
{
"owner": "owner1",
"project_code": "project1",
"code": "dev",
"description": "Development environment",
"protected": false,
"reg_date": "2018-10-12T23:47:18.967Z"
}
GET /project/{project_code}/env/{env_code} - get environment informationResponse:
{
"owner": "owner1",
"project_code": "project1",
"code": "dev",
"description": "Development environment",
"protected": false,
"reg_date": "2018-10-12T23:47:18.967Z"
}
DELETE /project/{project_code}/env/{env_code} - delete environmentGET /project/{project_code}/env/{env_code}/object - get objects listResponse:
[
{
"code": "user",
"owner": "owner1",
"project_code": "project1",
"env_code": "env1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
]
POST /project/{project_code}/env/{env_code}/object - create objectRequest:
{
"code": "obj1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
Response:
{
"code": "user",
"owner": "owner1",
"project_code": "project1",
"env_code": "env1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
PUT /project/{project_code}/env/{env_code}/object - create objectRequest:
{
"code": "obj1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
Response:
{
"code": "user",
"owner": "owner1",
"project_code": "project1",
"env_code": "env1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
GET /project/{project_code}/env/{env_code}/object/{obj_code} - get object informationResponse:
{
"code": "user",
"owner": "owner1",
"project_code": "project1",
"env_code": "env1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
DELETE /project/{project_code}/env/{env_code}/object/{obj_code} - delete objectGET /project/{project_code}/env/{env_code}/object/{obj_code}/inheritors - get all object inheritors as flat listResponse:
[
{
"code": "user",
"owner": "owner1",
"project_code": "project1",
"env_code": "env1",
"description": "Object 1 description",
"inherits": {
"project_code": "project1",
"env_code": "env1",
"object_code": "obj0"
},
"parameters": [
{
"code": "parameter1",
"description": "Parameter 1",
"type": "bool",
"value": false
}
]
}
]
Content type
Image
Digest
Size
7.8 MB
Last updated
almost 8 years ago
docker pull toggly/toggly-server