Tenants
API Calls
| Name | Description | Shortcut |
|---|---|---|
| GET: List Tenants | This method can be used to retrieve a list of current tenants | Description |
| GET: List a specific tenant | This method can be used to retrieve a specific metric tenant based on its id. | Description |
| POST: Create a new tenant | This method can be used to create a new tenant | Description |
| PUT: Update a tenant | This method can be used to update information on an existing tenant | Description |
| PUT: Update a tenant's info | This method can be used to update just the info part on an existing tenant | Description |
| PUT: Update a tenant's db conf | This method can be used to update just the db conf part on an existing tenant | Description |
| PUT: Update a tenant's topology | This method can be used to update just the topology part on an existing tenant | Description |
| PUT: Update a tenant's node info | This method can be used to update just the node info part on an existing tenant | Description |
| DELETE: Delete a tenant | This method can be used to delete an existing tenant | Description |
| GET: Get a tenant's arg engine status | This method can be used to get status for a specific tenant | Description |
| PUT: Update a tenant's engine status | This method can be used to update argo engine status information for a specific tenant | Description |
| GET: Get a tenant's readiness | This method can be used to get the readiness for a specific tenant | Description |
| PUT: Update a tenant's readiness | This method can be used to update readiness information (checks) for a specific tenant | Description |
| POST: Create tenant user | This method can be used to add a new user to existing tenant | Description |
| PUT: Update tenant user | This method can be used to update information on an existing user of a specific tenant | Description |
| POST: Renew User's API key | This method can be used to renew user's api key | Description |
| DELETE: Delete Users | This method can be used to remove and delete a user from a specific tenant | Description |
| GET: List Users | This method can be used to list all users that belong to a specific tenant | Description |
[GET]: List Tenants
This method can be used to retrieve a list of current tenants
Note: This method restricts tenant database and user information when the x-api-key token holder is a restricted super admin Note: This method shows only tenants that have admin ui users when the x-api-key token holder is a super_admin_ui
Input
GET /admin/tenants
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body for super admin users
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50b",
"info": {
"name": "Tenant1",
"email": "email1@tenant1.com",
"description" : "a simple tenant",
"image" : "url to image",
"website": "www.tenant1.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"db_conf": [
{
"store": "ar",
"server": "a.mongodb.org",
"port": 27017,
"database": "ar_db",
"username": "admin",
"password": "3NCRYPT3D"
},
{
"store": "status",
"server": "b.mongodb.org",
"port": 27017,
"database": "status_db",
"username": "admin",
"password": "3NCRYPT3D"
}
],
"topology": {
"type": "GOCDB",
"feed": "gocdb1.example.foo"
},
"users": [
{
"id": "acb74194-553a-11e9-8647-d663bd873d93",
"name": "cap",
"email": "cap@email.com",
"api_key": "C4PK3Y",
"roles": [
"admin"
]
},
{
"id": "acb74194-553a-11e9-8647-d663bd873d94",
"name": "thor",
"email": "thor@email.com",
"api_key": "TH0RK3Y",
"roles": [
"viewer"
]
}
]
},
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50c",
"info": {
"name": "tenant2",
"email": "tenant2@email.com",
"description" : "a simple tenant",
"image" : "url to image",
"website": "www.tenant2.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"db_conf": [
{
"store": "ar",
"server": "a.mongodb.org",
"port": 27017,
"database": "ar_db",
"username": "admin",
"password": "3NCRYPT3D"
},
{
"store": "status",
"server": "b.mongodb.org",
"port": 27017,
"database": "status_db",
"username": "admin",
"password": "3NCRYPT3D"
}
],
"topology": {
"type": "GOCDB",
"feed": "gocdb2.example.foo"
},
"users": [
{
"id": "acb74194-553a-11e9-8647-d663bd873d95",
"name": "groot",
"email": "groot@email.com",
"api_key": "GR00TK3Y",
"roles": [
"admin", "admin_ui"
]
},
{
"id": "acb74194-553a-11e9-8647-d663bd873d97",
"name": "starlord",
"email": "starlord@email.com",
"api_key": "ST4RL0RDK3Y",
"roles": [
"admin"
]
}
]
}
]
}
Response body for restricted super admin users:
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50b",
"info": {
"name": "Tenant1",
"email": "email1@tenant1.com",
"description": "a simple tenant",
"image": "url to image",
"website": "www.tenant1.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"topology": {
"type": "GOCDB",
"feed": "gocdb1.example.foo"
}
},
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50c",
"info": {
"name": "tenant2",
"email": "tenant2@email.com",
"description": "a simple tenant",
"image": "url to image",
"website": "www.tenant2.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"topology": {
"type": "GOCDB",
"feed": "gocdb2.example.foo"
}
}
]
}
Response body for super_admin_ui users:
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50c",
"info": {
"name": "tenant2",
"email": "tenant2@email.com",
"description": "a simple tenant",
"image": "url to image",
"website": "www.tenant2.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"topology": {
"type": "GOCDB",
"feed": "gocdb2.example.foo"
},
"users": [
{
"id": "acb74194-553a-11e9-8647-d663bd873d95",
"name": "groot",
"email": "groot@email.com",
"api_key": "GR00TK3Y",
"roles": ["admin", "admin_ui"]
}
]
}
]
}
[GET]: List A Specific tenant
This method can be used to retrieve specific tenant based on its id
Note: This method shows only tenants that have admin ui users when the x-api-key token holder is a super_admin_ui
Input
GET /admin/tenants/{ID}
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50c",
"info": {
"name": "tenant2",
"email": "tenant2@email.com",
"description": "a simple tenant",
"image": "url to image",
"website": "www.tenant2.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"db_conf": [
{
"store": "ar",
"server": "a.mongodb.org",
"port": 27017,
"database": "ar_db",
"username": "admin",
"password": "3NCRYPT3D"
},
{
"store": "status",
"server": "b.mongodb.org",
"port": 27017,
"database": "status_db",
"username": "admin",
"password": "3NCRYPT3D"
}
],
"topology": {
"type": "GOCDB",
"feed": "gocdb1.example.foo"
},
"users": [
{
"id": "acb74194-553a-11e9-8647-d663bd873d95",
"name": "groot",
"email": "groot@email.com",
"api_key": "GR00TK3Y",
"roles": ["admin", "admin_ui"]
},
{
"id": "acb74194-553a-11e9-8647-d663bd873d97",
"name": "starlord",
"email": "starlord@email.com",
"api_key": "ST4RL0RDK3Y",
"roles": ["admin"]
}
]
}
]
}
Response body for super_admin_ui users:
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50c",
"info": {
"name": "tenant2",
"email": "tenant2@email.com",
"description": "a simple tenant",
"image": "url to image",
"website": "www.tenant2.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"topology": {
"type": "GOCDB",
"feed": "gocdb2.example.foo"
},
"users": [
{
"id": "acb74194-553a-11e9-8647-d663bd873d95",
"name": "groot",
"email": "groot@email.com",
"api_key": "GR00TK3Y",
"roles": ["admin", "admin_ui"]
}
]
}
]
}
[GET]: List A Specific User
This method can be used to retrieve specific user based on its id
Input
GET /admin/users:byID/{ID}
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "acb74194-553a-11e9-8647-d663bd873d93",
"name": "cap",
"email": "cap@email.com",
"api_key": "C4PK3Y",
"roles": ["admin"]
}
]
}
NOTE
Specifying the filter, export=flat, it will return a flat user json object
{
"id": "acb74194-553a-11e9-8647-d663bd873d93",
"name": "cap",
"email": "cap@email.com",
"api_key": "C4PK3Y",
"roles": ["admin"]
}
[POST]: Create a new Tenant
This method can be used to insert a new tenant
Input
POST /admin/tenants
Request headers
x-api-key: shared_key_value
Accept: application/json
POST BODY
{
"info": {
"name": "Tenant1",
"email": "email1@tenant1.com",
"website": "www.tenant1.com",
"description": "a simple tenant",
"image": "url to image",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"db_conf": [
{
"store": "ar",
"server": "a.mongodb.org",
"port": 27017,
"database": "ar_db",
"username": "admin",
"password": "3NCRYPT3D"
},
{
"store": "status",
"server": "b.mongodb.org",
"port": 27017,
"database": "status_db",
"username": "admin",
"password": "3NCRYPT3D"
}
],
"topology": {
"type": "GOCDB",
"feed": "gocdb.example.foo"
},
"users": [
{
"name": "cap",
"email": "cap@email.com",
"api_key": "C4PK3Y",
"roles": ["admin"]
},
{
"name": "thor",
"email": "thor@email.com",
"api_key": "TH0RK3Y",
"roles": ["admin"]
}
]
}
Response
Headers: Status: 201 Created
Response body
Json Response
{
"status": {
"message": "Tenant was succesfully created",
"code": "201"
},
"data": {
"id": "{{ID}}",
"links": {
"self": "https:///api/v2/admin/tenants/{{ID}}"
}
}
}
[PUT]: Update an existing tenant
This method can be used to update the whole definition of an existing tenant
Input
PUT /admin/tenants/{ID}
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"info": {
"name": "Tenant1",
"email": "email1@tenant1.com",
"description": "a changed description",
"image": "a changed url to nwe image",
"website": "www.tenant1.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"db_conf": [
{
"store": "ar",
"server": "a.mongodb.org",
"port": 27017,
"database": "ar_db",
"username": "admin",
"password": "3NCRYPT3D"
},
{
"store": "status",
"server": "b.mongodb.org",
"port": 27017,
"database": "status_db",
"username": "admin",
"password": "3NCRYPT3D"
}
],
"topology": {
"type": "GOCDB",
"feed": "gocdb.example.foo"
},
"users": [
{
"name": "cap",
"email": "cap@email.com",
"api_key": "C4PK3Y",
"roles": ["admin"]
},
{
"name": "thor",
"email": "thor@email.com",
"api_key": "TH0RK3Y",
"roles": ["admin"]
}
]
}
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant successfully updated",
"code": "200"
}
}
[PUT]: Update only the info part of an existing tenant
This method can be used to update only the info part of an existing tenant
Input
PUT /admin/tenants/{ID}/info
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"info": {
"name": "Tenant1-updated",
"email": "email1@tenant1.com",
"description": "a changed description",
"image": "a changed url to nwe image",
"website": "www.tenant1-updated.com",
}
}
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant information successfully updated",
"code": "200"
}
}
[PUT]: Update only the db conf part of an existing tenant
This method can be used to update only the db conf part of an existing tenant
Input
PUT /admin/tenants/{ID}/db-conf
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"db_conf": [{
"store": "ar",
"server": "mongo-remote.foo",
"port": 27017,
"database":"argo_TENANT"
}]
}
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant database configuration successfully updated",
"code": "200"
}
}
[PUT]: Update only the node info part of an existing tenant
Some tenants can represent Nodes and hold optional node information in the nested json object named "node". This method can be used to update only the node info part of an existing tenant
Input
PUT /admin/tenants/{ID}/node
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"node": {
"id": "node-id",
"name": "node-namke",
}
}
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant node information successfully updated",
"code": "200"
}
}
[PUT]: Update only the topology part of an existing tenant
This method can be used to update only the topology part of an existing tenant
Input
PUT /admin/tenants/{ID}/topology
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"topology": {
"type": "csv",
"feed": "https://example.foo/path/to/csv",
}
}
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant topology configuration successfully updated",
"code": "200"
}
}
[DELETE]: Delete an existing tenant
This method can be used to delete an existing tenant
Input
DELETE /admin/tenants/{ID}
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant Successfully Deleted",
"code": "200"
}
}
[GET]: List A Specific tenant's argo-engine status
This method can be used to retrieve specific tenant's status based on its id
Input
GET /admin/tenants/{ID}/status
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "6ac7d684-1f8e-4a02-a502-720e8f11e50b",
"info": {
"name": "tenant1",
"email": "email1@tenant1.com",
"description": "a simple tenant",
"image": "url to image",
"website": "www.tenant1.com",
"created": "2015-10-20 02:08:04",
"updated": "2015-10-20 02:08:04"
},
"status": {
"total_status": false,
"ams": {
"metric_data": {
"ingestion": false,
"publishing": false,
"status_streaming": false,
"messages_arrived": 0
},
"sync_data": {
"ingestion": false,
"publishing": false,
"status_streaming": false,
"messages_arrived": 0
}
},
"hdfs": {
"metric_data": false
},
"engine_config": false,
"last_check": ""
}
}
]
}
[PUT]: Update argo-engine status information on an existing tenant
This method can be used to update status information on an existing tenant
Input
PUT /admin/tenants/{ID}/status
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"ams": {
"metric_data": {
"ingestion": true,
"publishing": true,
"status_streaming": false,
"messages_arrived": 100
},
"sync_data": {
"ingestion": true,
"publishing": false,
"status_streaming": true,
"messages_arrived": 200
}
},
"hdfs": {
"metric_data": true,
"sync_data": {
"Critical": {
"downtimes": true,
"group_endpoints": true,
"blank_recompuation": true,
"group_groups": true,
"weights": true,
"operations_profile": true,
"metric_profile": true,
"aggregation_profile": true
}
}
},
"engine_config": true,
"last_check": "2018-08-10T12:32:45Z"
}
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant successfully updated",
"code": "200"
}
}
[GET]: List A Specific tenant's readiness
This method can be used to retrieve specific tenant's status based on its id
Input
GET /admin/tenants/{ID}/ready
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": {
"id": "3f9e3380-43bc-4fcd-b4c4-d0331b34e1a3",
"name": "TENANT-FOO",
"ready": false,
"data": {
"ready": true,
"message": "AMS has data. Hdfs has data"
},
"topology": {
"ready": true,
"message": "Groups, endpoints and service-types set"
},
"reports": {
"ready": false,
"message": "Tenant doesn't have reports"
},
"last_check": "2026-02-06T00:00:00Z"
}
}
[PUT]: Update argo-engine readines information on an existing tenant
This method can be used to update readiness information (checks) on an existing tenant
Input
PUT /admin/tenants/{ID}/ready
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"data": {
"ready": true,
"message": "AMS has data. Hdfs has data"
},
"topology": {
"ready": true,
"message": "Groups, endpoints and service-types set"
},
"reports": {
"ready": true,
"message": "Tenant has at least one report"
},
"last_check": "2026-02-06T01:00:00Z"
}
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Tenant successfully updated",
"code": "200"
}
}
[POST]: Create new user
This method can be used to create a new user on existing tenant
Input
POST /admin/tenants/{ID}/users
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"name":"new_user",
"email":"new_user@email.com",
"roles": [
"admin"
]
}`
Response
Headers: Status: 201 OK
Response body
Json Response
{
"status": {
"message": "User was successfully created",
"code": "201"
},
"data": {
"id": "1cb883eb-8b40-428d-bce6-8ec23a9f3ca8",
"links": {
"self": "https:///api/v2/admin/tenants/6ac7d684-1f8e-4a02-a502-720e8f11e50b/users/1cb883eb-8b40-428d-bce6-8ec23a9f3ca8"
}
}
}
Note: If a user account is meant for a specific component integration then an optional field "component" can be specified when creating the user account such as in the following example:
{
"name":"poem_viwer_account",
"email":"ops@email.foo",
"roles": [
"viewer"
],
"component": "poem-viewer"
}`
[PUT]: Update user
This method can be used to update an existing user in a specific tenant
Input
PUT /admin/tenants/{ID}/users/{USER_ID}
Request headers
x-api-key: shared_key_value
Accept: application/json
PUT BODY
{
"name":"new_user",
"email":"new_user@email.com",
"roles": [
"admin"
]
}`
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "User succesfully updated",
"code": "200"
}
}
Note: If a user account is meant for a specific component integration then an optional field "component" can be specified when updating the user account such as in the following example:
{
"name":"poem_viwer_account",
"email":"ops@email.foo",
"roles": [
"viewer"
],
"component": "poem-viewer"
}`
[POST]: Renew User API key
This method can be used to renew a user's api access key
Input
POST /admin/tenants/{ID}/users/{USER_ID}/renew_api_key
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "User api key succesfully renewed",
"code": "200"
},
"data": {
"api_key": "s3cr3tT0k3n"
}
}
[DELETE]: Delete User
This method can be used to remove and delete a user from a tenant
Input
DELETE /admin/tenants/{ID}/users/{USER_ID}
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "User succesfully deleted",
"code": "200"
}
}
[GET]: List all available users that belong to a specific tenant
This method can be used to list all available users that are members of a specific tenant
Input
GET /admin/tenants/{ID}/users
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "acb74194-553a-11e9-8647-d663bd873d93",
"name": "user_a",
"email": "user_a@email.com",
"api_key": "user_a_key",
"roles": [
"admin",
"admin_ui"
]
},
{
"id": "acb74432-553a-11e9-8647-d663bd873d93",
"name": "user_b",
"email": "user_b@email.com",
"api_key": "user_b_key",
"roles": [
"admin"
]
}
]
}
[GET]: Get user
This method can be used to get information on specific user of a specific tenant
Input
GET /admin/tenants/{ID}/users/{USER_ID}
Request headers
x-api-key: shared_key_value
Accept: application/json
Response
Headers: Status: 200 OK
Response body
Json Response
{
"status": {
"message": "Success",
"code": "200"
},
"data": [
{
"id": "acb74432-553a-11e9-8647-d663bd873d93",
"name": "user_a",
"email": "user_a@email.com",
"api_key": "user_a_key",
"roles": [
"admin"
]
}
]
}