ALM (v3)
This API is already deprecated.
https://api.mobingi.com
In order to interact with the API, your application must authenticate. Mobingi API handles this through OAuth. An OAuth token functions as a complete authentication request. In effect, it acts as a substitute for a username and password pair.
To get an OAuth token, make a POST request to
POST
/v3/access_token
Parameters | Type | Required | Detail |
client_id | string | Yes | |
client_secret | string | Yes | |
grant_type | string | Yes | This value is either client_credentials or password . If you grant with password, you are interacting the same as working around Mobingi UI; If you grant with client_credentials, you are acting as an Alm-Agent, and most resource related permissions are denied by RBAC. |
Example Request:
curl -X POST https://api.mobingi.com/v3/access_token \
-H "Content-Type: application/json" \
-d '{"grant_type":"client_credentials","client_id":"lg-5447820c870e1-xBV0OpTEN-tm","client_secret":"sFVYDoe07fxPjNgYvauYGOYCeXbOTE"}'
Response Body:
{
"token_type": "Bearer",
"expires_in": 43200,
"access_token": "eyJ0eXAiOiJQiLCJhbGciOMeXzQfME"
}
You can then start making API requests by passing the
access_token
value to the Authorization HeaderAuthorization: Bearer eyJ0eXAiOiJQiLCJhbGciOMeXzQfME
Applies the Mobingi Alm template and creates stack.
POST
/v3/alm/template
Parameters | Type | Required | Detail |
{ template body } | string | Yes | Mobingi Alm template body in json string format |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Request body
{
"version": "2017-03-03",
"label": "template version label #1",
"description": "This template creates a sample stack with EC2 instance on AWS",
"vendor": {
"aws": {
"cred": "AKIAJ...DZLA",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "Web01",
"provision": {
"image": "${computed}",
"volume_type": "${computed}",
"instance_type": "t2.micro",
"instance_count": 1,
"keypair": true
}
}
]
}
Response Body
HTTP/1.1 201 Created
{
"status": "success",
"stack_status": "CREATE_IN_PROGRESS",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"version_id": "98O0jK6CQk8qLi14S2SLU8z3JIo3.JPx"
}
Updates the Mobingi Alm template and applies the changes to stack resources.
Note:
vendor
section will be ignored when performing this API call. You can not change cloud vendors after the stack is created.PUT
/v3/alm/template/{stack_id}
Parameters | Type | Required | Detail |
{ template body } | string | Yes | Mobingi Alm template body in json string format |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Request body
{
"version": "2017-03-03",
"label": "template version label #2",
"description": "This template creates a sample stack with EC2 instance on AWS",
"vendor": {
"aws": {
"cred": "AKIAJ...DZLA",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "Web01",
"provision": {
"image": "${computed}",
"instance_type": "m3.medium",
"instance_count": 2,
"keypair": true
}
}
]
}
Response Body
HTTP/1.1 202 Accepted
{
"status": "success",
"stack_status": "UPDATE_IN_PROGRESS",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"version_id": "gCn2JuPhndwxMZuidOER0yyxM8jZB6Vn"
}
Compares the resource changes between two Mobingi Alm templates.
POST
/v3/alm/template/compare
Parameters | Type | Required | Detail |
id | array | conditional | items contain stack id and version information |
body | array | conditional | items contain template body source |
Note: You can compare two templates by retrieving them from their version id and stack id. Or, you can compare a target template body (posted in json format to
body
parameter) with a source template retrieved by its version id and stack id.The current API version only supports two templates comparison, and you always should retrieve the source template by its version id and stack id. That being said, you have to always pass at least one item in parameter
id
array. Below are two examples:Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Request body ( Example 1 )
{
"id": [
{
"mo-5447826c870e7-ZgNTSRM8K-tk": {
"version": "98O0jK5CQk8gLi14S2SLU8z3JIo3.JPx"
}
},
{
"mo-5447826c870e7-ZgNTSRM8K-tk": {
"version": "gCn2JuPhndwxMZuodOER0yyxM8jZB6Vn"
}
}
]
}
Request body ( Example 2 )
{
"id": [
{
"mo-5447826c870e7-9S3zWP7jM-tk": {
"version": "dK7R9_PuclTqSysMniPTcmpE.5u58RVL"
}
}
],
"body": [
"{\n \"version\": \"2017-03-03\",\n \"label\": \"template version label #2\",\n \"description\": \"This template creates a sample stack with EC2 instance on AWS\",\n \"vendor\": {\n \"aws\": {\n \"cred\": \"AKIAJ...DZLA\",\n \"region\": \"ap-northeast-1\"\n }\n },\n \"configurations\": [\n {\n \"role\": \"web\",\n \"flag\": \"Web01\",\n \"provision\": {\n \"image\": \"${computed}\", \"instance_type\": \"m3.medium\",\n \"instance_count\": 2,\n \"keypair\": true,\n }\n }\n ]\n }"
]
}
Response Body
HTTP/1.1 202 Accepted
{
"status": "success",
"source":{
"version": "2017-03-03",
"label": "template version label #1",
"description": "This template creates a sample stack with EC2 instance on AWS",
"vendor": {
"aws": {
"cred": "AKIAJ...DZLA",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "Web01",
"provision": {
"image": "${computed}",
"instance_type": "t2.micro",
"volume_type": "${computed}",
"instance_count": 1,
"keypair": true
}
}
]
},
"target": {
"version": "2017-03-03",
"label": "template version label #2",
"description": "This template creates a sample stack with EC2 instance on AWS",
"vendor": {
"aws": {
"cred": "AKIAJ...DZLA",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "Web01",
"provision": {
"image": "${computed}",
"instance_type": "m3.medium",
"instance_count": 2,
"keypair": true
}
}
]
},
"diff": {
"new": [],
"removed": {
"configurations\/1\/provision\/volume_type": "${computed}"
},
"edited": {
"label": {
"oldvalue": "template version label #1",
"newvalue": "template version label #2"
},
"configurations\/provision\/instance_type": {
"oldvalue": "t2.micro",
"newvalue": "m3.medium"
},
"configurations\/provision\/instance_count": {
"oldvalue": 1,
"newvalue": 2
}
}
}
}
List Mobingi Alm template versions
GET
/v3/alm/template
Parameters | Type | Required | Detail |
stack_id | string | Yes | The unique id returned when applying the template |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200 OK
[
{
"version_id": "1kk2HiGLxF1fThVLJvC0h6fd5z3QWOiM",
"latest": true,
"last_modified": "2017-08-25T10:40:29.000Z",
"size": "2963"
},
{
"version_id": "gCn2JuPhndwxMZuodOER0yyxM8jZB6Vn",
"latest": false,
"last_modified": "2017-08-25T10:20:38.000Z",
"size": "211"
},
{
"version_id": "98O0jK5CQk8gLi14S2SLU8z3JIo3.JPx",
"latest": false,
"last_modified": "2017-08-25T08:48:12.000Z",
"size": "2940"
}
]
Describes the template body of a specific version.
GET
/v3/alm/template/{stack_id}
Parameters | Type | Required | Detail |
version_id | string | No | The id of the template version associated with the stack. If empty or "latest" provided, the most updated template version is returned |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200 OK
{
"version": "2017-03-03",
"label": "template version label #2",
"description": "This template creates a sample stack with EC2 instance on AWS",
"vendor": {
"aws": {
"cred": "AKIAJ...DZLA",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "Web01",
"provision": {
"image": "${computed}",
"instance_type": "m3.medium",
"instance_count": 2,
"keypair": true
}
}
]
}
List all stacks running under current organization account.
GET
/v3/alm/stack
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200 OK
[
{
"auth_token": "zQT8zJ37o9iZDIAFOVOoZzLCu0nR",
"user_id": "5447820c870e1",
"configuration": {
"version": "2017-03-03",
"label": "template version label #2",
"description": "This template creates a sample stack with EC2 instance on AWS",
"vendor": {
"aws": {
"cred": "AKIAJ...DZLA",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "Web01",
"provision": {
"image": "${computed}",
"instance_type": "m3.medium",
"instance_count": 2,
"keypair": true
}
}
]
},
"nickname": "clean sail demonstrate",
"create_time": "2017-08-26T19:31:25+09:00",
"username": "thompson",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"stack_status": "CREATE_COMPLETE",
"version_id": "1kk2HiGLxF1fThVLJvC0h6fd5z3QWOiM"
},
{
..
}
]
Describes the stack detail information.
GET
/v3/alm/stack/{stack_id}
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200 OK
{
"auth_token": "zQT8zJ37o9iZDIAFOVOoZzLCu0nR",
"user_id": "5447820c870e1",
"configuration": {
"version": "2017-03-03",
"label": "template version label #2",
"description": "This template creates a sample stack with EC2 instance on AWS",
"vendor": {
"aws": {
"cred": "AKIAJ...DZLA",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "Web01",
"provision": {
"image": "${computed}",
"instance_type": "m3.medium",
"instance_count": 2,
"keypair": true
}
}
]
},
"nickname": "clean sail demonstrate",
"create_time": "2017-08-26T19:31:25+09:00",
"username": "thompson",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"stack_status": "CREATE_COMPLETE",
"version_id": "1kk2HiGLxF1fThVLJvC0h6fd5z3QWOiM"
}
Describes the stack container detail information.
GET
/v3/alm/container/{container_id}
Parameters | Type | Required | Detail |
container_id | string | Yes | The id of the container associated with the stack. |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200 OK
{
"container_id": "i-0c32760b85f60aca7",
"agent_id": "e8b15d4f-f027-4c65-80f5-ded5858cd213",
"update_time": "1510544332",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"instance_id": "i-0c32760b85f60aca7",
"status": "complete"
}
List the stack containers filtering by {stack_id} or {instance_id}
GET
/v3/alm/container
Parameters | Type | Required | Detail |
stack_id | string | conditional | If both {stack_id} and {instance_id} are presents, {stack_id} will be ignored. |
instance_id | string | conditional | The id of the instance. |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200 OK
[
{
"agent_id": "4e9a6b9a-2a1f-454e-be5e-847573b44f10",
"container_id": "i-049a49d8881adf122",
"update_time": "1510564361",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"instance_id": "i-049a49d8881adf122",
"status": "complete"
},
{
"agent_id": "09afaa82-0a71-4680-a68a-91badaaaa134",
"container_id": "i-0363778be4d1bc81f",
"update_time": "1510564297",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"instance_id": "i-0363778be4d1bc81f",
"status": "complete"
},
{
"agent_id": "9c075f08-81c9-4147-8974-f543640dccf6",
"container_id": "i-02f27fcae984fc946",
"update_time": "1510564348",
"stack_id": "mo-5447820c870e1-ZgNTSRM8K-tk",
"instance_id": "i-02f27fcae984fc946",
"status": "complete"
}
]
Creates a new role. (Note: This endpoint can only be accessed by master account)
POST
/v3/role
Parameters | Type | Required | Detail |
name | string | Yes | Name of Mobingi Role |
scope | string | Yes | Mobingi Role in json string format |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/x-www-form-urlencoded
Request body
{
"name": "sample name",
"scope": "{ _role scope body_ }"
Response Body
HTTP/1.1 200
{
"status": "success",
"role_id": "morole-544****0e1-ZgNTSRM8K-tk"
}
Updates an existing role.
Note: This endpoint is denied to all users except master account, defined by default RBAC scope, and this scope cannot be overwritten.
PUT
/v3/role/{role_id}
Parameters | Type | Required | Detail |
name | string | Yes | Name of Mobingi Role |
scope | string | Yes | Mobingi Role in json string format |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/x-www-form-urlencoded
Request body
{
"name": "sample name",
"scope": "{ _role scope body_ }"
}
Response Body
HTTP/1.1 200
{
"status": "success",
"role_id": "morole-544****70e1-ZgNTSRM8K-tk"
}
Deletes an existing Role.
Note: This endpoint is denied to all users except master account, defined by default RBAC scope, and this scope cannot be overwritten.
DELETE
/v3/role/{role_id}
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200
{
"status": "success",
"role_id": "morole-544****0e1-ZgN****M8K-tk"
}
Lists all roles created under current account.
Note: This endpoint is denied to all users except master account, defined by default RBAC scope, and this scope cannot be overwritten.
GET
/v3/role
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200
[
{
"role_id": "morole-544****0e1-ZgNT***M8K-tk",
"user_id": "544****0e1",
"name": "sample name",
"scope": "{ _role scope body_ }",
"create_time": "",
"update_time": ""
},
{
....
}
]
- 1.Describe roles attached to the userLists all roles attached to a user specified by username.Note: This endpoint is denied to all users except master account, defined by default RBAC scope, and this scope cannot be overwritten.GET
/v3/user/{username}/role
Request Header
```bash
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200
[
{
"role_id": "morole-544****0e1-ZgNT***M8K-tk",
"user_id": "544****0e1",
"name": "sample name",
"scope": "{ _role scope body_ }",
"create_time": "",
"update_time": ""
},
{
....
}
]
1. **Describe Current Logged In User Roles**
```text
Lists all roles attached to current user.
_This endpoint is requested by users instead of master account, and returns the roles that attached to them._
<div class="callout callout-info">
GET <code>/v3/user/role</code>
</div>
Request Header
```bash
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200
[
{
"user_role_id": "mour-5447****0e1-TEW****dsIE-tk",
"role_id": "morole-5447****0e1-ZgN****RM8K-tk",
"user": "{ user_id: 5447****0e1, username: tes***est }",
"scope": "{ _role scope body_ }",
"create_time": "",
"update_time": ""
},
{
....
}
]
### Attach Role to User {#rbac-attach-user-role}
Attach an existing role to a user.
**Note:** _This endpoint is denied to all users except master account, defined by_ [_default RBAC scope_](https://learn.mobingi.com/enterprise/rbac-reference#default-roles)_, and this scope cannot be overwritten._
POST `/v3/user/role`
| **Parameters** | **Type** | **Required** | **Detail** |
| --- | :---: | ---: | :--- |
| username | string | Yes | target user |
| role\_id | string | Yes | Mobingi Role Id |
Request Header
```bash
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/x-www-form-urlencoded
Request body
{
"username": "testtest",
"role_id": "morole-544****0e1-ZgN****8K-tk"
}
Response Body
HTTP/1.1 200
{
"status": "success",
"user_role_id": "mour-544****0e1-ZgN****M8K-tk"
}
Reattach a role to user.
Note: This endpoint is denied to all users except master account, defined by default RBAC scope, and this scope cannot be overwritten.
PUT
/v3/user/role/{role_id}
Parameters | Type | Required | Detail |
username | string | Yes | target user |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/x-www-form-urlencoded
Request body
{
"username": "testtest"
}
Response Body
HTTP/1.1 200
{
"status": "success",
"role_id": "morole-5447****0e1-ZgN***M8K-tk"
}
Deatch a role from user.
Note: This endpoint is denied to all users except master account, defined by default RBAC scope, and this scope cannot be overwritten.
DELETE
/v3/user/role/{role_id}
Parameters | Type | Required | Detail |
username | string | Yes | target user |
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Request body
{
"username": "testtest"
}
Response Body
HTTP/1.1 200
{
"status": "success",
"role_id": "morole-5447****0e1-ZgN****M8K-tk"
}
Describes the role scope body.
GET
/v3/role/templates
Request Header
Authorization: Bearer eyJ0eXAiOiJQiL...CJhbGciOMeXzQfME
Content-Type: application/json
Response Body
HTTP/1.1 200
[
{
"id": "admin",
"name": "Management Role",
"scope": {
"version": "2017-05-05",
"Statement": [
{
"Effect": "Allow",
"Action": [