Application Orchestrator Interfaces ============== The document is for the Application Orchestrator project, there are two parts of interfaces in the project. ### Get All Application Instances Retrieves application instances information ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instance_infos Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |tenant_id|tenant id|path|yes|Valid UUID|64| Example response: ``` 200 OK [ { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" } ] ``` ### Get Application Instance Retrieves application instance information ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instance_infos/{appInstance_id} Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |appInstance_id|application instance id|path|yes|Valid UUID|64| |tenant_id|tenant id|path|yes|Valid UUID|64| Example response: ``` 200 OK { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" } ``` ### Create AppInstance Creates App Instance ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instances Method: POST ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access token|header|yes|Jwt token| |appInstanceDescription|appInstanceDescription|RequestPart|yes|Valid UUID|64| |appName|appName|RequestPart|yes|Alphanumeric characters,special characters are hypen and underscore|128| |appPackageId|appPackageId|RequestPart|yes|Alphanumeric in lower case|64| |appId|appId|RequestPart|yes|Alphanumeric in lower case|64| |mecHost|mecHost|RequestPart |yes|Valid IP Address|15| |hwcapabilities|hardwareCapabilities|body|No|AlphaNumeric characters allowed|128| |tenant_id |tenant_id|path|yes|Valid UUID|64| Example request body: ``` { "appInstanceDescription": "string", "appName": "string", "appPackageId": "string", "appId": "string", "hwCapabilities": [ "string" ], "mecHost": "string" } ``` Example response: ``` 202 Request Accepted [ { "app_instance_id":"string" } ] ``` ### Get App Instance Information Retrieves application instance information ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/{app_instance_id} Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access token|header|yes|Jwt token| |app_instance_id|application instance id|header|yes|Valid UUID|64| |tenant_id|tenant id|path|yes|Valid UUID|64| Example response: ``` 200 OK { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" } ``` ### Instantiate Application Instantiate application instance. ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/{app_instance_id} Method: POST ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token |access token|header |yes|Jwt token| |app_instance_id |application instance id|path |yes|Valid UUID|64| |tenant_id|tenant id|path |yes|Valid UUID|64| |parameters|key value pair|body |No|Valid String|| Example request body: ``` { "parameters": { "mepIp" : "mep ip", "mepPort" : "mep port", "ak" : "ak", "sk" : "sk" , "..." : "..." } } ``` Example response: ``` 202 Request Accepted { "response": {} } ``` ### Delete Application Instance Terminates application instance. ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/{app_instance_id} Method: DELETE ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token |access_token|header |yes|Jwt token| |app_instance_id |application instance id|path |yes|Valid UUID|64| |tenant_id |tenant id|path |yes|Valid UUID|64| Example response: ``` 202 Request Accepted { "response": {} } ``` ### Get Query Kpi Retrieves edge host performance statistics ``` Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/kpi Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access token|header|yes|Jwt token| |host_ip|edge host ip|path|yes|Valid IP|15| |tenant_id|tenant_id|path|yes|Valid UUID|64| Example response: ``` 200 OK [ "response": "{ "pods ":[{ "podstatus":"String"," "podname":"String", "containers":[{ "containername": "String", "metricsusage":{ "cpuusage" : "String", "memusage" : "String", "diskusage" : "String"}}]}" ] ``` ### Get Mep Capabilities Retrieves edge host performance statistics ``` Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/mep_capabilities Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access token|header|yes|Jwt token| |host_ip|edge host ip|path|yes|Valid IP|15| |tenant_id|tenant_id|path|yes|Valid UUID|64| Example response: ``` 200 OK [ { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" }, { "applicationInstanceId": "string" }, ] }, { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" } ] } ] ``` ### Get Mep Capability Retrieves edge host performance statistics based on capability id ``` Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/mep_capabilities/{capability_id} Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access token|header|yes|Jwt token| |host_ip|edge host ip|path|yes|Valid IP|15| |tenant_id|tenant_id|path|yes|Valid UUID|64| |capability_id|capability_id|path|yes|Alphanumeric characters,special characters are hypen and underscore|128| Example response: ``` 200 OK { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" }, { "applicationInstanceId": "string" }, ] } ``` ### Create Batch Batch create application instances. ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/batch_create Method: POST ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token |access token|header |yes|Jwt token| |tenant_id|tenant id|path |yes|Valid UUID|64| |appName|appName|RequestPart|yes|Alphanumeric characters,special characters are hypen and underscore|128| |appInstanceDescription|appInstanceDescription|RequestPart|yes|Valid UUID|64| |appPackageId|appPackageId|RequestPart|yes|Alphanumeric in lower case|64| |appId|appId|RequestPart|yes|Alphanumeric in lower case|64| |mecHost|mecHost|RequestPart |yes|Valid IP Address|15| |hwcapabilities|hardwareCapabilities|body|No|AlphaNumeric characters allowed|128| Example request body: ``` { "appPackageId": "string", "appName": "string", "appInstanceDescription": "string", "appId": "string", "hwCapabilities": [ "string" ], "mecHost": [ "string" ] } ``` Example response: ``` 202 Accepted { "response": [ { "applicationInstanceId": "string", "host": "string", "status": "string" }, { "applicationInstanceId": "string", "host": "string", "status": "string" } ] } ``` ### Batch instantiate Batch instantiate application instances. ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/batch_instantiate Method: POST ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token |access token|header |yes|Jwt token| |tenant_id|tenant id|path |yes|Valid UUID|64| |instantiationParameters|array of key value pair|body |No|Valid string|| Example request body: ``` { "instantiationParameters": [ { "appInstanceId": "d2134a3b-85e7-4bf6-b030-14c71219188a", "parameters": { "mepIp" : "mep ip", "mepPort" : "mep port", "ak" : "ak", "sk" : "sk", "..." : "..." } } ] } ``` Example response: ``` 202 Accepted { "response": [ { "applicationInstanceId": "string", "host": "string", "status": "string" }, { "applicationInstanceId": "string", "host": "string", "status": "string" } ] } ``` ### Batch terminate Batch terminates application instances. ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/batch_terminate Method: POST ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token |access token|header |yes|Jwt token| |tenant_id|tenant id|path |yes|Valid UUID|64| |appInstanceIds|application instance id|body|yes|Valid UUID|64| Example request body: ``` { "appInstanceIds" : ["string","string"] } ``` Example response: ``` 202 Accepted { "response": [ { "applicationInstanceId": "string", "host": "string", "status": "string" }, { "applicationInstanceId": "string", "host": "string", "status": "string" } ] } ``` ### Batch Query Batch Query information ``` Resource URI: /appo/v1/tenants/{tenant_id}/app_instance_infos/{appInstance_ids} Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |appInstance_ids|application instance id|header|yes|Valid UUID|64| |tenant_id|tenant id|path|yes|Valid UUID|64| Example response: ``` 200 OK { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" } ``` ### Queries liveness & readiness Retrieves data for liveness & readiness ``` Resource URI: /appo/v1/health Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token |access token|header |yes|Jwt token| Example response: ``` 200 OK ``` ### Create AppRule Config Configures the app rule ``` Resource URI: /appo/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: POST ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |appInstance_id|application instance id|path|yes|Valid UUID|64| |tenant_id|tenant id|path|yes|Valid UUID|64| |appInstanceIds|application instance id|path|yes|Valid UUID|64| Example request body: ``` "appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "action": "DROP", "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "tag": [ "string" ], "srcTunnelAddress": [ "string" ], "dstTunnelAddress": [ "string" ], "srcTunnelPort": [ "string" ], "dstTunnelPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "dstInterface": [ { "interfaceType": "string", "tunnelInfo": { "tunnelType": "string", "tunnelDstAddress": "string", "tunnelSrcAddress": "string", "tunnelSpecificData": "string" }, "srcMacAddress": "string", "dstMacAddress": "string", "dstIpAddress": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, } ], "appSupportMp1": bool, "appName": "string" ``` Example response: ``` 200 OK { "response": { "apprule_task_id": "string" } } ``` ### Update AppRule Config Update the app rule ``` Resource URI: /appo/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: PUT ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |appInstance_id|application instance id|path|yes|Valid UUID|64| |tenant_id|tenant id|path|yes|Valid UUID|64| |appInstanceIds|application instance id|path|yes|Valid UUID|64| Example request body: ``` "appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "action": "DROP", "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "tag": [ "string" ], "srcTunnelAddress": [ "string" ], "dstTunnelAddress": [ "string" ], "srcTunnelPort": [ "string" ], "dstTunnelPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "dstInterface": [ { "interfaceType": "string", "tunnelInfo": { "tunnelType": "string", "tunnelDstAddress": "string", "tunnelSrcAddress": "string", "tunnelSpecificData": "string" }, "srcMacAddress": "string", "dstMacAddress": "string", "dstIpAddress": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, } ], "appSupportMp1": bool, "appName": "string" ``` Example response: ``` 202 OK { "response": { "apprule_task_id": "string" } } ``` ### Delete AppRule Config Deletes the existing app rule ``` Resource URI: /appo/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: DELETE ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |appInstance_id|application instance id|path|yes|Valid UUID|64| |tenant_id|tenant id|path|yes|Valid UUID|64| |appInstanceIds|application instance id|path|yes|Valid UUID|64| Example request body: ``` { "appTrafficRule": ["string", "string"], "appDNSRule": ["string", "string"] } ``` Example response: ``` 202 Accepted { "response": { "apprule_task_id": "string" } } ``` ### Get AppRule Config Status Queries app rule config status ``` Resource URI: /appo/v1/tenants/{{tenant-id}}/apprule_task_infos/{apprule_task_id} Method: GET ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |appInstance_id|application instance id|path|yes|Valid UUID|64| |tenant_id|tenant id|path|yes|Valid UUID|64| |appInstanceIds|application instance id|path|yes|Valid UUID|64| Example Response body: ``` 200 OK { "response": { "taskId": "string", "appInstanceId": "string", "detailed": "string", "configResult": "string" } } ``` ### Synchronizes application instance info from edge Synchronizes application instance info from all edge ``` Resource URI: /appo/v1/tenants/{{tenant-id}}/app_instance_infos/sync Method: POST ``` |Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access_token|header|yes|Jwt token| |tenant_id|tenant id|path|yes|Valid UUID|64| Example Response body: ``` 200 OK { "appInstanceUpdatedRecs": [ { "appInstanceId": "e921ce54-82c8-4532-b5c6-8516cf75f7a6", "createTime": "2021-03-12T07:59:55.695956Z", "mecHost": "119.8.53.3", "deployType": "helm", "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a6", "appPackageId": "", "appName": "", "origin": "mepm", "syncStatus": false } ] } ``` ### APPO Open Api Swagger * Please refer [APPO_OPEN_API](https://gitee.com/edgegallery/docs/blob/master/Projects/MECM/MECM_APIs/appo-swagger-openapi.yaml)