Welcome to EdgeGallery documentation!

The EdgeGallery community focuses on 5G edge computing scenarios. It builds the basic framework of MEC edge resources, applications, security and management and de facto standards for open network services through open source collaboration. Meanwhile, it realizes interconnection within the public cloud. On the basis of being compatible with the heterogeneous and differentiated edge infrastructure, a unified MEC application ecosystem is built.

Getting Started

EdgeGallery Overview

Developer Platform


App Store


MEC Management Platform


Application Testing and Certification Platform


Edge Node Management Platform


APP Development Process


Demo Introduction

The demo provides the steps for Edge Application Development in EdgeGallery Developer Platform, using EdgeGallery’s Positioning Service.

  • As a consumer service, the Positioning Service Application depends on “Face Recognition Service” of EdgeGallery Platform.

  • 定位服务应用作为服务供应者发布“定位服务”,对外提供生态API,其他服务可以消费“定位服务”

Introduction to Container Deployment Process on Developer Platform

Prepare for Development

  • Create a new project

  • Choose one of the platform capabilities to depend on. Select “service discovery”

Deployment Test

Step 1 Upload App Image

Step 2 Upload the yaml file

Step 3 Deploy and Test

App Release

Step 1 ATP test

Step 2 App release

Introduction to the deployment process of virtual machine on Developer Platform

Prepare for Development

Create a new project

Resource Allocation

Step 1 Basic Information

Step 2 Specification Settings

Step 3 Network Settings

Step 4 Other settings

Deployment Test

Step 1 Start to Deploy

After deployment, you can upload the code of the App and use the VNC function we provide for future operation and maintenance.

Step 2 Generate image

After the image is successfully generated, the image file can be downloaded.

App Release

Step 1 ATP test

Step 2 App release

Local Development

  • Download plug-in-BashSupport in dependency and import it to local IDE.

  • Run the plugin, which will automatically generate a sample code.

  • Code

  • Build the docker image

.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2019-2021 Huawei Technologies Co., Ltd.

Release Notes

EdgeGallery Introduction

EdgeGallery is a 5G MEC open source edge computing platform. It is an end-to-end solution for application and application developers. For APP applications, in addition to the basic MEP platform that supports application operations, it also provides an APP application management system (MEC Manager). , A minimalist management surface, including some functions of MEPM and MEAO), can perform end-to-end lifecycle management of applications, provide a tool chain for the migration of X86 applications to ARM, and support smooth cross-platform migration and tuning of applications. For application developers, it provides a complete application development IDE environment and integrated verification environment, and provides a one-stop development experience for application developers

Version: v1.5.1

  • Release Date: 2022-01-28

  • Image Version: v1.5.1

  • new version update

    • 功能增强

      • 支持ISO镜像实例化

      • 扩展系统镜像类型,支持Ubuntu、Centos、Windows、Debian等不同操作系统镜像的部署调测

      • 修复已知问题,提升界面功能稳定性

    • 界面优化

      • 优化应用孵化主流程界面,增加动态效果

      • 优化虚机应用部署时的参数配置

      • 优化AppStore中的应用同步三方系统功能

Version: v1.5.0

  • Release Date: 2022-01

  • Image Version: v1.5.0 New Open Source Repository List |Module|Name|Type|URL|Description| |———————– ——-|:————-:|——|——————- ————————–|———————- —————| |Common Service|common-service|Product Warehouse|https://gitee.com/edgegallery/common-service|Provides common services for EdgeGallery components| | 3rd Party System|3rd-party-system|Product warehouse|https://gitee.com/edgegallery/third-party-system|Unified management of external systems connected to EdgeGallery|”

Requirements/Release Planning Details

  • new version update

    • System Architecture Enhancements

      • overall abstractionEdgeGallery Docking relationship between southeast and northwest,Unified planning and management of the tripartite system(IncludeMEAO、mirror repository、Appstore、IaaS、test system)

      • Profile Management:CompleteDeveloper and MECMexistProfileShow the mapping with the internal model,Provides a unified northboundProfilewith data export

      • WASMFull runtime support

      • EdgeGalleryNorthbound interface support:Support northbound authenticationAPI;Support with third partiesIAMSystem Integration Solution,Form a set of standard unified certification system

      • supportproxyProxy Access DeploymentEdgeGallery

    • Management plane enhancement

      • EdgeGalleryVirtual Machine Scenario Enhancement:Support flexible definitionMECnetwork within a node;Supports flexible definition of application-attached networks;Supports configuring the network interface parameters of the application;Support flexible configuration when deploying applicationsflavor;Supports tenant isolation within edge nodes,EGuser withopenstackTenant binding

      • MECMResource management enhancements:1.Support resource management of edge nodes,Including resource information of edge nodes,Tenant information, etc.;2.supportAPPresource management,includeAPPList of virtual machines used,Corresponding virtual machine status and metrics;3.Application for supporting edge resources,Including virtual machine pull up,flavorset up,mirror(application)choose etc.;4.Supports the maintenance of edge virtual machine resources,including reboot,closure,boot,RemotelyVNCWait

    • Border autonomy-enterprisePortal

      • supportOpenstack/FSResource Statistics,Edge node inspection supports scheduled tasks,Enterprise self-service applicationIaaSresources and isolate

    • APPMonetization and commercialization process optimization

      • Continue to advance based on current designAPPMonetization process,Get through an end-to-end pricing,order,deploy,maintenance process

    • Integrated platform

      • Provide integrated service interface,Greatly optimized user experience

      • EdgeGalleryApplication Incubation Process Optimization,Front-end interface operation process optimization;Backend interface refactoring,Adaptation process optimization;ATPThe interface needs to adapt to the new process optimization;Container application process optimization

      • based onRTMPUltra-low latency push-pull streaming service:1. build based onWebRTCThe real-time audio and video platform is integrated intoEdgeGallery,supportVR/ARWaiting for the application to go online;2. provide openSDK,Support application online。

  • other

    • Complete the applet interpretation layer andMEPPlatform Architecture Transformation,The relevant deployment script is the same asworkloadMorphological synchronization complete

    • Secure encryption and decryptionSDK: againstEGSensitive data stored inside the platform,For example:Sandbox environment password,It is necessary to provide a safe and reliable encryption and decryption method for password storage and preservation,Secure encryption and decryption services

Bug Fixes

See EdgeGallery v1.2.0 Test Report

Security Notes

Fixed/Known Security Issues

see EdgeGallery v1.5.0 Security Test Report

Known Vulnerabilities in Used Modules

see EdgeGallery v1.5.0 Security Test Report

EdgeGallery v1.5.0 has the following vulnerabilities in third-party open source components that need to be fixed by users:

3rd party components

Version

CVE number

Involving modules

log4j

1.2.17

CVE-2019-17571

Appstore,MECM

netty-transport

4.1.36

CVE-2019-20444,CVE-2019-20445

Appstore

vertx-core

3.9.4

CVE-2019-17640

UserMgmt,Appstore,Developer,ATP

docker-java-core

3.2.10

CVE-2019-13139,CVE-2019-13509,CVE-2019-16884,CVE-2019-5736

Appstore,Developer,MECM

foundation-ssl

1.3.2

CVE-2004-0009

UserMgmt,Appstore,Developer,ATP

mybatis-spring

2.0.6

CVE-2020-26945

UserMgmt,Appstore,Developer,ATP

mybatis-spring-boot-starter

2.2.0

CVE-2020-26945

UserMgmt,Appstore,ATP,3rd-System

spring-security-core

5.3.10.RELEASE

CVE-2018-1258

UserMgmt,Developer,MECM

spring-security-web

5.3.8.RELEASE

CVE-2018-1258

UserMgmt,Developer,MECM

golang.org/x/net

v0.0.0-20200301022130

CVE-2021-33194

MEP


Version: v1.3.0

  • Release Date: 2021-10-12

  • Image Version: v1.3.0

List of new open source repositories

None

Requirements/Release Plan Detailed Description

  • Open Ability

    • Improved profile management of southbound IoT devices

      • Stream analyzers such as Kuiper and Flink are integrated on the edge to clean the data: such as shaping and formatting and reporting to the big data system. It can also be uploaded to the public cloud through the cloud edge interface for further data calculations, such as machine learning.. etc.

      • Integrate industry IoT protocol stacks such as Fledge, EdgeX, KubeEdge and other open source components to achieve typical protocol support such as MQTT and OPCUA

      • Support big data platform access, support standardized industrial platform configuration.. etc.

    • Large application transmission experience optimization

      • Increased efficiency of large package production: support for secondary large package production, virtual machine mirroring is reduced by 60% and application package production time is reduced by 3-4 hours.

      • Appstore supports fragmented download. MEAO can transfer application packages through fragmented download and upload mechanisms to improve the stability of application transmission

  • Community Lab Enhancement

    • ATP ability to automate testing capabilities enhanced

      • Enhanced security testing, including virus, port and vulnerability scanning, as well as performance testing such as delay

      • Add application enablement test, including service registration, update, offline and other indicator tests

      • Support test case flexible and definable use case parameter configuration

    • The interface is fully optimized and upgraded to enhance the user experience

      • The interfaces of Developer, AppStore, MECM and Edge Autonomous Platform are fully optimized and the interface style is unified, which comprehensively enhances the user experience

      • Edge autonomous interface adds user management functions

      • Developer platform adds” “unified interface components” “to help developers quickly participate in EdgeGallery community development

      • MECM platform increases the display of node resources and application resources

    • developer background

      • Add application package signature function

      • Add container image management function

      • Increase the virtual machine mirroring slimming function, automatically slimming for uploading mirroring and generated mirroring, and reducing the size of the mirroring by 60%

    • appstore background

      • Add APPD conversion function

    • MEP fully implements the ETSI interface specification

    • Edge AI capabilities are fully optimized

      • Integrate Tensorflow Lite, MindSpore Lite, enhance EdgeGallery AI related framework capabilities

    • Security enhancement

      • The access frequency limit is added to all traffic. Access will be prohibited if the access frequency reaches the limit for a short time, which greatly reduces the risk of DOS attacks and brute force cracking.

  • other

    • Application Innovation: Complete 130+ application integration and land 25+ innovation bases

    • Experience optimization: AppStore, Developer, [MECM](https://47.243. 125.138:30093/) All platform interfaces are fully upgraded and optimized

    • 1.4 feature preview

      • Use wasmEdge for AI capabilities to significantly slim down and customize optimization

      • E2E edge application self-service ordering and development integration optimization

      • Self-service enhancement of edge autonomous system

        • Support enterprise users to view resource usage, application operation and UPF network connection status

Bug Fixes

See EdgeGallery v1.2.0 Test Report

Security Notes

Fixed/Known Security Issues

See [EdgeGallery v1.3.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.3/EG%20v1 .3%20Security%20 Test%20Report.md)

Known Vulnerabilities in Used Modules

See [EdgeGallery v1.3.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.3/EG%20v1 .3%20Security%20 Test%20Report.md)

The following vulnerabilities in the third-party open source components of EdgeGallery v1.2.0 have to be fixed by users:

User-mgmt

Component

Version

CVE

vertx-core

3.9.4

CVE-2019-17640

foundation-ssl

1.3.2

CVE-2004-0009 CVE-2021-21501

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.2.0

CVE-2020-26945

spring-core

5.2.8.RELEASE

CVE-2021-22118

spring-security-core

5.3.10.RELEASE

CVE-2018-1258

spring-security-core

5.3.8.RELEASE

CVE-2018-1258

tomcat-embed-core

9.0.44

CVE-2021-30639

Appstore

Component

Version

CVE

log4j

1.2.17

CVE-2019-17571

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

docker-java-core

3.2.10

CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736

foundation-ssl

1.3.2

CVE-2004-0009 CVE-2021-21501

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.2.0

CVE-2020-26945

spring-jdbc

5.1.8.RELEASE

CVE-2020-5398

spring-security-core

5.1.5.RELEASE

CVE-2018-1258

Developer

Component

Version

CVE

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

swagger-codegen-cli

3.0.21

CVE-2018-8088 CVE-2016-6199 CVE-2019-15052 CVE-2020-25649 CVE-2019-10086 CVE-2017-1000207 CVE-2017-1000208 CVE-2017-18640 CVE-2020-11979 CVE-2021-29428

commons-compress

1.19

CVE-2021-35515 CVE-2021-35516 CVE-2021-35517 CVE-2021-36090

docker-java-core

3.2.10

CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736

foundation-ssl

1.3.2

CVE-2004-0009 CVE-2021-21501

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.2.0

CVE-2020-26945

sprint-jdbc

5.2.8.RELEASE

CVE-2021-22118

spring-security-core

5.3.10.RELEASE

CVE-2018-1258

tomcat-embed-core

9.0.44

CVE-2021-30639

MECM

Component

Version

CVE

bcprov-jdk15on-1.56.jar

1.56

CVE-2018-1000613 CVE-2018-1000180

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

log4j

1.2.17

CVE-2019-17571

vertx-core

3.6.3

CVE-2019-17640

foundation-ssl

1.3.0

CVE-2004-0009

hibernate-core

5.3.10.Final

CVE-2020-25638

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

spring-security-core

5.3.8.RELEASE

CVE-2018-1258

spring-tx

5.1.8.RELEASE

CVE-2020-5398

tomcat-embed-core

9.0.21

CVE-2020-1938 CVE-2019-12418 CVE-2019-17563 CVE-2020-11996 CVE-2020-13934 CVE-2020-13935 CVE-2020-17527 CVE-2020-8022 CVE-2020-9484 CVE-2021-25122 CVE-2021-25329

jackson-databind

2.9.9

CVE-2019-14379 CVE-2019-14540 CVE-2019-14892 CVE-2019-14893 CVE-2019-16335 CVE-2019-16942 CVE-2019-16943 CVE-2019-17267 CVE-2019-17531 CVE-2019-20330 CVE-2020-8840 CVE-2020-9546 CVE-2020-9547 CVE-2020-9548 CVE-2019-14439 CVE-2020-10672 CVE-2020-10673 CVE-2020-10968 CVE-2020-10969 CVE-2020-11111 CVE-2020-11112 CVE-2020-11113 CVE-2020-11619 CVE-2020-11620 CVE-2020-14060 CVE-2020-14061 CVE-2020-14062 CVE-2020-14195 CVE-2020-24616 CVE-2020-24750 CVE-2020-25649 CVE-2020-35490 CVE-2020-35491 CVE-2020-35728 CVE-2020-36179 CVE-2020-36180 CVE-2020-36181 CVE-2020-36182 CVE-2020-36183 CVE-2020-36184 CVE-2020-36185 CVE-2020-36186 CVE-2020-36187 CVE-2020-36188 CVE-2020-36189 CVE-2020-36190

mybatis

3.4.4

CVE-2020-26945

ATP

Component

Version

CVE

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

commons-compress

1.19

CVE-2021-35515 CVE-2021-35516 CVE-2021-35517 CVE-2021-36090

foundation-ssl

1.3.2

CVE-2004-0009 CVE-2021-21501

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.2.0

CVE-2020-26945

spring-core

5.1.8.RELEASE

CVE-2020-5398

spring-security-core

5.1.5.RELEASE

CVE-2018-1258 CVE-2021-22112 CVE-2018-1258 CVE-2021-22112

tomcat-embed-core

9.0.44

CVE-2021-30639

MEP

Component

Version

CVE

golang.org/x/net

v0.0.0-20200301022130

CVE-2021-33194


Version: v1.2.0

  • Release Date: 2021-07-07

  • Image Version: v1.2.0

List of new open source repositories

Module

name

type

URL

illustrate

Installer

installer

Configuration Warehouse

https://gitee.com/edgegallery/installer

EdgeGallery offline package production and offline installation, online installation, docker compose installation script

filesystem

filesystem

Product warehouse

https://gitee.com/edgegallery/file-system

Application image management service in EdgeGallery platform

New Features

Requirements/Release Plan Detailed Description

  • Open Ability

    • AI software and hardware capabilities

      • Supports Ascend/Atlas hardware and open API: Supports Ascend 20+ open capabilities, including image restoration, target positioning, super-resolution image algorithms, etc.

      • AI face change, OCR, smart shelf, gesture recognition, etc.

    • Industry Suite Support industry combination capabilities

      • PCB quality inspection: provide sample applications for openness and PCB board quality inspection

      • Industrial site southbound equipment management communication: provide Fledge-based industrial southbound equipment management solutions and deployment scripts

      • Video conference, online classroom: provide video open source sample applications

  • Security enhancement

    • User management module adds dynamic verification code verification function to solve security vulnerabilities such as malicious registration and email bombing

    • During application commissioning, VNC remotely logs in to the sandbox environment to set up non-root user operations and restrict access rights

  • New Module Features

    • Developer, AppStore and MECM platform add administrator operation interface

    • AppStore platform provides application online experience function

    • The whole process supports the rapid integration, testing and release of virtual machine applications, and the MECM platform supports the distribution and deployment of virtual machine applications

    • Enhanced virtual machine application integration capabilities, supporting virtual machine specification configuration, network configuration and environment variable configuration

    • Add image file management service to solve the problem of image file sharing between EdgeGallery central node modules

    • Provide edge autonomous management interface and edge node health check function

    • Full module supports data persistence capability

  • Deploy on Demand

    • Provide offline deployment scripts and offline installation packages based on Ansible, support users to customize on-demand deployment

      • The IaaS layer provides two deployment methods, k8s and k3s

      • Each sub-module of EdgeGallery supports separate deployment and uninstallation

      • Support data persistence function based on k8s NFS

    • Support the deployment of EdgeGallery sub-modules in docker-compose mode (not dependent on k8s/k3s)

    • [PoC] Support Raspberry Pi deployment

  • other

    • Application Innovation: Complete 130+ application integration and land 25+ innovation bases

    • Experience optimization: AppStore, Developer, [MECM](https://47.243. 125.138:30093/) All platform interfaces are fully upgraded and optimized

Bug Fixes

See EdgeGallery v1.2.0 Test Report

Total number of defects: 267 (including 34 security defects), number of resolved: 265; 16 unresolved bugs (including 16 known issues, left to be resolved in the next version)

  • Analysis by defect type: 35 security bugs; 246 other bugs.

  • Analyzed by defect severity level: 31 serious bugs; 70 major bugs; 129 minor bugs; 9 unimportant bugs; 42 are not specified.

  • Analysis by demand point

  • Defect convergence analysis: a total of 281 bugs (including 14 invalid bugs; including safety bug 34); iteration 1 39 bugs (including 3 invalid bugs); iteration 2 65 bugs (including 5 invalid bugs); iteration Three 143 bugs (including 4 invalid bugs); 34 bugs (including 2 n

Security Notes

See [EdgeGallery v1.2.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.2/EG%20v1 .2%20Security%20Test%20Report.md)

Fixed/Known Security Issues

other

Issue Title

other

other

1

[Mecm] [Security] There are no log files in the usr/app/log directory in pods such as lcm, rule, apm, appo, inventory, k8xplugin, etc.

It has been fixed

main

2

[User-mgmt][Security] There are no log files in the usr/app/log directory in the user-mgmt pod

other

main

3

[Developer][Security] There is no log file in the usr/app/log directory in developer-be

It has been fixed

main

4

[User-mgmt][Security] Logging sensitive information (ssoSessionId)

It has been fixed

main

5

[Developer][Security] When the virtual machine was deployed, sensitive information (lcmToken) was recorded in the log

It has been fixed

main

6

[Atp][Security] User contribution test case function has replay attack vulnerability

It has been fixed

main

7

[User-mgmt][Security] The password is not forcibly changed when logging in to the admin account for the first time

It has been fixed

main

8

[Atp][Security] atp test in appstore->community scenario->security test case execution failed

It has been fixed

main

9

[Developer][Security] When a sandbox environment is added, authentication should be judged by role, not userId

It has been fixed

main

Known Vulnerabilities in Used Modules

The following vulnerabilities in the third-party open source components of EdgeGallery v1.2.0 have to be fixed by users:

User-mgmt

Component

Version

CVE

vertx-core

3.9.4

CVE-2019-17640

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-security-core

5.3.8.RELEASE

CVE-2018-1258

Appstore

Component

Version

CVE

log4j

1.2.17

CVE-2019-17571

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

docker-java-core

3.2.7

CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-jdbc

5.1.8.RELEASE

CVE-2020-5398

spring-security-core

5.1.5.RELEASE

CVE-2018-1258

Developer

Component

Version

CVE

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

swagger-codegen-cli

3.0.21

CVE-2018-8088 CVE-2016-6199 CVE-2019-15052 CVE-2020-25649 CVE-2019-10086 CVE-2017-1000207 CVE-2017-1000208 CVE-2017-18640 CVE-2020-11979 CVE-2021-29428

docker-java-core

3.2.7

CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-security-core

5.3.8.RELEASE

CVE-2018-1258

sprint-jdbc

5.2.8.RELEASE

CVE-2021-22118

MECM

Component

Version

CVE

bcprov-jdk15on-1.56.jar

1.56

CVE-2018-1000613 CVE-2018-1000180

log4j

1.2.17

CVE-2019-17571

vertx-core

3.6.3

CVE-2019-17640

foundation-ssl

1.3.0

CVE-2004-0009

hibernate-core

5.3.10.Final

CVE-2020-25638

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

spring-security-core

5.3.8.RELEASE

CVE-2018-1258

spring-tx

5.1.8.RELEASE

CVE-2020-5398

tomcat-embed-core

9.0.21

CVE-2020-1938 CVE-2019-12418 CVE-2019-17563 CVE-2020-11996 CVE-2020-13934 CVE-2020-13935 CVE-2020-17527 CVE-2020-8022 CVE-2020-9484 CVE-2021-25122 CVE-2021-25329

jackson-databind

2.9.9

CVE-2019-14379 CVE-2019-14540 CVE-2019-14892 CVE-2019-14893 CVE-2019-16335 CVE-2019-16942 CVE-2019-16943 CVE-2019-17267 CVE-2019-17531 CVE-2019-20330 CVE-2020-8840 CVE-2020-9546 CVE-2020-9547 CVE-2020-9548 CVE-2019-14439 CVE-2020-10672 CVE-2020-10673 CVE-2020-10968 CVE-2020-10969 CVE-2020-11111 CVE-2020-11112 CVE-2020-11113 CVE-2020-11619 CVE-2020-11620 CVE-2020-14060 CVE-2020-14061 CVE-2020-14062 CVE-2020-14195 CVE-2020-24616 CVE-2020-24750 CVE-2020-25649 CVE-2020-35490 CVE-2020-35491 CVE-2020-35728 CVE-2020-36179 CVE-2020-36180 CVE-2020-36181 CVE-2020-36182 CVE-2020-36183 CVE-2020-36184 CVE-2020-36185 CVE-2020-36186 CVE-2020-36187 CVE-2020-36188 CVE-2020-36189 CVE-2020-36190

mybatis

3.4.4

CVE-2020-26945

ATP

Component

Version

CVE

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-security-core

5.1.5.RELEASE

CVE-2018-1258

spring-core

5.1.8.RELEASE

CVE-2020-5398

MEP

Component

Version

CVE

golang.org/x/net

v0.0.0-20200301022130

CVE-2021-33194


Version: v1.1.0

  • Release Date: 2020-04-09

  • Image Version: v1.1.0

List of new open source repositories

Module

name

type

URL

illustrate

Example Applications

example-apps

PoC warehouse

https://gitee.com/edgegallery/example-apps

Provide a sample app based on EdgeGallery

EdgeGallery Frontend Component

eg-view

Product warehouse

https://gitee.com/edgegallery/eg-view

Provide normalized EdgeGallery front-end components

EdgeGallery Testing Platform

edgeT

PoC warehouse

https://gitee.com/edgegallery/edgeT

Provide users with a tool chain for local testing

New Features

Requirements/Release Plan Detailed Description

  • AI software and hardware capabilities Support Ascend/Atlas hardware and open API

    • AI image repair, edge detection, cartoon image generation, image coloring, object classification, target detection, etc.;

  • Cross-platform support Supports the incubation integration of Openstack-based virtual machine applications and K8S container applications

  • Experience optimization

    • APP classification, APP recommendation, dynamic refresh of hot models

  • EdgeNative support

    • IaaS/PaaS/applications all support on-demand deployment and automatic application framework generation

    • Visualization of MEP microservice management architecture

    • Provide EdgeGallery applet, design state, etc.

  • API management ETSI MEC API, 3GPP CAPIF, and Shengteng capability support situation match

  • Security, user management

    • Decentralization of authority and domain, authority control of key operations and data

    • Application remote login (such as VNC) supports secure protocol login

  • Community Lab Enhancement

    • Provide a real E2E 5G verification environment

    • One-click resource application, one-click release, visual management

  • Application Innovation

    • AppStore Federation, can register external AppStore, applications can be pushed and pulled from each other between different AppStores

    • Complete 80+ application integration, land 17+ innovation bases, and postgraduate courses of Xidian University

Bug Fixes

See EdgeGallery v1.1.0 Test Report

Known Issues

See EdgeGallery v1.1.0 Test Report

Security Notes

Fixed Security Issues

See [EdgeGallery v1.1.0 Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Plan/Release-R1.1/EG%20R1.1%20Security% 20Test%20Plan%20%2Emd)

Known Security Issues

See [EdgeGallery v1.1.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.1/EG%20v1 .1%20Security%20Test%20Report%2Emd)

Known Vulnerabilities in Used Modules

EdgeGallery v1.1.0 version of the third-party open source components has the following vulnerabilities that need to be repaired by users:

Appstore

Component

Version

CVE

log4j

1.2.17

CVE-2019-17571

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

docker-java-core

3.2.7

CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-jdbc

5.1.8.RELEASE

CVE-2020-5398

spring-security-core

5.1.5.RELEASE

CVE-2018-1258

Developer

Component

Version

CVE

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

swagger-codegen-cli

3.0.21

CVE-2018-8088 CVE-2016-6199 CVE-2019-15052 CVE-2020-25649 CVE-2019-10086 CVE-2017-1000207 CVE-2017-1000208 CVE-2017-18640 CVE-2020-11979

docker-java-core

3.2.7

CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-security-core

5.1.5.RELEASE

CVE-2018-1258

ATP

Component

Version

CVE

netty-transport

4.1.36.Final

CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612

vertx-core

3.9.4

CVE-2019-17640

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-security-core

5.1.5.RELEASE

CVE-2018-1258

spring-core

5.1.8.RELEASE

CVE-2020-5398

User-mgmt

Component

Version

CVE

vertx-core

3.9.4

CVE-2019-17640

foundation-ssl

1.3.0

CVE-2004-0009

mybatis-spring

2.0.6

CVE-2020-26945

mybatis-spring-boot-starter

2.1.4

CVE-2020-26945

spring-security-core

5.3.8.RELEASE

CVE-2018-1258

Upgrade Notes

N/A

Deprecation Notes

N/A

Other

N/A


Version: v1.0.0

  • Release Date: 2020-12-31

  • Image Version: v1.0.0

List of new open source repositories

Module

name

type

URL

illustrate

ATP(Application Test Platform)

atp

Product warehouse

https://gitee.com/edgegallery/atp

Application test platform, providing test support for application certification

ATP(Application Test Platform)

atp-fe

Product warehouse

https://gitee.com/edgegallery/atp-fe

Provide front-end support for application testing and certification platform

Developer

crane-framework

Product warehouse

https://gitee.com/edgegallery/crane-framework

Provide lightweight for application development, plug-in is the development framework

MECM

mecm-apprulemgr

Product warehouse

https://gitee.com/edgegallery/mecm-apprulemgr

The management plane provides the ability to issue and manage application rule configuration

New Features

Demand/Release Plan Detailed Description

  1. Version Planning Features

    • Developer Optimize the APP development and test release process, optimize the API interface, and integrate multi-language SDK

      • Optimize the homepage design and increase the application development life cycle flow chart;

      • Optimize the project development process, brand new interface design;

      • Optimize the deployment and commissioning link, increase the visual display of the deployment process, and increase the POD display of the deployment results;

      • Optimize the ability center interface, increase the ability classification selection;

      • Application release link docking certification test platform;

    • AppStore Interface ease of use optimized, EdgeGallery ecological capabilities optimized

    • MECM Optimize topology, application management and edge node management, add the function of acquiring MEP capability, AK/SK configuration interface

    • MEP supports APP heartbeat detection, a new interface for acquiring MEP capability, an interface for AK/SK configuration, and a new interface for acquiring token for MEP-agent

    • ATP APP application testing ability enhancement

    • Test Provide health check function, optimize installation package, develop test platform to support test case management

  2. PoC Features

    • MEP service governance page display

    • Introduce a plug-in application framework Crane-framework

    • AppStore Federation, can register external AppStore, applications can be pushed and pulled from each other between different AppStores

PoC Test Report

See EdgeGallery v1.0.0 PoC Test Report

Bug Fixes

See EdgeGallery v1.0.0 Test Report

Known Issues

See EdgeGallery v1.0.0 Test Report

Security Notes

Fixed Security Issues

See [EdgeGallery v1.0.0 Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.0/EG%20v1. 0.0%20Security%20Test%20Report%2Emd)

Known Security Issues

See [EdgeGallery v1.0.0 Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.0/EG%20v1. 0.0%20Security%20Test%20Report%2Emd)

Known Vulnerabilities in Used Modules

EdgeGalelry v1.0.0 version of the third-party open source components has the following vulnerabilities that need to be repaired by users:

Appstore

Component

Version

CVE

log4j (indirect dependency)

1.2.17

CVE-2019-17571

bcprov-jdk15on-1.66.jar

1.66

CVE-2020-28052

jackson-databind

2.10.5

CVE-2020-25649

spring-security-oauth2

2.3.3.RELEASE

CVE-2018-15758

tomcat-embed-core

9.0.37

CVE-2020-17525

Developer

Component

Version

CVE

spring-beans (indirect dependency)

5.1.8.RELEASE

CVE-2020-5398

spring-security-core

5.3.4.RELEASE

CVE-2018-1258

jackson-databind

2.10.5

CVE-2020-25649

mybatis-spring-boot-starter

2.1.1

CVE-2020-26945

tomcat-embed-core

9.0.37

CVE-2020-17527

ATP

Component

Version

CVE

mybatis-spring-boot-starter

2.1.1

CVE-2020-26945

User-mgmt

Component

Version

CVE

spring-security-core

5.3.4.RELEASE

CVE-2018-1258

bcprov-jdk15on

1.66

CVE-2020-28052

jackson-databind

2.10.5

CVE-2020-25649

mybatis-spring-boot-starter

2.1.1

CVE-2020-26945

spring-security-oauth2

2.3.3.RELEAS

CVE-2018-15758

Website-gateway

Component

Version

CVE

spring-security-core

5.2.6.RELEASE

CVE-2018-1258

jackson-databind

2.10.5

CVE-2020-26945

spring-security-oauth2

2.3.3

CVE-2018-15758

tomcat-embed-core

9.0.37

CVE-2020-17527

MECM

Component

Version

CVE

lodash

4.17.13

CVE-2020-8203

minimatch

3.0.4

NPM-118

Upgrade Notes

N/A

Deprecation Notes

N/A

Other

N/A


Version: v0.9.1

  • Release Date: 2020-11-11

  • Image Version: v0.9.1

List of new open source repositories

Module

name

type

URL

illustrate

Developer

api-emulator

Product warehouse

https://gitee.com/edgegallery/api-emulator

Simulate api that provides basic capabilities

Mep

Plugins

Product warehouse

https://gitee.com/edgegallery/plugins

plugins warehouse

Developer

toolchain

Product warehouse

https://gitee.com/edgegallery/toolchain

Provide the source code analysis function when the x86 platform application gets on the ARM

New Features

Demand/Release Plan Detailed Description

  • Summary of security design troubleshooting issues

  • api simulator and tool chain, plugin warehouse open source

  • MEP/MEP Agentak/sk configuration interface

Bug Fixes

See EdgeGallery v0.9.1 Test Report

Known Issues

See EdgeGallery v0.9.1 Test Report

Security Notes

Fixed Security Issues

See EdgeGallery v0.9.1 Test Report

Known Security Issues

See EdgeGallery v0.9.1 Test Report

Known Vulnerabilities in Used Modules

EdgeGallery v0.9.1 version of the third-party open source components has the following vulnerabilities that need to be repaired by users:

Appstore

Component

Version

CVE

netty-transport (indirect dependency)

4.1.36.Final

CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869

log4j (indirect dependency)

1.2.17

CVE-2019-17571

spring-jdbc (indirect dependency)

5.1.8.RELEASE

CVE-2020-5398

spring-security-core (indirect dependency)

5.1.5.RELEASE

CVE-2018-1258

bcprov-jdk15on-1.66.jar

1.66

CVE-2020-28052

foundation-ssl

1.3.0

CVE-2004-0009

jackson-databind

2.10.5

CVE-2020-25649

mybatis

3.5.3

CVE-2020-25645

spring-security-oauth2

2.3.3.RELEASE

CVE-2018-15758

tomcat-embed-core

9.0.37

CVE-2020-17525

vertx-core

3.6.3

CVE-2019-17640

Developer

Component

Version

CVE

netty-transport (indirect dependency)

4.1.36.Final

CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869

spring-beans (indirect dependency)

5.1.8.RELEASE

CVE-2020-5398

spring-security-config (indirect dependency)

5.1.5.RELEASE

CVE-2018-1258, CVE-2020-5398

spring-security-core

5.3.4.RELEASE

CVE-2018-1258

lodash

4.17.13

CVE-2020-8203

minimatch

3.0.4

NPM-118

spring-security-oauth2

2.3.3

CVE-2018-15758,CVE-2019-11269,CVE-2018-3778

swagger-codegen-cli (shaded: com.fasterxml.jackson.core.jackson-databind:2.10.3)

3.0.21

CVE-2020-25649

foundation-ssl

1.3.0

CVE-2004-0009

jackson-databind

2.10.5

CVE-2020-25649

mybatis-spring

2.0.3

CVE-2020-26945

mybatis-spring-boot-starter

2.1.1

CVE-2020-26945

swagger-codegen-cli

3.0.21

CVE-2017-1000207,CVE-2017-1000208,CVE-2019-10086,CVE-2018-8088,CVE-2017-18640,CVE-2016-6199,CVE-2019-11065,CVE-2019-15052,

tomcat-embed-core

9.0.37

CVE-2020-17527

vertx-core

3.6.3

CVE-2019-17640

User-mgmt

Component

Version

CVE

rxnetty (indirect dependency)

0.4.9

CVE-2015-2156

netty-tcnative-boringssl-static (indirect dependency)

2.0.31.Final

CVE-2015-2156

spring-security-core

5.2.6.RELEASE

CVE-2018-1258

lodash

4.17.20

NPM-1065, NPM-557, NPM-7823

minimatch

3.0.4

NPM-118

Website-gateway

Component

Version

CVE

log4j

1.2.17

CVE-2019-17571

spring-security-core

5.2.6.RELEASE

CVE-2018-1258

MECM

Component

Version

CVE

lodash

4.17.13

CVE-2020-8203

minimatch

3.0.4

NPM-118

Upgrade Notes

N/A

Deprecation Notes

N/A

Other

After review by the Security Working Group, the remaining issue list I1XA0N in the Plugins warehouse will be fixed in the form of patches after the v0.9 version is released. For details, please refer to the Security Working Group Meeting Minutes


Version: v0.9

  • Release Date: 2020-09-30

  • Image Version: v0.9

List of new open source repositories

Module

name

type

URL

illustrate

helm-charts

helm-charts

deploy

https://gitee.com/edgegallery/helm-charts

EdgeGallery deployment script

website-gateway

website-gateway

Product warehouse

https://gitee.com/edgegallery/website-gateway

Front-end package

user-mgmt

user-mgmt

Product warehouse

https://gitee.com/edgegallery/user-mgmt

usermgmt background

user-mgmt

user-mgmt-fe

Product warehouse

https://gitee.com/edgegallery/user-mgmt-fe

usermgmt front desk

mecm

mecm-fe

Product warehouse

https://gitee.com/edgegallery/mecm-fe

MECM front desk

mecm

mecm-applcm

Product warehouse

https://gitee.com/edgegallery/mecm-applcm

MECM application lifecycle management

mecm

mecm-apm

Product warehouse

https://gitee.com/edgegallery/mecm-apm

MECM application package management

mecm

mecm-inventory

Product warehouse

https://gitee.com/edgegallery/mecm-inventory

MECM inventory management

mecm

mecm-appo

Product warehouse

https://gitee.com/edgegallery/mecm-appo

MECM application orchestration

developer

developer-be

Product warehouse

https://gitee.com/edgegallery/developer-be

developer background

developer

developer-fe

Product warehouse

https://gitee.com/edgegallery/developer-fe

developer front desk

appstore

appstore-fe

Product warehouse

https://gitee.com/edgegallery/appstore-fe

appstore front desk

appstore

appstore-be

Product warehouse

https://gitee.com/edgegallery/appstore-be

appstore background

platform-mgmt

platform-mgmt

Product warehouse

https://gitee.com/edgegallery/platform-mgmt

Install k8/docker

docs

docs

Product warehouse

https://gitee.com/edgegallery/docs

Documentation

New Features

Demand/Release Plan Detailed Description

  • All-in-One MEP/MECM network isolation

  • MEP supports DNS configuration

  • Support All-in-One deployment

  • Multi-node offline deployment

  • Nine dimensions of security optimization

  • MECM interface/topology management/resource management optimization

  • (PoC) kubeedge integration verification

Bug Fixes

See EdgeGallery v0.9 Test Report

Known Issues

See EdgeGallery v0.9 Test Report

Security Notes

Fixed Security Issues

See EdgeGallery v0.9 Test Report

Known Security Issues

See EdgeGallery v0.9 Test Report

Known Vulnerabilities in Used Modules

The following vulnerabilities in the third-party open source components of EdgeGallery v0.9 have to be fixed by users:

Appstore

Component

Version

CVE

netty-transport (indirect dependency)

4.1.36.Final

CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869

log4j (indirect dependency)

1.2.17

CVE-2019-17571

spring-jdbc (indirect dependency)

5.1.8.RELEASE

CVE-2020-5398

spring-security-core (indirect dependency)

5.1.5.RELEASE

CVE-2018-1258

Developer

Component

Version

CVE

netty-transport (indirect dependency)

4.1.36.Final

CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869

spring-beans (indirect dependency)

5.1.8.RELEASE

CVE-2020-5398

spring-security-config (indirect dependency)

5.1.5.RELEASE

CVE-2018-1258, CVE-2020-5398

spring-security-core

5.3.4.RELEASE

CVE-2018-1258

lodash

4.17.13

CVE-2020-8203

minimatch

3.0.4

NPM-118

User-mgmt

Component

Version

CVE

rxnetty (indirect dependency)

0.4.9

CVE-2015-2156

netty-tcnative-boringssl-static (indirect dependency)

2.0.31.Final

CVE-2015-2156

spring-security-core

5.2.6.RELEASE

CVE-2018-1258

lodash

4.17.20

NPM-1065, NPM-557, NPM-7823

minimatch

3.0.4

NPM-118

Website-gateway

Component

Version

CVE

log4j

1.2.17

CVE-2019-17571

spring-security-core

5.2.6.RELEASE

CVE-2018-1258

MECM

Component

Version

CVE

lodash

4.17.13

CVE-2020-8203

minimatch

3.0.4

NPM-118

Upgrade Notes

N/A

Deprecation Notes

N/A

Other

After review by the Security Working Group, the remaining issue list I1XA0N in the Plugins warehouse will be fixed in the form of patches after the v0.9 version is released. For details, please refer to the Security Working Group Meeting Minutes

EdgeGallery Architecture

EdgeGallery v1.1 Architecture

参与EdgeGallery 架构讨论

Developer Guide

EdgeGallery业务开发指导

Northbound Interface

EdgeGallery allows third-party business systems to utilize the inner apis by calling the external apis (Northbound Interface Gateway). The calling process is explained in the following figure:

Northbound API call process

Use Northbound Interface to Call Endpoints

Recently, project WebsiteGateway is responsible for the external api gateway. Specifically, this job is done by the front-end of each business platform running through WebsiteGateway. Therefore, the endpoint called by the external api can utilize business platform front-end endpoints. As follows:

Platform

endpoint

instruction

EdgeGallery Fusion Frontend

https://{PORTAL_IP}:30095

It is recommended to use this endpoint

AppStore Front End

https://{PORTAL_IP}:30091

Developer Front End

https://{PORTAL_IP}:30092

Mecm Front End

https://{PORTAL_IP}:30093

Atp Front End

https://{PORTAL_IP}:30094

Get XSRF-TOKEN

You need to obtain the XSRF-TOKEN before you call Get-Access-Token Api or partner API of MECM, AppStore, Developer…

Resource URI: /
Method: GET

Example request:

GET https://x.x.x.x:30095/

Example response:

response 200 OK
响应的Cookie中即包含XSRF-TOKEN,请获取它。
后续所有的接口调用中都需要通过请求头X-XSRF-TOKEN传递。

Get AccessToken

Resource URI: /mec-usermgmt/v1/accesstoken
Method: POST

Name

Definition

Type

Required

Describe

X-XSRF-TOKEN

XSRF-TOKEN

header

Yes

userFlag

Login credentials (username/email/phone number)

body

Yes

password

password

body

Yes

Example request:

https://x.x.x.x:30095/mec-usermgmt/v1/accesstoken -H "X-XSRF-TOKEN: xxxx"
{
  "userFlag": "",
  "password": ""
}

Example response:

response 200 OK
{
  "userId": "xxxxx",
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

后续所有的业务接口调用都需要通过请求头X-ACCESS-TOKEN传递这里的accessToken值。

response 400 Bad Request
{
  "code": 70xxx,
  "message": ""
}

response 401 Unauthorized
{
  "code": 70xxx,
  "message": ""
}

Call API

For details of interfaces provided by each platform, please go to PROJECTS from navigation bar.

URL format of Northbound Service API

When northbound interface is used to invoke api of each platform(MECM, AppStore, Developer…), make sure the URL is in compliance with the following format.

https://x.x.x.x:30095/{urlPrefix}/{业务接口自身的URL}

The urlPrefix is the routing prefix defined by each platform in the gateway, as shown in the following table:

Platform

urlPrefix

AppStore

mec-appstore

Developer

mec-developer

Mecm-Inventory

mecm-inventory

Mecm-APP

mecm-appo

Mecm-APM

mecm-apm

ATP

mec-atp

Request Header of Northbound Service API

When northbound interface is used to invoke api of each platform(MECM, AppStore, Developer…), the following request headers is required.

Name Definition
X-XSRF-TOKEN XSRF-TOKEN
X-ACCESS-TOKEN ACCESS-TOKEN
Example of Calling Northbound Service API

AppStore platform provides an interface to get the application list: GET /mec/appstore/v1/apps

Call northbound api:

GET https://x.x.x.x:30095/mec-appstore/mec/appstore/v1/apps -H "X-XSRF-TOKEN: xxxx" -H "X-ACCESS-TOKEN: xxxx"
Developer Guide for Third-party IAM

EdgeGallery supports the use of third-party IAM account systems.

When deploying EdgeGallery, please refer to: Offline Installation Guide to enable the third-party IAM enable switch.

For the third-party IAM account system, the following interfaces need to be implemented:

interface name

URL

请求方法

Request

Response

Response Status

Log in

/iam/users/login

POST

{
“userFlag”: “xxxx”,//User login credentials (username/email address)
“password”: “xxx”//Login password
}

{
“userId”: “”, //User ID
“userName”: “”, //User Name
“mailAddress”: “” , //Email address (optional)
“userRole”: “”, //User role (ADMIN: Admin TENANT: Tenant)
}

200: Login successful, return user information
401: Authentication failed

Installation guide

EdgeGallery installation guide

EdgeGallery offline installation guide

EdgeGallery certificate renewal

EdgeGallery certificate update guide

AppStore

Overview

The App Store is an edge application marketplace for developers publishing and onboarding apps developed by Developer Platform and can be published directly to the AppStore app store after an ATP test. Users can also upload edge apps directly on the AppStore which can be published to the AppStore after an ATP test.

The AppStore is divided into two parts, AppStore BE is a backstage part that provides the main functional interface for the foreground or other three-way system calls. AppStore FE is the foreground part and provides an interface display.

Code Architecture

  1. AppStore FE: Developer Platform foreground framework, developed using VUE.

  2. AppStore BE: Developer Platform Backstage Framework, developed using SpringBot + ServiceComb.(For ServiceComb, please refer to this: https://servicecomb.apache.org/)

  3. AppStore DB: Backstage relies on Postgres database.

Feature Design

The AppStore is an application repository module for EdgeGallery, which is primarily responsible for the storage and management of 5G edge applications where the current version has decentralized control and different user roles contain different features.

Administrator users include application upload, application test, application release, application query, application comment, download/delete all applications, external warehouse management, application push, application pull, message management, operation analysis, application management, Sandbox management, application > online experience, application synchronization, application monetization, document center.

Tenant users include application uploading, application testing, application publishing, application querying, application commenting, downloading/deleting this user’s application, application online experience, application monetization, and document center.

Tourists users include Apply queries, document centers.

Feature Name

Feature Description

App Upload

AppStore supports users to upload application packages.

Application testing

AppStore integrates ATP test platform, application package can be tested via ATP test platform after user upload.

Application Publish

AppStore integrates the ATP test platform, and users can test the application package through the ATP test platform after uploading the application package.

Application Query

Users can view all published applications in the “Application Repository”, and view all the applications uploaded by themselves on the “My Applications” page

Application Review

Users can comment and rate the apps they see in the “App Repository”, but they cannot comment on their own apps.

App Download

Users can download application packages from the AppStore, tenants can only download application packages uploaded by the user, and administrator users can download all published application packages and application packages uploaded by the user.

Application Delete

Users can delete application packages from AppStore. Tenants can only delete application packages uploaded by this user. Administrator users can delete all published application packages and application packages uploaded by this user.

External app store management.

Users can add, delete, modify and check external application repositories.

App Push

Users can push shared applications to the added external application repository.

Application Pull

Users can pull applications that are allowed to be shared from the added external application repositories to this repository.

Message Management

The push, download and other operations performed by the user in “application sharing” will record a message log.

Application Acquisition

The user can obtain the application from the received push message and upload it to the current platform.

Application management

Users can manage recent popular applications, a list of applications that can be displayed in the application warehouse, and a list of applications that can be promoted.

Sandbox management

Users can add, delete, modify and check the sandbox environment.

App online experience

Users can instantiate applications based on the existing sandbox environment for online experience.

App synchronization

Users can deploy the application to the configured peripheral system, such as MEAO

Application monetization

Users can subscribe to favorite apps,Deploy to the designated edge node。

Document Center

Users can learn about the main functions, interface specifications and application package specifications of appstore in the documentation center.

Interface design

The document describes the interface design details for the appstore-be module, with a total of six parts, which correspond to app management, packet management, comment management, application push, warehouse management, and message center.

1.Application

The app is app store’s basic publishing unit.

1.1 Get list application list

According to application list of the input parameter.

URI: /mec/appstore/v1/apps
METHOD: GET

Request parameters:

name

describe

IN

compulsory choice

name

application name

request param

yes

provider

Application provider

request param

yes

type

Type of application

request param

yes

affinity

Architecture

request param

yes

userId

Application creator

request param

yes

Response examples:

200 OK
[
  {
    "appId": "string",
    "iconUrl": "string",
    "name": "string",
    "provider": "string",
    "type": "string",
    "shortDesc": "string",
    "createTime": "string",
    "details": "string",
    "downloadCount": 0,
    "affinity": "string",
    "industry": "string",
    "contact": "string",
    "score": 0,
    "userId": "string",
    "userName": "string",
    "status": "string",
    "showType": "string",
    "deployMode": "string",
    "hotApp": false
  }
]
1.2 Access to application list

Obtaining application details according to application ID.

URI: /mec/appstore/v1/apps/{appId}
METHOD: GET

name

describe

IN

compulsory choice

appId

app id

path

yes

Response examples:

200 OK
  {
    "appId": "string",
    "iconUrl": "string",
    "name": "string",
    "provider": "string",
    "type": "string",
    "shortDesc": "string",
    "createTime": "string",
    "details": "string",
    "downloadCount": 0,
    "affinity": "string",
    "industry": "string",
    "contact": "string",
    "score": 0,
    "userId": "string",
    "userName": "string"
    "status": "string",
    "showType": "string",
    "deployMode": "string",
    "hotApp": false
  }
1.3 Registration applications

Register for the application.

URI: /mec/appstore/v1/apps
METHOD: POST

name

describe

IN

compulsory choice

userId

User ID

request param

yes

userName

User name

request param

yes

file

Application package

request body form

yes

icon

Application icon document

request body form

yes

demoVideo

Application of video files

request body form

no

type

Type of application

request body form

yes

shortDesc

Description of application

request body form

yes

affinity

Architecture

request body form

yes

industry

Application to industry

request body form

yes

testTaskId

Test Task id

request body form

no

showType

Display Type: public, inner-public, private

request body form

no

Response examples:

200 OK
  {
    "appName": "string",
    "appId": "string",
    "packageId": "string",
    "provider": "string",
    "version": "string"
  }
1.4 Delete application

application is deleted according to the application ID.

URI: /mec/appstore/v1/apps/{appId}
METHOD: DELETE

name

describe

IN

compulsory choice

userId

User ID

request param

yes

userName

application name

request param

yes

appId

Application ID

path

yes

Response examples:

200 OK
  "delete App success."
1.5 Get the app icon

Obtaining the application icon according to the application ID.

URI: /mec/appstore/v1/apps/{appId}/icon
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

Response examples:

200 OK
  binary output.
1.6 Sharding upload app

Shards upload the application package.

URI: /mec/appstore/v1/apps/upload
METHOD: POST

name

describe

IN

compulsory choice

id

Sub-ID

request body form

no

chunkNumber

Current document block number

request body form

yes

chunkSize

block size

request body form

no

currentChunkSize

Current blocking size

request body form

no

totalSize

Total size

request body form

no

identifier

Document means

request body form

yes

filename

file name

request body form

no

relativePath

File Relative Path

request body form

no

totalChunks

Total blocks

request body form

no

type

Document type

request body form

no

file

Papers

request body form

yes

Response examples:

200 OK
  {
    "upload package block success"
  }
1.7 Combined application package

Application packages.

URI: /mec/appstore/v1/apps/merge
METHOD: GET

name

describe

IN

compulsory choice

fileName

file name

request param

yes

guid

Document ID

request param

yes

Response examples:

200 OK
  {
    "file address"
  }
1.8 Registration of virtual machines

Sign up for virtual machine applications.

URI: /mec/appstore/v1/apps/vm-register
METHOD: POST

name

describe

IN

compulsory choice

userId

User ID

request param

yes

userName

application name

request param

yes

fileAddress

Application packet file relative path

request body form

yes

icon

Application icon document

request body form

yes

demoVideo

Application of video files

request body form

no

type

Type of application

request body form

yes

shortDesc

Description of application

request body form

yes

affinity

Architecture

request body form

yes

industry

Application to industry

request body form

yes

testTaskId

Test Task id

request body form

no

showType

Display Type: public, inner-public, private

request body form

no

Response examples:

200 OK
  {
    "appName": "string",
    "appId": "string",
    "packageId": "string",
    "provider": "string",
    "version": "string"
  }
1.9 Get the app video

Obtaining the application video according to the application ID.

URI: /mec/appstore/v1/apps/{appId}/demoVideo
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

Response examples:

200 OK
  binary output.
1.10 Get the app video

Change whether the application is a popular application according to the application ID.

URI: /mec/appstore/v2/apps/hotapps
METHOD: PUT

name

describe

IN

compulsory choice

appId

Application ID

path

yes

Response examples:

200 OK
  set hot apps success.
1.11 Access to applications

According to application list of the input parameter.

URI: /mec/appstore/v2/apps/action/query
METHOD: POST

Request parameters:

name

describe

IN

compulsory choice

QueryAppReqDto

Query application conditions

request body

yes

QueryAppReqDto

Field name

describe

Field Type

compulsory choice

types

Type of application

List

no

showType

Type of application

List

no

affinity

Architecture

List

no

industry

Application to industry

List

no

workloadType

Type of application

List

no

userId

User Id

String

no

queryCtrl

Query conditions

QueryAppCtrlDto

yes

QueryAppCtrlDto

Field name

describe

Field Type

compulsory choice

limit

Paging query The number of queries per page [1,500]

int

yes

offset

Paging query start page, starting from 0

int

yes

sortItem

Query sort field

String

no

sortType

Query sorting method ascending/descending

String

no

status

Get the working status of the application.

List

no

appName

application name

String

no

Response examples:

200 OK
{
    "results": [
        {
            "appId": "string",
            "packageId": "string",
            "iconUrl": "string",
            "name": "string",
            "provider": "string",
            "type": "string",
            "shortDesc": "string",
            "showType": "string",
            "createTime": "string",
            "details": "string",
            "downloadCount": int,
            "affinity": "string",
            "industry": "string",
            "contact": "string",
            "score": 5.0,
            "userId": "string",
            "userName": "string",
            "status": "string",
            "deployMode": "string",
            "hotApp": false,
            "exprienceAble": false
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 9
}
1.12 Access to applications

Obtaining application details according to application ID.

URI: /mec/appstore/v2/apps/{appId}
METHOD: GET

name

describe

IN

compulsory choice

appId

app id

path

yes

Response examples:

200 OK
  {
    "data":  {
        "appId": "string",
        "iconUrl": "string",
        "name": "string",
        "provider": "string",
        "type": "string",
        "shortDesc": "string",
        "showType": "string",
        "createTime": "string",
        "details": "string",
        "downloadCount": int,
        "affinity": "string",
        "industry": "string",
        "contact": "string",
        "score": 5.0,
        "userId": "string",
        "userName": "string",
        "status": "string",
        "deployMode": "string",
        "hotApp": false
    },
    "retCode": 0,
    "params": "[string]",
    "message": "string"
}
1.13 Registration applications

Register for the application.

URI: /mec/appstore/v2/apps
METHOD: POST

name

describe

IN

compulsory choice

userId

User ID

request param

yes

userName

application name

request param

yes

file

Application package

request body form

yes

icon

Application icon document

request body form

yes

demoVideo

Application of video files

request body form

no

type

Type of application

request body form

yes

shortDesc

Description of application

request body form

yes

affinity

Architecture

request body form

yes

industry

Application to industry

request body form

yes

testTaskId

Test Task id

request body form

no

showType

Display Type: public, inner-public, private

request body form

no

Response examples:

200 OK
  {
    "data": {
        "appName": "string",
        "appId": "string",
        "packageId": "string",
        "provider": "string",
        "version": "string"
    },
    "retCode": 0,
    "params": "[string]",
    "message": "string"
  }

2.Application

The application package belongs to the application, each application comprises at least one application package.

2.1 Access to application packages

Get the list of applications by applying ID.

URI: /mec/appstore/v1/apps/{appId}/packages
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

userId

User ID

request param

yes

access_token

Request token

request header

yes

Response examples:

200 OK
[
  {
    "packageId": "string",
    "userName": "string",
    "status": "string",
    "shortDesc": "string",
    "provider": "string",
    "testTaskId": "string",
    "size": "string",
    "format": "string",
    "createTime": "string",
    "name": "string",
    "version": "string",
    "type": "string",
    "details": "string",
    "affinity": "string",
    "industry": "string",
    "contact": "string",
    "appId": "string",
    "userId": "string",
    "showType": "string",
    "deployMode": "string"
  }
]
2.2 Access to applications

The application package is obtained by applying ID and application packet ID.

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

Response examples:

200 OK
  {
    "packageId": "string",
    "userName": "string",
    "status": "string",
    "shortDesc": "string",
    "provider": "string",
    "testTaskId": "string",
    "size": "string",
    "format": "string",
    "createTime": "string",
    "name": "string",
    "version": "string",
    "type": "string",
    "details": "string",
    "affinity": "string",
    "industry": "string",
    "contact": "string",
    "appId": "string",
    "userId": "string",
    "showType": "string",
    "deployMode": "string"
  }
2.3 Delete the application package

Delete the application package by application ID and application package ID.

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}
METHOD: DELETE

name

describe

IN

compulsory choice

userId

User Id

request param

yes

userName

User name

request param

yes

appId

Application ID

path

yes

packageId

Application package ID

path

yes

Response examples:

200 OK
   delete package success.
2.4 Download the application package

Download the application package via the application ID and the application package ID.

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/download
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

Response examples:

200 OK
  binary output.
2.5 Access to document content

Obtaining the file content in the application package by application ID, application packet ID and file path.

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/files
METHOD: POST

name

describe

IN

compulsory choice

packageId

package id

path

yes

filePath

file path

request body

yes

appId

Application ID

path

yes

Response examples:

200 OK
  file content output.
2.6 Application publishing

The application is published by application ID and application packet ID.

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/publish
METHOD: POST

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

isFree

Is it free

request body

no

price

App pricing information

request body

no

Response examples:

200 OK
  Publish Success.
2.7 Application test

Test the application by application ID and application package ID.

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/test
METHOD: POST

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

access_token

Request token

request header

yes

Response examples:

200 OK
  {
  "atpTaskId": "string",
  "status": "string"
  }
2.8 Get App Package List

Get the list of applications by applying ID.

URI: /mec/appstore/v1/packages
METHOD: GET

name

describe

IN

compulsory choice

ueserId

User Id

request param

yes

access_token

Request token

request header

yes

Response examples:

200 OK
[
  {
    "packageId": "string",
    "userName": "string",
    "status": "string",
    "shortDesc": "string",
    "provider": "string",
    "testTaskId": "string",
    "size": "string",
    "format": "string",
    "createTime": "string",
    "name": "string",
    "version": "string",
    "type": "string",
    "details": "string",
    "affinity": "string",
    "industry": "string",
    "contact": "string",
    "appId": "string",
    "userId": "string",
    "showType": "string",
    "deployMode": "string"
  }
]
2.9 Modify Application

Modify the application through the application ID and application package ID.

URI: /mec/appstore/v1/apps/{appId}/package/{packageId}
METHOD: PUT

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

industry

Application to industry

request body form

no

type

Type of application

request body form

no

icon

Application icon document

request body form

no

video

Application of video files

request body form

no

affinity

Architecture

request body form

no

shortDesc

Description of application

request body form

no

showType

Type of application

request body form

no

Response examples:

200 OK
  {
    "packageId": "string",
    "userName": "string",
    "status": "string",
    "shortDesc": "string",
    "provider": "string",
    "testTaskId": "string",
    "size": "string",
    "format": "string",
    "createTime": "string",
    "name": "string",
    "version": "string",
    "type": "string",
    "details": "string",
    "affinity": "string",
    "industry": "string",
    "contact": "string",
    "appId": "string",
    "userId": "string",
    "showType": "string",
    "deployMode": "string"
  }
2.10 Application release-v2

The application is published by application ID and application packet ID.

URI: /mec/appstore/v2/apps/{appId}/packages/{packageId}/action/publish
METHOD: POST

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

isFree

Is it free

request body

no

price

App pricing information

request body

no

Response examples:

200 OK
  Publish Success.
  {
    "data": "Publish Success",
    "retCode": 0,
    "params": "[string]",
    "message": "string"
  }
2.11 Get application package list by application ID-v2

Get the list of applications by applying ID.

URI: /mec/appstore/v2/apps/{appId}/packages
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

userId

User ID

request param

yes

access_token

Request token

request header

yes

limit

Pagination to query the number of queries per page, it is recommended to set a larger value to query all application packages of the application at one time

request param

yes

offset

Paging query start page, starting from 0

request param

yes

Response examples:

200 OK
[
  {
    "packageId": "string",
    "userName": "string",
    "status": "string",
    "shortDesc": "string",
    "provider": "string",
    "testTaskId": "string",
    "size": "string",
    "format": "string",
    "createTime": "string",
    "name": "string",
    "version": "string",
    "type": "string",
    "details": "string",
    "affinity": "string",
    "industry": "string",
    "contact": "string",
    "appId": "string",
    "userId": "string",
    "showType": "string",
    "deployMode": "string"
  }
]
2.12 Get application package-v2

The application package is obtained by applying ID and application packet ID.

URI: /mec/appstore/v2/apps/{appId}/packages/{packageId}
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

Response examples:

200 OK
  {
    "data":
    {
        "packageId": "string",
        "userName": "string",
        "status": "string",
        "shortDesc": "string",
        "provider": "string",
        "testTaskId": "string",
        "size": "string",
        "format": "string",
        "createTime": "string",
        "name": "string",
        "version": "string",
        "type": "string",
        "details": "string",
        "affinity": "string",
        "industry": "string",
        "contact": "string",
        "appId": "string",
        "userId": "string",
        "showType": "string",
        "deployMode": "string"
    },
    "retCode": 0,
    "params": "[string]",
    "message": "string"
  }
2.13 Get application package list-v2

Get the list of applications by applying ID.

URI: /mec/appstore/v2/packages/action/query
METHOD: POST

Request parameters:

name

describe

IN

compulsory choice

QueryAppCtrlDto

Query application conditions

request body

yes

access_token

Request token

request header

yes

QueryAppCtrlDto

Field name

describe

Field Type

compulsory choice

limit

Paging query The number of queries per page [1,500]

int

yes

offset

Paging query start page, starting from 0

int

yes

sortItem

Query sort field

String

no

sortType

Query sorting method ascending/descending

String

no

status

Get the working status of the application.

List

no

appName

application name

String

no

Response examples:

200 OK
{
    "results": [
        {
            "packageId": "string",
            "size": "string",
            "format": "string",
            "createTime": "string",
            "name": "string",
            "version": "string",
            "type": "string",
            "details": "string",
            "affinity": "string",
            "industry": "string",
            "contact": "string",
            "appId": "string",
            "userId": "string",
            "userName": "string",
            "status": "string",
            "shortDesc": "string",
            "showType": "string",
            "testTaskId": "string",
            "provider": "string",
            "demoVideoName": "string",
            "deployMode": "string"
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 12
}
2.14 Get application package list-v2

Get the list of applications by applying ID.

URI: /mec/appstore/v2/packages
METHOD: GET

name

describe

IN

compulsory choice

offset

Paging query start page, starting from 0

request param

yes

limit

Paging query The number of queries per page [1,500]

request param

yes

startTime

应用创建时间的起始时间

request param

no

endTime

应用创建时间的终止时间

request param

no

Response examples:

200 OK
{
    "results": [
        {
            "packageId": "string",
            "size": "string",
            "format": "string",
            "createTime": "string",
            "name": "string",
            "version": "string",
            "type": "string",
            "details": "string",
            "affinity": "string",
            "industry": "string",
            "contact": "string",
            "appId": "string",
            "userId": "string",
            "userName": "string",
            "status": "string",
            "shortDesc": "string",
            "showType": "string",
            "testTaskId": "string",
            "provider": "string",
            "demoVideoName": "string",
            "deployMode": "string"
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 12
}
2.15 Download the application package

Download the application package via the application ID and the application package ID.

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/icon
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

packageId

Application package ID

path

yes

Response examples:

200 OK
  binary output.
2.16 应用下架

通过应用ID和应用包ID下架应用。

URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/unpublish
METHOD: POST
名称 描述 IN 必选
appId 应用ID path yes
packageId 应用包ID path yes
userId 用户Id request param yes
userName 用户名 request param yes

Response examples:

200 OK
  Unpublish Success.

3.Comments

Users can comment on apps.

3.1 List of acquisition comments

Get a list of comments that apply based on the application ID.

URI: /mec/appstore/v1/apps/{appId}/comments
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

Response examples:

200 OK
[
  {
    "commentId": 0,
    "user": {
      "userId": "string",
      "userName": "string",
      "permissions": [
        {
          "platform": "string",
          "role": "string",
          "pageIds": [
            "string"
          ]
        }
      ],
      "company": "string",
      "gender": "string",
      "telephone": "string"
    },
    "appId": "string",
    "body": "string",
    "score": 0,
    "commentTime": "string"
  }
]
3.2 Submit comments

Users submit application scores and comments based on the application ID.

URI: /mec/appstore/v1/apps/{appId}/comments
METHOD: POST

name

describe

IN

compulsory choice

userId

User ID

request param

yes

userName

application name

request param

yes

appId

Application ID

path

yes

entity

Comment content and scoring

request body

yes

Example of entity request body:

{
  "body": "string",
  "score": 0
}

Response examples:

200 OK
 "comments success."
3.3 Get comment list-v2

Get a list of comments that apply based on the application ID.

URI: /mec/appstore/v2/apps/{appId}/comments
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

path

yes

offset

Paging query start page, starting from 0

request param

yes

limit

Paging query The number of queries per page [1,500]

request param

yes

Response examples:

200 OK
{
    "results": [
        {
            "commentId": 0,
            "user": {
                "userId": "string",
                "userName": "string",
                "permissions": [
                    {
                        "platform": "string",
                        "role": "string",
                        "pageIds": [
                            "string"
                        ]
                    }
                ],
                "company": "string",
                "gender": "string",
                "telephone": "string"
            },
            "appId": "string",
            "body": "string",
            "score": 0,
            "commentTime": "string"
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 1
}

4.Application push

Users can push applications to carriers or third parties.

4.1 Query the list of pushable applications

Query the list of apps that can be pushed.

URI: /mec/appstore/v1/packages/pushable
METHOD: GET

Response examples:

200 OK
[
  {
    "appId": "string",
    "packageId": "string",
    "name": "string",
    "provider": "string",
    "version": "string",
    "atpTestStatus": "string",
    "atpTestTaskId": "string",
    "atpTestReportUrl": "string",
    "latestPushTime": "string",
    "pushTimes": "string",
    "targetPlatform": "string",
    "affinity": "string",
    "shortDesc": "string",
    "industry": "string",
    "type": "string",
    "createTime": "string"
  }
]
4.2 Get pushes app

Get the push app based on packageId.

URI: /mec/appstore/v1/packages/{packageId}/pushable
METHOD: GET

name

describe

IN

compulsory choice

packageId

Application package ID

path

yes

Response examples:

200 OK
[
  {
    "appId": "string",
    "packageId": "string",
    "name": "string",
    "provider": "string",
    "version": "string",
    "atpTestStatus": "string",
    "atpTestTaskId": "string",
    "atpTestReportUrl": "string",
    "latestPushTime": "string",
    "pushTimes": "string",
    "targetPlatform": "string",
    "affinity": "string",
    "shortDesc": "string",
    "industry": "string",
    "type": "string",
    "createTime": "string"
  }
]
4.3 Push application package

Push the application based on the packageId.

URI: /mec/appstore/v1/packages/{packageId}/action/push
METHOD: POST

name

describe

IN

compulsory choice

packageId

Application package ID

path

yes

dto

List of operators

request param

yes

Response examples:

200 OK
  [true, false, true]
4.4 Download push app

Download the push app based on the packageId.

URI: /mec/appstore/v1/packages/{packageId}/action/download-package
METHOD: GET

name

describe

IN

compulsory choice

packageId

Application package ID

path

yes

Response examples:

200 OK
  binary output.
4.5 Download push app icon

Download the push app icon based on the packageId.

URI: /mec/appstore/v1/packages/{packageId}/action/download-icon
METHOD: GET

name

describe

IN

compulsory choice

packageId

Application package ID

path

yes

Response examples:

200 OK
  binary output.
4.6 Query the list of pushable applications-v2

Query the list of apps that can be pushed.

URI: /mec/appstore/v2/packages/pushable
METHOD: GET

name

describe

IN

compulsory choice

limit

Paging query The number of queries per page [1,500]

request param

yes

offset

Paging query start page, starting from 0

request param

yes

sortItem

Query sort field

request param

no

sortType

Query sorting method ascending/descending

request param

no

appName

application name

request param

no

Response examples:

200 OK
{
    "results": [
        {
            "appId": "string",
            "packageId": "string",
            "name": "string",
            "provider": "string",
            "version": "string",
            "atpTestStatus": "string",
            "atpTestTaskId": "string",
            "atpTestReportUrl": "string",
            "latestPushTime": "string",
            "pushTimes": 2,
            "sourcePlatform": "string",
            "targetPlatform": "string",
            "affinity": "string",
            "shortDesc": "string",
            "industry": "string",
            "type": "string",
            "createTime": "string",
            "deployMode": "string"
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 9
}

5.Warehouse management

Pruning the application warehouse.

5.1 Add to warehouse

Add an external application warehouse.

URI: /mec/appstore/v1/appstores
METHOD: POST

name

describe

IN

compulsory choice

appStoreName

Warehouse Name

request param

yes

appStoreVersion

Warehouse Version

request param

yes

company

Company Name

request param

yes

url

Access address

request param

yes

schema

Access agreements

request param

no

appPushIntf

Push mode

request param

no

appdTransId

Translator id

request param

yes

description

describe

request param

no

Response examples:

200 OK
  {
    "appStoreId": "string",
    "appStoreName": "string",
    "appStoreVersion": "string",
    "company": "string",
    "url": "string",
    "schema": "string",
    "appPushIntf": "string",
    "appdTransId": "string",
    "description": "string",
    "addedTime": "string",
    "modifiedTime": "string"
  }
5.2 Delete warehouse

Deletes an external application warehouse.

URI: /mec/appstore/v1/appstores/{appStoreId}
METHOD: DELETE

name

describe

IN

compulsory choice

appStoreId

Warehouse id

path

yes

Response examples:

200 OK
  delete success
5.3 Modification of warehouse

Modify the external application warehouse.

URI: /mec/appstore/v1/appstores/{appStoreId}
METHOD: PUT

name

describe

IN

compulsory choice

appStoreId

Warehouse Name

path

yes

appStoreName

Warehouse Name

request param

yes

appStoreVersion

Warehouse Version

request param

yes

company

Company Name

request param

yes

url

Access address

request param

yes

schema

Access agreements

request param

no

appPushIntf

Push mode

request param

no

appdTransId

Translator id

request param

yes

description

describe

request param

no

Response examples:

200 OK
  {
    "appStoreId": "string",
    "appStoreName": "string",
    "appStoreVersion": "string",
    "company": "string",
    "url": "string",
    "schema": "string",
    "appPushIntf": "string",
    "appdTransId": "string",
    "description": "string",
    "addedTime": "string",
    "modifiedTime": "string"
  }
5.4 Query warehouse list

Query the list of external application warehouses.

URI: /mec/appstore/v1/appstores
METHOD: GET

name

describe

IN

compulsory choice

appStoreName

Warehouse Name

request param

yes

company

Company Name

request param

yes

Response examples:

200 OK
[
  {
    "appStoreId": "string",
    "appStoreName": "string",
    "appStoreVersion": "string",
    "company": "string",
    "url": "string",
    "schema": "string",
    "appPushIntf": "string",
    "appdTransId": "string",
    "description": "string",
    "addedTime": "string",
    "modifiedTime": "string"
  }
]
5.5 Query warehouse

Query the external application warehouse.

URI: /mec/appstore/v1/appstores/{appStoreId}
METHOD: GET

name

describe

IN

compulsory choice

appStoreId

Warehouse Name

path

yes

Response examples:

200 OK
  {
    "appStoreId": "string",
    "appStoreName": "string",
    "appStoreVersion": "string",
    "company": "string",
    "url": "string",
    "schema": "string",
    "appPushIntf": "string",
    "appdTransId": "string",
    "description": "string",
    "addedTime": "string",
    "modifiedTime": "string"
  }
5.6 List of warehouse queries

Query the list of external application warehouses.

URI: /mec/appstore/v2/appstores
METHOD: GET

name

describe

IN

compulsory choice

appStoreName

Warehouse Name

request param

yes

company

Company Name

request param

yes

limit

Paging query The number of queries per page [1,500]

request param

yes

offset

Paging query start page, starting from 0

request param

yes

Response examples:

200 OK
{
    "results": [
        {
            "appStoreId": "string",
            "appStoreName": "string",
            "appStoreVersion": "string",
            "company": "string",
            "url": "string",
            "schema": "string",
            "appPushIntf": "string",
            "appdTransId": "string",
            "description": "string",
            "addedTime": "string",
            "modifiedTime": "string"
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 2
}

6.Information

The message includes information such as application push, download, notification and so on.

6.1 Add message

Add a message.

URI: /mec/appstore/v1/messages
METHOD: POST

name

describe

IN

compulsory choice

basicInfo

Basic information

request param

yes

sourceAppStore

Source AppStore

request param

yes

targetAppStore

Target AppStore

request param

yes

atpTestStatus

ATP Test Results

request param

yes

atpTestTaskId

ATP Test Task Id

request param

yes

atpTestReportUrl

ATP Test Report

request param

yes

packageDownloadUrl

App Download Address

request param

yes

iconDownloadUrl

Application Icon Download Address

request param

yes

Response examples:

200 OK
  add a message success
6.2 Get all the information

Obtaining information according to the message type.

URI: /mec/appstore/v1/messages
METHOD: GET

name

describe

IN

compulsory choice

messageType

Message Type

request param

no

Response examples:

200 OK
[
  {
    "messageId": "string",
    "basicInfo": {
      "name": "string",
      "provider": "string",
      "version": "string",
      "affinity": "string",
      "shortDesc": "string",
      "industry": "string",
      "type": "string"
    },
    "messageType": "string",
    "sourceAppStore": "string",
    "targetAppStore": "string",
    "time": "string",
    "description": "string",
    "atpTestStatus": "string",
    "atpTestTaskId": "string",
    "atpTestReportUrl": "string",
    "iconDownloadUrl": "string",
    "readed": true
  }
]
6.3 Access to information

Get the message according to message id.

URI: /mec/appstore/v1/messages/{messageId}
METHOD: GET

name

describe

IN

compulsory choice

messageId

Message id

request param

yes

Response examples:

200 OK
  {
    "messageId": "string",
    "basicInfo": {
      "name": "string",
      "provider": "string",
      "version": "string",
      "affinity": "string",
      "shortDesc": "string",
      "industry": "string",
      "type": "string"
    },
    "messageType": "string",
    "sourceAppStore": "string",
    "targetAppStore": "string",
    "time": "string",
    "description": "string",
    "atpTestStatus": "string",
    "atpTestTaskId": "string",
    "atpTestReportUrl": "string",
    "iconDownloadUrl": "string",
    "readed": true
  }
6.4 Delete message

Deletes a message according to message id.

URI: /mec/appstore/v1/messages/{messageId}
METHOD: DELETE

name

describe

IN

compulsory choice

messageId

Message id

request param

yes

Response examples:

200 OK
  delete success
6.5 Receiving information

Download the app-related information according to message id.

URI: /mec/appstore/v1/messages/{messageId}/action/download
METHOD: GET

name

describe

IN

compulsory choice

messageId

Message id

request param

yes

request

Request body

request param

yes

Response examples:

200 OK
  success
6.6 Update Status

Update the message status according to message id.

URI: /mec/appstore/v1/messages/{messageId}/action/readed
METHOD: PUT

name

describe

IN

compulsory choice

messageId

Message id

request param

yes

Response examples:

200 OK
  success
6.7 Add Message-v2

Add a message.

URI: /mec/appstore/v2/messages
METHOD: POST

name

describe

IN

compulsory choice

basicInfo

Basic information

request param

yes

sourceAppStore

Source AppStore

request param

yes

targetAppStore

Target AppStore

request param

yes

atpTestStatus

ATP Test Results

request param

yes

atpTestTaskId

ATP Test Task Id

request param

yes

atpTestReportUrl

ATP Test Report

request param

yes

packageDownloadUrl

App Download Address

request param

yes

iconDownloadUrl

Application Icon Download Address

request param

yes

Response examples:

200 OK
  {
    "data": "add a message success",
    "retCode": 0,
    "params": "[string]",
    "message": "string"
  }
6.8 Get all messages-v2

Get messages in pages according to query conditions.

URI: /mec/appstore/v2/messages/action/query
METHOD: POST

Request parameters:

name

describe

IN

compulsory choice

QueryMessageReqDto

Query conditions

request body

yes

QueryMessageReqDto

Field name

describe

Field Type

compulsory choice

messageType

Message Type

String

no

limit

Paging query The number of queries per page [1,500]

int

yes

offset

Paging query start page, starting from 0

int

yes

sortItem

Query sort field

String

no

sortType

Query sorting method ascending/descending

String

no

appName

application name

String

no

timeFlag

Message time mark, enumerated values are: today, within a week, within a month and earlier

enum

no

allMessage

6.2 Get all the information

boolean

yes

readable

When not getting all messages, get read/unread messages

boolean

yes

Response examples:

200 OK
{
    "results": [
        {
            "messageId": "string",
            "basicInfo": {
                "name": "string",
                "provider": "string",
                "version": "string",
                "affinity": "string",
                "shortDesc": "string",
                "industry": "string",
                "type": "string"
            },
            "messageType": "string",
            "sourceAppStore": "string",
            "targetAppStore": "string",
            "time": "string",
            "description": "string",
            "atpTestStatus": "string",
            "atpTestTaskId": "string",
            "atpTestReportUrl": "string",
            "iconDownloadUrl": "string",
            "readed": true
        }
    ],
    "limit": 8,
    "offset": 0,
    "total": 2
}

7.Application pulling

Users can pull applications from operators or third-party warehouses.

7.1 Inquivable application list

Query the list of applications that can be pulled.

URI: /mec/appstore/v1/packages/pullable
METHOD: GET

Response examples:

200 OK
[
  {
    "appId": "string",
    "packageId": "string",
    "name": "string",
    "provider": "string",
    "version": "string",
    "atpTestStatus": "string",
    "atpTestTaskId": "string",
    "atpTestReportUrl": "string",
    "latestPushTime": "string",
    "pushTimes": "string",
    "targetPlatform": "string",
    "affinity": "string",
    "shortDesc": "string",
    "industry": "string",
    "type": "string",
    "createTime": "string"
  }
]
7.2 Get external application warehouse to pull application list

Obtaining an external warehouse according to the platfromId to pull the application list.

URI: /mec/appstore/v1/packages/{platformId}/pullable
METHOD: GET

name

describe

IN

compulsory choice

platformId

External application warehouse ID

path

yes

Response examples:

200 OK
[
  {
    "appId": "string",
    "packageId": "string",
    "name": "string",
    "provider": "string",
    "version": "string",
    "atpTestStatus": "string",
    "atpTestTaskId": "string",
    "atpTestReportUrl": "string",
    "latestPushTime": "string",
    "pushTimes": "string",
    "targetPlatform": "string",
    "affinity": "string",
    "shortDesc": "string",
    "industry": "string",
    "type": "string",
    "createTime": "string"
  }
]
7.3 Lafetch application package

According to the packageId pull application package.

URI: /mec/appstore/v1/packages/{packageId}/action/pull
METHOD: POST

name

describe

IN

compulsory choice

packageId

Application package ID

path

yes

PullAppReqDto

Pull request

request body

yes

PullAppReqDto:

Field name

describe

Message Type

compulsory choice

sourceStoreId

Warehouse id

string

yes

sourceStoreName

Warehouse Name

string

yes

name

application name

string

yes

provider

Application provider

string

yes

version

App version

string

yes

atpTestStatus

Get the working status of the application.

string

yes

affinity

Architecture

string

yes

shortDesc

Description of application

string

yes

showType

Type of application

string

yes

industry

Application to industry

string

yes

type

Type of application

string

yes

userId

User ID

string

yes

userName

User name

string

yes

Response examples:

200 OK
  true
7.4 Paging query to pull application list-v2

Paging to query the list of applications that can be pulled.

URI: /mec/appstore/v2/packages/pullable
METHOD: GET

name

describe

IN

compulsory choice

limit

Paging query The number of queries per page [1,500]

request param

yes

offset

Paging query start page, starting from 0

request param

yes

sortItem

Query sort field

request param

no

sortType

Query sorting method ascending/descending

request param

no

appName

application name

request param

no

Response examples:

200 OK
{
    "results": [
        {
            "appId": "string",
            "packageId": "string",
            "name": "string",
            "provider": "string",
            "version": "string",
            "atpTestStatus": "string",
            "atpTestTaskId": "string",
            "atpTestReportUrl": "string",
            "latestPushTime": "string",
            "pushTimes": "string",
            "targetPlatform": "string",
            "affinity": "string",
            "shortDesc": "string",
            "industry": "string",
            "type": "string",
            "createTime": "string"
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 2
}
7.5 Get the list of applications that can be pulled from the external application repository-v2

Obtaining an external warehouse according to the platfromId to pull the application list.

URI: /mec/appstore/v2/packages/{platfromId}/pullable
METHOD: GET

name

describe

IN

compulsory choice

platformId

External application warehouse ID

path

yes

limit

Paging query The number of queries per page [1,500]

request param

yes

offset

Paging query start page, starting from 0

request param

yes

sortItem

Query sort field

request param

no

sortType

Query sorting method ascending/descending

request param

no

appName

application name

request param

no

Response examples:

200 OK
{
    "results": [
        {
            "appId": "string",
            "packageId": "string",
            "name": "string",
            "provider": "string",
            "version": "string",
            "atpTestStatus": "string",
            "atpTestTaskId": "string",
            "atpTestReportUrl": "string",
            "latestPushTime": "string",
            "pushTimes": "string",
            "targetPlatform": "string",
            "affinity": "string",
            "shortDesc": "string",
            "industry": "string",
            "type": "string",
            "createTime": "string"
        }
    ],
    "limit": 1,
    "offset": 0,
    "total": 2
}

8.Sandbox Management

Manage the sandbox environment.

8.1 Query the sandbox environment list

Query the list of sandbox environments.

URI: /mec/appstore/v1/system/hosts
METHOD: GET

name

describe

IN

compulsory choice

userId

User ID

request param

no

name

Manage the sandbox environment.

request param

no

ip

Manage the sandbox environment.

request param

no

Response examples:

200 OK
[
  {
    "hostId": "string",
    "name": "string",
    "address": "string",
    "architecture": "string",
    "status": "NORMAL",
    "lcmIp": "string",
    "mecHost": "string",
    "protocol": "string",
    "port": 0,
    "os": "string",
    "parameter":"string",
    "portRangeMin": 0,
    "portRangeMax": 0
  }
]
8.2 Query the sandbox environment

Query the sandbox environment based on hostId.

URI: /mec/appstore/v1/system/hosts/{hostId}
METHOD: GET

name

describe

IN

compulsory choice

hostId

Manage the sandbox environment.

path

yes

Response examples:

200 OK

 {
   "hostId": "string",
   "name": "string",
   "address": "string",
   "architecture": "string",
   "status": "NORMAL",
   "lcmIp": "string",
   "mecHost": "string",
   "protocol": "string",
   "port": 0,
   "os": "string",
   "parameter":"string",
   "portRangeMin": 0,
   "portRangeMax": 0
 }

8.3 Add a sandbox environment

Add a sandbox environment.

URI: /mec/appstore/v1/system/hosts
METHOD: POST

name

describe

IN

compulsory choice

MepHost

Sandbox management request structure

request body

yes

MepHost
{
  "name": "string",
  "address": "string",
  "architecture": "string",
  "status": "NORMAL",
  "lcmIp": "string",
  "mecHost": "string",
  "protocol": "string",
  "port": 0,
  "os": "string",
  "parameter":"string",
  "portRangeMin": 0,
  "portRangeMax": 0
}

Response examples:

200 OK
true
8.4 Delete sandbox environment

Delete the sandbox environment based on hostId.

URI: /mec/appstore/v1/system/hosts/{hostId}
METHOD: DELETE

name

describe

IN

compulsory choice

hostId

Manage the sandbox environment.

path

yes

Response examples:

200 OK
true
8.5 Modify the sandbox environment

Modify the sandbox environment based on hostId.

URI: /mec/appstore/v1/system/hosts/{hostId}
METHOD: PUT

name

describe

IN

compulsory choice

hostId

Manage the sandbox environment.

path

yes

MepHost

Sandbox management request structure

request body

yes

MepHost
{
  "hostId": "string",
  "name": "string",
  "address": "string",
:se  "architecture": "string",
  "status": "NORMAL",
  "lcmIp": "string",
  "mecHost": "string",
  "protocol": "string",
  "port": 0,
  "os": "string",
  "parameter":"string",
  "portRangeMin": 0,
  "portRangeMax": 0
}

Response examples:

200 OK
true
8.6 Upload sandbox environment configuration file

Upload the sandbox environment configuration file.

URI: /mec/appstore/v1/system/host/files
METHOD: POST

name

describe

IN

compulsory choice

uploadFile

Papers

request body form

yes

userId

User ID

request param

yes

Response examples:

200 OK
{
  "fileId": "string",
  "fileName": "string",
  "url": "string",
  "userId": "string",
  "uploadDate": "2020-09-14T09:03:17.084Z",
  "filePath": "string",
  "temp": false
}

9.App online experience

You can experience the application online

9.1 Instantiate the application

Instantiate the application and start applying the online experience.

URI: /mec/appstore/v1/experience/deploy
METHOD: GET

name

describe

IN

compulsory choice

appId

Application ID

request param

no

packageId

Application package ID

request param

no

userId

User ID

request param

no

name

Manage the sandbox environment.

request param

no

ip

Manage the sandbox environment.

request param

no

Response examples:

200 OK
{
    "data": "[{"serviceName":"testApp","serviceName":"30258","mecHost":"127.0.0.1"}]",
    "retCode": 0,
    "params": "[string]",
    "message": "string"
}
9.2 Release resources

The experience is complete and resources are released.

URI: /mec/appstore/v1/experience/clean
METHOD: POST

name

describe

IN

compulsory choice

packageId

Application package ID

request param

yes

userId

User ID

request param

no

name

Manage the sandbox environment.

request param

no

ip

Manage the sandbox environment.

request param

no

Response examples:

200 OK
true
9.3 Access to applications

Get the working status of the application.

URI: /mec/appstore/v1/experience/container/workStatus
METHOD: POST

name

describe

IN

compulsory choice

packageId

Application package ID

request param

no

userId

User ID

request param

no

name

Manage the sandbox environment.

request param

no

ip

Manage the sandbox environment.

request param

no

Response examples:

200 OK
{
    "data": "[{"serviceName":"testApp","serviceName":"30258","mecHost":"127.0.0.1"}]",
    "retCode": 0,
    "params": "[string]",
    "message": "string"
}

10. 应用变现

The application can be priced when the application is released, and the application can be monetized.

10.1 Order application

Create Order.

URI: /mec/appstore/v1/orders
METHOD: POST

name

describe

IN

compulsory choice

appId

APPID

request body

Yes

appPackageId

APP package ID

request body

Yes

appName

application name

request body

Yes

mecHostIp

Edge Node IP

request body

Yes

mecHostCity

edge node location

request body

Yes

Response examples:

response 200 OK
{
  "data": {
      "orderId": "",
      "orderNum": "",
  },
  "retCode": 0,
  "params": ["", ""],
  "message": ""
}
10.2 Unsubscribe from apps

Unsubscribe the order.

URI: /mec/appstore/v1/orders/{orderId}/deactivation
METHOD: POST

name

describe

IN

compulsory choice

orderId

Order ID

path param

Yes

Response examples:

response 200 OK
{
  "data": null,
  "retCode": 0,
  "params": ["", ""],
  "message": ""
}
10.3 Activate order

Activate the order.

URI: /mec/appstore/v1/orders/{orderId}/activation
METHOD: POST

name

describe

IN

compulsory choice

orderId

Order ID

path param

Yes

Response examples:

response 200 OK
{
  "data": null,
  "retCode": 0,
  "params": ["", ""],
  "message": ""
}
10.4 Query order list

Get a list of orders.

URI: /mec/appstore/v1/orders/list
METHOD: POST

name

describe

IN

compulsory choice

appId

Application ID

request body

no

orderNum

order number

request body

no

status

Order Status

request body

no

orderTimeBegin

The start time of the order time range

request body

no

orderTimeEnd

The end time of the order time range

request body

no

QueryCtrlDto

Query conditions

request body

Yes

QueryCtrlDto

Field name

describe

Field Type

compulsory choice

limit

Paging query The number of queries per page [1,500]

int

yes

offset

Paging query start page, starting from 0

int

yes

sortItem

Query sort field

String

no

sortType

Query sorting method ascending/descending

String

no

Response examples:

response 200 OK
{
  "results": [
    {
      "orderId": "",
      "orderNum": "",
      "userId": "",
      "userName": "",
      "appId": "",
      "appName": "",
      "orderTime": "",
      "operateTime": "",
      "status": "",
      "mecHostIp": "",
      "mecHostCity": "",
      "detail": ""
    },
    {...}
  ],
  "offset": 0,
  "limit": 20,
  "total": 100
}
10.5 Query the list of edge nodes

Get edge node information.

URI: /mec/appstore/v1/mechosts?appId={appId}&packageId={packageId}
METHOD: GET

name

describe

IN

compulsory choice

appId

application Id

request param

no

packageId

application package Id

request param

no

Response examples:

response 200 OK
{
  "data": [
      {
          "mechostIp": "",
          "mechostName": "",
          "mechostCity": "",
          "vim": "",
          "affinity": ""
      }
  ],
  "retCode": 0,
  "params": ["", ""],
  "message": ""
}

Database design

The AppStore database uses open-source PostgreSQL databases with a recommended version of 12.2. The following database tables are currently designed and applied:

  • app_table Stores app information such as name, provider, description, etc.

create TABLE if not exists app_table (
        APPID                    VARCHAR(200)       NOT NULL,
        APPNAME                  VARCHAR(100)       NULL,
        APPLICATIONTYPE          VARCHAR(300)       NULL,
        DEPLOYMODE               VARCHAR(100)       NULL,
        SHORTDESC                TEXT               NULL,
        PROVIDER                 VARCHAR(300)       NULL,
        APPINTRODUCTION          TEXT               NULL,
        DOWNLOADCOUNT            INT                NULL,
        AFFINITY                 VARCHAR(100)       NULL,
        INDUSTRY                 VARCHAR(100)       NULL,
        CONTACT                  VARCHAR(100)       NULL,
        USERID                   VARCHAR(100)       NULL,
        USERNAME                 VARCHAR(100)       NULL,
        CREATETIME               TIMESTAMP          NULL,
        MODIFYTIME               TIMESTAMP          NULL,
        SCORE                    NUMERIC(2,1)       NULL,
        STATUS                   VARCHAR(50)        NULL,
        SHOWTYPE                 VARCHAR(100)       NOT NULL DEFAULT 'public',
        ISHOTAPP                 boolean            DEFAULT false,
        EXPERIENCEABLE           boolean            DEFAULT false,
        CONSTRAINT app_table_pkey PRIMARY KEY (APPID)
    );
  • catalog_package_table Package information for storage applications, one application can have multiple package

create TABLE if not exists catalog_package_table (
        PACKAGEID                VARCHAR(200)       NOT NULL,
        PACKAGEADDRESS           VARCHAR(200)       NULL,
        ICONADDRESS              VARCHAR(200)       NULL,
        DEMOVIDEOADDRESS         VARCHAR(200)       NULL,
        SIZE                     VARCHAR(100)       NULL,
        FILESTRUCTURE            TEXT               NULL,
        CREATETIME               TIMESTAMP          NULL,
        SHORTDESC                TEXT               NULL,
        APPNAME                  VARCHAR(100)       NULL,
        VERSION                  VARCHAR(20)        NULL,
        APPLICATIONTYPE          VARCHAR(300)       NULL,
        DEPLOYMODE               VARCHAR(100)       NULL,
        MARKDOWNCONTENT          TEXT               NULL,
        AFFINITY                 VARCHAR(100)       NULL,
        INDUSTRY                 VARCHAR(100)       NULL,
        CONTACT                  VARCHAR(100)       NULL,
        APPID                    VARCHAR(100)       NULL,
        USERID                   VARCHAR(100)       NULL,
        USERNAME                 VARCHAR(100)       NULL,
        TESTTASKID               VARCHAR(100)       NULL,
        STATUS                   VARCHAR(100)       NULL,
        PROVIDER                 VARCHAR(100)       NULL,
        SHOWTYPE                 VARCHAR(100)       NOT NULL DEFAULT 'public',
        APPINSTANCEID            VARCHAR(100)       NULL,
        INSTANCETENENTID         VARCHAR(100)       NULL,
        INSTANCEPACKAGEID        VARCHAR(255)       NULL,
        EXPERIENCEABLE           boolean            DEFAULT false,
        STARTEXPTIME             VARCHAR(100)       NULL,
        EXPERIENCEABLEIP         VARCHAR(100)       NULL,
        MECHOST                  VARCHAR(100)       NULL,
        CONSTRAINT catalog_package_table_pkey PRIMARY KEY (PACKAGEID)
    );
  • csar_package_score Comments information for storage applications

create TABLE if not exists csar_package_score (
        COMMENTID                serial,
        USERID                   VARCHAR(100)       NULL,
        USERNAME                 VARCHAR(100)       NULL,
        APPID                    VARCHAR(200)       NOT NULL,
        COMMENTS                 TEXT               NULL,
        SCORE                    NUMERIC(2,1)       NULL,
        COMMENTTIME              TIMESTAMP          NULL,
        CONSTRAINT csar_package_score_pkey PRIMARY KEY (COMMENTID)
    );
  • app_store_table Stores external appstore information

create TABLE if not exists app_store_table (
        APPSTOREID               VARCHAR(64)        NOT NULL,
        APPSTORENAME             VARCHAR(128)       NULL,
        APPSTOREVERSION          VARCHAR(64)        NOT NULL,
        COMPANY                  VARCHAR(128)       NULL,
        URL                      VARCHAR(256)       NOT NULL,
        SCHEMA                   VARCHAR(16)        NULL,
        APPPUSHINTF              VARCHAR(256)       NULL,
        APPDTRANSID               VARCHAR(64)        NULL,
        DESCRIPTION              VARCHAR(256)       NULL,
        ADDEDTIME                TIMESTAMP          NOT NULL,
        MODIFIEDTIME             TIMESTAMP          NULL,
        CONSTRAINT app_store_table_pkey PRIMARY KEY (APPSTOREID)
    );
  • pushable_package_table Stores information about pushable application packages

create TABLE if not exists pushable_package_table (
        PACKAGEID  VARCHAR(64) NOT NULL,
        ATPTESTREPORTURL VARCHAR(100) NOT NULL,
        LATESTPUSHTIME TIMESTAMP NOT NULL,
        PUSHTIMES INTEGER NOT NULL DEFAULT 0,
        SOURCEPLATFORM VARCHAR(100) NOT NULL,
        CONSTRAINT PUSHABLE_PACKAGE_TABLE_PKEY PRIMARY KEY (PACKAGEID)
    );
  • message_table Stores messages during intercommunication between appstores

create TABLE if not exists message_table (
        MESSAGEID                VARCHAR(100)       NOT NULL,
        RESULT                   VARCHAR(100)       NULL,
        READED                   boolean            default false,
        NAME                     VARCHAR(100)       NULL,
        PROVIDER                 VARCHAR(100)       NULL,
        VERSION                  VARCHAR(100)       NULL,
        MESSAGETYPE              VARCHAR(20)        NULL,
        SOURCEAPPSTORE           VARCHAR(100)       NULL,
        TARGETAPPSTORE           VARCHAR(100)       NULL,
        TIME                     VARCHAR(100)       NULL,
        DESCRIPTION              VARCHAR(255)       NULL,
        ATPTESTSTATUS            VARCHAR(50)        NULL,
        ATPTESTTASKID            VARCHAR(100)       NULL,
        ATPTESTREPORTURL         VARCHAR(255)       NULL,
        PACKAGEDOWNLOADURL       VARCHAR(255)       NULL,
        ICONDOWNLOADURL          VARCHAR(255)       NULL,
        DEMOVIDEODOWNLOADURL     VARCHAR(255)       NULL,
        AFFINITY                 VARCHAR(100)       NULL,
        SHORTDESC                TEXT               NULL,
        INDUSTRY                 VARCHAR(100)       NULL,
        TYPE                     VARCHAR(50)        NULL,
        CONSTRAINT message_table_pkey PRIMARY KEY (MESSAGEID)
    );
  • tbl_service_host Stores sandbox environment information

create TABLE if not exists tbl_service_host (
        HOST_ID VARCHAR(50) NOT NULL,
        USER_ID VARCHAR(50) DEFAULT NULL,
        NAME VARCHAR(100) DEFAULT NULL,
        ADDRESS VARCHAR(255) DEFAULT NULL,
        ARCHITECTURE VARCHAR(100) DEFAULT NULL,
        STATUS VARCHAR(20) DEFAULT NULL,
        PROTOCOL VARCHAR(20) DEFAULT NULL,
        LCM_IP VARCHAR(20) DEFAULT NULL,
        MEC_HOST VARCHAR(20) DEFAULT NULL,
        OS VARCHAR(255) DEFAULT NULL,
        PORT_RANGE_MIN INTEGER DEFAULT 0,
        PORT_RANGE_MAX INTEGER DEFAULT 0,
        PORT INTEGER DEFAULT 0,
        VNC_PORT INTEGER DEFAULT NULL,
        PARAMETER text DEFAULT NULL,
        DELETE BOOLEAN DEFAULT NULL
    );
  • tbl_service_host Stores sandbox environment information

create TABLE if not exists tbl_uploaded_file (
        FILE_ID VARCHAR(50) NOT NULL DEFAULT NULL,
        FILE_NAME VARCHAR(255) DEFAULT NULL,
        IS_TEMP BOOL DEFAULT NULL,
        USER_ID VARCHAR(50) DEFAULT NULL,
        UPLOAD_DATE TIMESTAMPTZ(6) DEFAULT NULL,
        FILE_PATH VARCHAR(255) DEFAULT NULL,
        CONSTRAINT TBL_UPLOADED_FILE_PKEY PRIMARY KEY (FILE_ID)
    );

How to contribute

This paper will show users how to participate in the contribution of the AppStore project, which is divided into two parts, which will separately describe how to build the local development environment and the operating guidance of the AppStore.

Set up a local development environment

This section will guide users on how to build the AppStore-be and AppStore-fe modules locally, helping developers to quickly understand and develop code.

AppStore-be’s local activation depends on:

- Service center
- DataBase
- User Management

AppStore-fe’s local startup relies on:

- Website Gateway
- User Management
- AppStore-be

So to build a local development environment, the final start sequence is Service Center -> DataBase -> User Management -> AppStore-be -> Website Gateway (AppStore-fe)

Service Center

1.Download Service Center

!

2.Run the start-service-center.bat and start-frontend.bat after decompression

DataBase

1.Download, install and start Postgresql 12.3

2.setting the login name and password, such as postgresql/root

3.Create a database called appstoredb

4.Create a database called usermgmtdb

User Management

1.Download user-mgmt-be code and user-mgmt-fe code

2.Install node.js and npm, enter the user-mgmt-fe folder, and run npm install and npm run build

3.Create a static folder in the src/main/resources/ folder of user-mgmt-be

4.Copy the contents of the dist folder compiled by user-mgmt-fe to the static folder of user-mgmt-be

5.Configure the runtime environment variables of MainServer in the compiler (here, taking IDEA as an example)

6.Run the MainServer function and start UserManagement

AppStore-be

1.Download the appstore-be code

2.Modify servicecomb.rest.address to 127.0.0.1:8099 in appstore-be in /src/main/resources/application.yaml document

3.Configure runtime environment variables for MainServer in the compiler (where IDEA is used as an example)

4.Run the MainServer function and start appstore-be

AppStore-fe

1.Download appstore-fe code

2.Enter appstore-fe folder, run npm install and npm run build

3.Download the website-gateway code

4.Create a static folder in the src/main/resources/ folder on website-gateway

5.Copy the content in the dist folder compiled by appstore-fe to the static folder of website-gateway

6.Modify server.port in the /src/main/resources/application.yaml document in the website-gateway 8080 (the port in the OAUTH_APPSTORE_CLIENT_URL variable that is completed at startup of usermgmt) is consistent)

7.Configuring runtime environment variables for GatewayApplication in compiler (here, IDEA as an example)

8.Run GatewayApplication to launch WebiteGateway with AppStore-fe, browser access to http://127.0.0.1:8080/ to access the AppStore homepage

Operating guidance

AppStore is a market for developers publishing and onboarding App applications, edge applications developed by Developer Platform and tested can be shared directly to the AppStore app store.It is also possible to directly upload an application package that conforms to the platform specification and the application package document type is csr. One APP corresponds to multiple packages, the user can download the latest version of the APP directly or download the specified version of Package.

Login application platform

进入网址后,默认为guest用户,可以查看信息。如果要进行更多操作(如上传应用)还需注册账号,注册完成,使用该账户登录之后便可进入应用平台首页: 输入图片说明 输入图片说明 输入图片说明 输入图片说明

Check the app
  1. The right side operation in the basic information can only download the packet uploaded by itself. The administrator user can download all the published bags and the uploaded bags.

  2. 如需对APP进行评论,可以在评论区输入评论,设置评分,鼠标左键点击按钮后,评论提交成功。 输入图片说明 输入图片说明 输入图片说明

Publish application

1.上传APP,打开APP Store主界面,点击右侧上传图标,打开上传APP对话框。在上传对话框中选择需要上传的APP,上传或选择系统默认提供的APP图标,选择APP行业、类型、架构,填写APP简单描述,点击确认完成上传。 输入图片说明

2.应用上传后,会自动跳转至我的应用界面下,上传的应用需要经过平台的atp测试之后才可以发布到仓库。我的应用下是上传的包的基本信息,表格右侧为基本操作,点击测试按钮,会开始创建测试任务,页面为嵌套的atp测试页面,点击开始测试按钮,解析包的依赖,可以看到具体的测试用例有多少条,点击确定后开始测试,页面为测试进展页面,可以返回到我的应用页面,等待测完成 输入图片说明 输入图片说明 输入图片说明

3.我的应用中测试状态为Test_success(即测试成功)时才能发布应用,点击右侧的发布按钮,发布成功后,在首页可以看到你上传的应用。 输入图片说明 输入图片说明

Shared applications

1.应用共享导航下分为外部应用仓库管理、应用推广、应用拉取、消息中心和操作分析。 输入图片说明

2.外部应用仓库管理页面,可以添加、修改和删除仓库。 输入图片说明

3.点击应用共享主菜单下的应用推送菜单查看可推送的应用信息,选择需要推送给运营商或者第三方的应用,进行批量推送,然后查看应用推送到运营商或者第三方的结果。 输入图片说明 输入图片说明

4.点击应用共享主菜单下的应用拉取菜单查看各个外部仓库可拉取的应用信息,选择需要拉取的应用可进行批量拉取。 输入图片说明 输入图片说明

5.点击应用共享主菜单下的消息中心菜单,查看通知信息,可以接受来自不同运营商需要推送的APP信息。点击消息可以看到消息详情,点击接收按钮可以拉取(下载)该应用的信息,拉取成功的APP可以在“我的应用”界面查看,点击删除按钮则删除该条消息,双击可查看消息详情。 输入图片说明 输入图片说明

6.应用推送成功后切换到右边操作分析tab,在操作分析界面查看对应的信息,同时操作分析界面可以查看不同操作如:拉取、下载、通知、推送等类型的消息。 输入图片说明 输入图片说明

ATP

Overview

  • The application test service provides a detection function for the application package and can be published to the applied commercial city only by using the test case of the application test service.

  • The application testing service is divided into the front and back platforms, atp is the background part, providing the main function interface for the foreground or other three-way system to call, atp-fe is the foreground part, providing the interface display.

  • Application testing services are currently divided into management functions and user functions. The management functions include the management of test scenarios, the management of test suites, the management of test cases, the batch import of model models, the management of test tasks, and the management of contributions, among which contribution management The menu for is only visible to the administrator. Administrators can dynamically add test scenarios, test suites and test cases on the management plane, modify the status of manual use cases in test tasks, and download test cases contributed by script types. For reasonable use cases, they will be added to the platform’s use case set . User interface functions include selecting scenarios to be tested, visualizing the testing process, displaying test reports, and contributing test cases. At present, the functions of the user plane are mainly integrated in the developer platform and the application store, and the generated application package is tested.

  • At present, the test cases cover security test (vulnerability scanning, signature verification, port scanning, virus scanning, etc.), compliance test (application package structure verification), Sandbox test (application deployment, MEP platform service registration update, etc.) and performance test (delay, CPU occupancy, memory occupancy, etc.)

Overall framework description

The EdgeGallery overall framework flow is as follows, the application test platform’s main corresponding graph in the authentication test section.

  • ATP-fe: Developer Platform foreground framework, developed using VUE.

  • ATP: Developer Platform Backstage Framework, developed using SpringBot + ServiceComb.(For ServiceComb, please refer to this: https://servicecomb.apache.org/cn/)

  • ATP DB: Backstage relies on Postgres database.

correspondence relationship between test suites, test scenarios, and test cases

Feature design

The features currently provided by ATP are divided into user-plane features and management-plane features. User interface features include: selection of test scenarios, display of test task progress, test report analysis, test report download, test case contribution and self-test report upload. Management features include: test scenario management, test suite management, test case management, one-click import of test models, test task analysis, test task management, contribution management and config item management.

Choose a test scenario

The user can select the test scene to be carried out according to the need and the ATP service executes the test case of the corresponding scene.

Test mission, show progress.

The dynamic display of the implementation of a test task can dynamically see the implementation of each use case under each scene.

Test Report Analysis

Show test report results.The report gives the analysis of the community scene and the test case result of the selected scene, showing the pass rate of each test sleeve, the number of the use routine and the failure reason of the specific test case.

Test Report Download

Provide the test report download function to download the test report as pdf format.

Contribution test cases

The user side supports the entrance of the user contribution test case, supports the user contribution test case script, or contributes the text description of the test case.

Self-test report upload

After the test cases are automatically executed, users can upload self-test reports. If users have application specific tests such as functional tests, they can upload self-test reports. The application test platform will integrate the platform test case execution report and the user uploaded self-test report into one test report display

Test scenario management

Contains the demo, add, delete, modify operation of the test scene.

Test Suite Management

Contains the demo, add, delete, modify operation of the test suite.

Test Case Management

Contains display of test cases, add, delete, modify operations.

One-click import of test models

One can define batches of test scenarios, test suites, and test cases in excel, put test case scripts and test scenario icons in a folder, and finally compress these files into a zip package, and import batch test models in one-click on the management side data.

Test mission analysis

The ATP Management Face home page shows the distribution of the number of test tasks in nearly 6 months and the total number.

Test mission management

Contains the display of the test task and the batch delete operation of the test task.

Contribution management

Contains script-type contribution use case download and contribution batch deletion operations.

Config item management

You can config parameters for a test case to make the test case more flexible

atp Interfaces

1. Task

Test task for application package

1.1 POST create test task

create test task for application package.

Resource URI: /edgegallery/atp/v1/tasks

Name

Definition

Type

Required

file

file

requestpart

yes

Example response:

200 OK
{
   "id":"",
   "packagePath":"",
   "appName":"",
   "appVersion":"",
   "providerId":"",
   "status":"",
   "createTime":123456789,
   "user":{
       "userId":"",
       "userName":""
   }
}

1.2 POST run test task

Run test task by taskId

Resource URI: /edgegallery/atp/v1/tasks/{taskId}/action/run

Name

Definition

Type

Required

taskId

taskId

path param

yes

scenarioIdList

scenarioIdList

request param

yes

Example response:

200 OK
{
  "id": "8ac6e62d-1d20-4193-942e-ece6deff5e4e",
  "appName": "monitor-service",
  "appVersion": "1.0",
  "status": "running",
  "createTime": "2021-03-01T02:42:29.306+0000",
  "endTime": "2021-03-01T02:43:03.943+0000",
  "reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
  "user": {
    "userId": "4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
    "userName": "atp"
  },
  "providerId": "Huawei",
  "testScenarios": [
    {
      "id": "e71718a5-864a-49e5-855a-5805a5e9f97d",
      "nameCh": "中国联通",
      "nameEn": "China Unicom Scenario",
      "label": "China Unicom",
      "testSuites": [
        {
          "id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
          "nameCh": "沙箱测试",
          "nameEn": "Sandbox Test",
          "testCases": [
            {
              "id": "4d203173-5555-4f62-aabb-8ebcec357f87",
              "nameCh": "应用实例化",
              "nameEn": "Application Instantiation",
              "descriptionCh": "将应用包部署到边缘节点",
              "descriptionEn": "Instantiate application and its dependency application on one edge host",
              "type": "automatic",
              "result": "failed",
              "reason": "host ip is empty"
            }
          ]
        }
      ]
    }
  ] 
}

1.3 GET get task list

download one plugin

Resource URI: /edgegallery/atp/v1/tasks

Name

Definition

Type

Required

appName

appName

query param

no

status

status

query param

no

appVersion

appVersion

query param

no

providerId

providerId

query param

no

Example response:

200 OK
[{
  "id": "8ac6e62d-1d20-4193-942e-ece6deff5e4e",
  "appName": "monitor-service",
  "appVersion": "1.0",
  "status": "running",
  "createTime": "2021-03-01T02:42:29.306+0000",
  "endTime": "2021-03-01T02:43:03.943+0000",
  "reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
  "user": {
    "userId": "4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
    "userName": "atp"
  },
  "providerId": "Huawei",
  "testScenarios": [
    {
      "id": "e71718a5-864a-49e5-855a-5805a5e9f97d",
      "nameCh": "中国联通",
      "nameEn": "China Unicom Scenario",
      "label": "China Unicom",
      "testSuites": [
        {
          "id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
          "nameCh": "沙箱测试",
          "nameEn": "Sandbox Test",
          "testCases": [
            {
              "id": "4d203173-5555-4f62-aabb-8ebcec357f87",
              "nameCh": "应用实例化",
              "nameEn": "Application Instantiation",
              "descriptionCh": "将应用包部署到边缘节点",
              "descriptionEn": "Instantiate application and its dependency application on one edge host",
              "type": "automatic",
              "result": "failed",
              "reason": "host ip is empty"
            }
          ]
        }
      ]
    }
  ] 
}]
1.4 GET get one task

get task by taskId

Resource URI: /edgegallery/atp/v1/tasks/{taskId}

Name

Definition

Type

Required

taskId

taskId

path param

yes

Example response:

200 OK
{
  "id": "8ac6e62d-1d20-4193-942e-ece6deff5e4e",
  "appName": "monitor-service",
  "appVersion": "1.0",
  "status": "running",
  "createTime": "2021-03-01T02:42:29.306+0000",
  "endTime": "2021-03-01T02:43:03.943+0000",
  "reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
  "user": {
    "userId": "4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
    "userName": "atp"
  },
  "providerId": "Huawei",
  "testScenarios": [
    {
      "id": "e71718a5-864a-49e5-855a-5805a5e9f97d",
      "nameCh": "中国联通",
      "nameEn": "China Unicom Scenario",
      "label": "China Unicom",
      "testSuites": [
        {
          "id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
          "nameCh": "沙箱测试",
          "nameEn": "Sandbox Test",
          "testCases": [
            {
              "id": "4d203173-5555-4f62-aabb-8ebcec357f87",
              "nameCh": "应用实例化",
              "nameEn": "Application Instantiation",
              "descriptionCh": "将应用包部署到边缘节点",
              "descriptionEn": "Instantiate application and its dependency application on one edge host",
              "type": "automatic",
              "result": "failed",
              "reason": "host ip is empty"
            }
          ]
        }
      ]
    }
  ] 
}

1.5 PUT modify test case status

modify manual test case status

Resource URI: edgegallery/atp/v1/tasks/{taskId}/testcase

Name

Definition

Type

Required

taskId

taskId

path param

yes

Example request:

[{
      "testScenarioId":"",
      "testSuiteId":"",
      "testCaseId":"",
      "result":"" ,
      "reason":""
}]

Example response:

true
1.6 POST batch delete test tasks

batch delete test tasks

Resource URI: edgegallery/atp/v1/tasks/batch_delete

Example request:

{
  "taskIds":["id1","id2"]
}

Example response:

{
   "failed":["id3"]
}

1.7 GET get test tasks analysis

get test tasks analysis

Resource URI: edgegallery/atp/v1/tasks/action/analysize

Example response:

200 OK
 {
   "total":426,
   "currentMonth":11,
   "oneMonthAgo":111,
   "twoMonthAgo":12,
   "threeMonthAgo":13,
   "fourMonthAgo":14,
   "fiveMonthAgo":15
}
1.8 DELETE delete one test task

delete one test task

Resource URI: edgegallery/atp/v1/tasks/{taskId}

Example response:

true
1.9 POST upload self test report

upload self test report

Resource URI: edgegallery/atp/v2/tasks/{taskId}/action/upload-report

Example request:

{
    file: file
} 

Example response:

{
    "data":{
        "path":"reportPath"
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1“
    ]
}

2. Test case

test cases of csar package

2.1 GET query all test cases

query all test cases

Resource URI: /edgegallery/atp/v1/testcases

Name

Definition

Type

Required

type

type

query param

no

name

name

query param

no

locale

locale

query param

no

testSuiteIdList

testSuiteIdList

query param

no

Example response:

200 OK
[{
  "id": "4d203173-9999-4f62-aabb-8ebcec357f87",
  "nameCh": "APPD文件目录校验",
  "nameEn": "APPD File Dir Validation",
  "type": "automatic",
  "descriptionCh": "根目录下必须包含APPD文件目录",
  "descriptionEn": "Root directory must contain APPD file dir",
  "hashCode": "",
  "codeLanguage": "java",
  "expectResultCh": "根目录下存在APPD文件目录",
  "expectResultEn": "Root directory contains APPD file dir",
  "testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
  "testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
  "testSuiteIdList": [
    "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
  ],
  "configIdList": [
    "522684bd-9999-4b47-aab8-b43f1b4c19c0"
  ]
}]

2.2 POST create test case

create test case

Resource URI: /edgegallery/atp/v1/testcases

Name

Definition

Type

Required

nameCh

nameCh

request param

yes

nameEn

nameEn

request param

no

type

type

request param

yes

descriptionCh

descriptionCh

request param

yes

descriptionEn

descriptionEn

request param

no

codeLanguage

codeLanguage

request param

yes

expectResultCh

expectResultCh

request param

yes

expectResultEn

expectResultEn

request param

no

testSuiteIdList

testSuiteIdList

request param

yes

testStepCh

testStepCh

request param

yes

testStepEn

testStepEn

request param

no

file

file

request part

yes

configIdList

configIdList

request param

no

Example response:

200 OK
{
  "id": "4d203173-9999-4f62-aabb-8ebcec357f87",
  "nameCh": "APPD文件目录校验",
  "nameEn": "APPD File Dir Validation",
  "type": "automatic",
  "descriptionCh": "根目录下必须包含APPD文件目录",
  "descriptionEn": "Root directory must contain APPD file dir",
  "hashCode": "",
  "codeLanguage": "java",
  "expectResultCh": "根目录下存在APPD文件目录",
  "expectResultEn": "Root directory contains APPD file dir",
  "testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
  "testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
  "testSuiteIdList": [
    "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
  ],
  "configIdList": [
    "522684bd-9999-4b47-aab8-b43f1b4c19c0"
  ]
}
2.3 PUT update test case

update test case

Resource URI: /edgegallery/atp/v1/testcases

Name

Definition

Type

Required

id

id

request param

yes

type

type

request param

no

descriptionCh

descriptionCh

request param

no

descriptionEn

descriptionEn

request param

no

codeLanguage

codeLanguage

request param

no

expectResultCh

expectResultCh

request param

no

expectResultEn

expectResultEn

request param

no

testSuiteIdList

testSuiteIdList

request param

no

testStepCh

testStepCh

request param

no

testStepEn

testStepEn

request param

no

file

file

request part

no

configIdList

configIdList

request param

no

Example response:

200 OK
{
  "id": "4d203173-9999-4f62-aabb-8ebcec357f87",
  "nameCh": "APPD文件目录校验",
  "nameEn": "APPD File Dir Validation",
  "type": "automatic",
  "descriptionCh": "根目录下必须包含APPD文件目录",
  "descriptionEn": "Root directory must contain APPD file dir",
  "hashCode": "",
  "codeLanguage": "java",
  "expectResultCh": "根目录下存在APPD文件目录",
  "expectResultEn": "Root directory contains APPD file dir",
  "testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
  "testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
  "testSuiteIdList": [
    "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
  ],
  "configIdList": [
    "522684bd-9999-4b47-aab8-b43f1b4c19c0"
  ]
}
2.4 DELETE delete test case

delete test case

Resource URI: /edgegallery/atp/v1/testcases/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
true
2.5 GET query one test case

query one test case

Resource URI: /edgegallery/atp/v1/testcases/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
{
  "id": "4d203173-9999-4f62-aabb-8ebcec357f87",
  "nameCh": "APPD文件目录校验",
  "nameEn": "APPD File Dir Validation",
  "type": "automatic",
  "descriptionCh": "根目录下必须包含APPD文件目录",
  "descriptionEn": "Root directory must contain APPD file dir",
  "hashCode": "",
  "codeLanguage": "java",
  "expectResultCh": "根目录下存在APPD文件目录",
  "expectResultEn": "Root directory contains APPD file dir",
  "testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
  "testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
  "testSuiteIdList": [
    "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
  ],
  "configIdList": [
    "522684bd-9999-4b47-aab8-b43f1b4c19c0"
  ]
}
2.6 GET download test case

download test case

Resource URI: edgegallery/atp/v1/testcases/{id}/action/download

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
binary stream

3. Test scenario

test scenario management

3.1 GET query all test scenarios

query all test scenarios

Resource URI: edgegallery/atp/v1/testscenarios

Name

Definition

Type

Required

name

name

query param

no

locale

locale

query param

no

Example response:

200 OK
[
  {
    "id": "4d203111-1111-4f62-aabb-8ebcec357f87",
    "nameCh": "社区场景",
    "nameEn": "EdgeGallery Community Scenario",
    "descriptionCh": "适用于社区场景的测试",
    "descriptionEn": "suite for EdgeGallery community test",
    "label": "EdgeGallery"
  }
]

3.2 POST create test scenario

create test scenario

Resource URI: edgegallery/atp/v1/testscenarios

Name

Definition

Type

Required

nameCh

nameCh

request param

yes

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

yes

descriptionEn

descriptionEn

request param

no

label

label

request param

yes

icon

icon

request part

yes

Example response:

200 OK
  {
    "id": "4d203111-1111-4f62-aabb-8ebcec357f87",
    "nameCh": "社区场景",
    "nameEn": "EdgeGallery Community Scenario",
    "descriptionCh": "适用于社区场景的测试",
    "descriptionEn": "suite for EdgeGallery community test",
    "label": "EdgeGallery"
  }
3.3 PUT update test scenario

update test scenario

Resource URI: edgegallery/atp/v1/testscenarios/{id}

Name

Definition

Type

Required

id

id

path param

yes

nameCh

nameCh

request param

no

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

no

descriptionEn

descriptionEn

request param

no

label

label

request param

no

icon

icon

request part

no

Example response:

200 OK
  {
    "id": "4d203111-1111-4f62-aabb-8ebcec357f87",
    "nameCh": "社区场景",
    "nameEn": "EdgeGallery Community Scenario",
    "descriptionCh": "适用于社区场景的测试",
    "descriptionEn": "suite for EdgeGallery community test",
    "label": "EdgeGallery"
  }
3.4 DELETE delete test scenario

delete test scenario

Resource URI: edgegallery/atp/v1/testscenarios/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
true
3.5 GET query one test scenario

query one test scenario

Resource URI: edgegallery/atp/v1/testscenarios/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
  {
    "id": "4d203111-1111-4f62-aabb-8ebcec357f87",
    "nameCh": "社区场景",
    "nameEn": "EdgeGallery Community Scenario",
    "descriptionCh": "适用于社区场景的测试",
    "descriptionEn": "suite for EdgeGallery community test",
    "label": "EdgeGallery"
  }
3.6 GET query all test cases under one scenario

query all test cases under one scenario

Resource URI: edgegallery/atp/v1/testscenarios/testcases

Name

Definition

Type

Required

scenarioids

scenarioids

request param

yes

Example request:

200 OK
"scenarioIds":["id", "id2"]

Example response:

200 OK
[
  {
    "id": "96a82e85-d40d-4ce5-beec-2dd1c9a3d41d",
    "nameCh": "中国电信",
    "nameEn": "China Telecom Scenario",
    "descriptionCh": "适用于中国电信场景的测试",
    "descriptionEn": "suite for China Telecom test",
    "label": "China Telecom",
    "testSuites": [
      {
        "id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
        "nameCh": "沙箱测试",
        "nameEn": "Sandbox Test",
        "descriptionCh": "应用包部署测试",
        "descriptionEn": "App package deployment test",
        "scenarioIdList": [
          "4d203111-1111-4f62-aabb-8ebcec357f87",
          "e71718a5-864a-49e5-855a-5805a5e9f97d",
          "6fe8581c-b83f-40c2-8f5b-505478f9e30b",
          "96a82e85-d40d-4ce5-beec-2dd1c9a3d41d"
        ],
        "testCases": [
          {
            "id": "4d203173-5555-4f62-aabb-8ebcec357f87",
            "nameCh": "应用实例化",
            "nameEn": "Application Instantiation",
            "type": "automatic",
            "descriptionCh": "将应用包部署到边缘节点",
            "descriptionEn": "Instantiate application and its dependency application on one edge host",
            "hashCode": "",
            "codeLanguage": "jar",
            "expectResultCh": "应用包可以成功部署",
            "expectResultEn": "app can instantiate successfully.",
            "testStepCh": "部署应用包到对应的边缘节点",
            "testStepEn": "Deploy application package to edge node",
            "testSuiteIdList": [
              "6d04da1b-1f36-4295-920a-8074f7f9d942"
            ]
          }
        ]
      }
    ]
  }
]

4. Test suite

test suite management

4.1 GET query all test suite

query all test suite

Resource URI: edgegallery/atp/v1/testsuites

Name

Definition

Type

Required

name

name

query param

no

locale

locale

query param

no

scenarioIdList

scenarioIdList

query param

no

Example response:

200 OK
[
  {
    "id": "522684bd-d6df-4b47-aab8-b43f1b4c19c0",
    "nameCh": "遵从性测试",
    "nameEn": "Compliance Test",
    "descriptionCh": "遵从社区APPD标准、ETSI标准对应用包结构进行校验",
    "descriptionEn": "Validate app package structure according to commnunity and ETSI standard",
    "scenarioIdList": [
      "4d203111-1111-4f62-aabb-8ebcec357f87"
    ]
  }
]

4.2 POST create test suite

create test suite

Resource URI: edgegallery/atp/v1/testsuites

Name

Definition

Type

Required

nameCh

nameCh

request param

yes

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

yes

descriptionEn

descriptionEn

request param

no

scenarioIdList

scenarioIdList

request param

yes

Example response:

200 OK
{
  "id": "743abd93-57a3-499d-9591-fa7db86a4778",
  "nameCh": "安全性测试",
  "nameEn": "Security Test",
  "descriptionCh": "应用包安全测试",
  "descriptionEn": "App package security test",
  "scenarioIdList": [
    "4d203111-1111-4f62-aabb-8ebcec357f87"
  ]
}
4.3 PUT update test suite

update test suite

Resource URI: edgegallery/atp/v1/testsuites/{id}

Name

Definition

Type

Required

id

id

path param

yes

nameCh

nameCh

request param

no

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

no

descriptionEn

descriptionEn

request param

no

scenarioIdList

scenarioIdList

request param

no

Example response:

200 OK
{
  "id": "743abd93-57a3-499d-9591-fa7db86a4778",
  "nameCh": "安全性测试",
  "nameEn": "Security Test",
  "descriptionCh": "应用包安全测试",
  "descriptionEn": "App package security test",
  "scenarioIdList": [
    "4d203111-1111-4f62-aabb-8ebcec357f87"
  ]
}
4.4 DELETE delete test suite

delete test suite

Resource URI: edgegallery/atp/v1/testsuites/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
true
4.5 GET query one test suite

query one test suite

Resource URI: edgegallery/atp/v1/testsuites/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
{
  "id": "743abd93-57a3-499d-9591-fa7db86a4778",
  "nameCh": "安全性测试",
  "nameEn": "Security Test",
  "descriptionCh": "应用包安全测试",
  "descriptionEn": "App package security test",
  "scenarioIdList": [
    "4d203111-1111-4f62-aabb-8ebcec357f87"
  ]
}

5. Contribution

contribution

5.1 GET query all contribution

query all contribution

Resource URI: edgegallery/atp/v1/contributions

Example response:

200 OK
[
  {
    "id": "872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
    "name": "test",
    "objective": "test",
    "step": "test",
    "expectResult": "test",
    "type": "text",
    "createTime": "2021-03-01T09:17:31.915+0000"
  }
]

5.2 POST create contribution

create contribution

Resource URI: edgegallery/atp/v1/contributions

Name

Definition

Type

Required

name

name

request param

yes

objective

objective

request param

no

step

step

request param

yes

expectResult

expectResult

request param

no

type

type

request param

yes

file

file

requestpart

yes

Example response:

200 OK
  {
    "id": "872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
    "name": "test",
    "objective": "test",
    "step": "test",
    "expectResult": "test",
    "type": "text",
    "createTime": "2021-03-01T09:17:31.915+0000"
  }
5.3 POST batch delete contributions

batch delete contributions

Resource URI: edgegallery/atp/v1/contributions/batch_delete

Name

Definition

Type

Required

ids

ids

request param

yes

Example request:

{
  "ids":["id1","id2"]
}

Example response:

200 OK
{
    "failed":["id3"]
}

5.4 GET download contribution script

download contribution script

Resource URI: edgegallery/atp/v1/contributions/{id}/action/download
Name Definition Type Required
id id path param yes

Example response:

200 OK
binary stream

6. File

file

6.1 GET query one file

query one file

Resource URI: edgegallery/atp/v1/files/{id}

Name

Definition

Type

Required

id

id

path param

yes

type

type

query param

no

Example response:

200 OK
binary stream

7. Test model

test model

7.1 POST import test model

import test model

Resource URI: edgegallery/atp/v1/testmodels/action/import

Name

Definition

Type

Required

file

file

request param

yes

Example response:

200 OK
{
  "retCode" : 0
  "failures" : []
}

206 partial success
{
  "retCode" : 5000,
  "failures" : [{
       "id" : "string",
       "nameEn" : "string",
       "type" : "testScenario",
       "errCode": 1000, 
        "errMsg": “string”, 
       "params": "string" 
     },
     {
       "id" : "string",
       "nameEn" : "string",
       "type" : "testSuite",
       "errCode": 1000, 
      "errMsg": “string”,
       "params": "string" 
     },
     {
       "id" : "string",
       "nameEn" : "string",
       "type" : "testCase",
       "errCode": 1000, 
       "errMsg": “string”,
       "params": "string" 
     }
  ]
}

8. Configuration

config

8.1 POST create config

create config

Resource URI: edgegallery/atp/v2/configs

Example request:

{
    "nameCh":"虚机应用实例化",
    "nameEn":"Instantiation for vm app",
    "descriptionCh":"配置虚机应用实例化所需参数",
    "descriptionEn":"Configure params for instantiation of vm app",
    "configuration":"DC_ID = FS+M;az_dc=nova;"
}

Example response:

200 OK
{
    "data":{
        "id":"uuid",
        "nameCh":"虚机应用实例化",
        "nameEn":"Instantiation for vm app",
        "descriptionCh":"配置虚机应用实例化所需参数",
        "descriptionEn":"Configure params for instantiation of vm app",
        "configuration":"DC_ID = FS+M;az_dc=nova;",
        "createTime":""
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1",
        "param2"
    ]
}

8.2 PUT update config

update config

Resource URI: edgegallery/atp/v2/configs/{id}

Example request:

{
    "nameCh":"虚机应用实例化",
    "nameEn":"Instantiation for vm app",
    "descriptionCh":"配置虚机应用实例化所需参数",
    "descriptionEn":"Configure params for instantiation of vm app",
    "configuration":"DC_ID = FS+M;az_dc=nova;"
}

Example response:

200 OK
{
    "data":{
        "id":"uuid",
        "nameCh":"虚机应用实例化",
        "nameEn":"Instantiation for vm app",
        "descriptionCh":"配置虚机应用实例化所需参数",
        "descriptionEn":"Configure params for instantiation of vm app",
        "configuration":"DC_ID = FS+M;az_dc=nova;",
        "createTime":""
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1",
        "param2"
    ]
}

8.3 DELETE delete config

delete config

Resource URI: edgegallery/atp/v2/configs/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example request:

NA

Example response:

200 OK
true

8.4 GET query one config

query one config

Resource URI: edgegallery/atp/v2/configs/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example request:

NA

Example response:

200 OK
{
    "data":{
        "id":"uuid",
        "nameCh":"虚机应用实例化",
        "nameEn":"Instantiation for vm app",
        "descriptionCh":"配置虚机应用实例化所需参数",
        "descriptionEn":"Configure params for instantiation of vm app",
        "configuration":"DC_ID = FS+M;az_dc=nova;",
        "createTime":""
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1",
        "param2"
    ]
}

8.5 GET query all configs

query all configs

Resource URI: edgegallery/atp/v2/configs?limit=10&offset=0

Name

Definition

Type

Required

name

name

query param

no

locale

locale

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example request:

NA

Example response:

200 OK
{
    "results":[
        {
            "id":"uuid",
            "nameCh":"虚机应用实例化",
            "nameEn":"Instantiation for vm app",
            "descriptionCh":"配置虚机应用实例化所需参数",
            "descriptionEn":"Configure params for instantiation of vm app",
            "configuration":"DC_ID = FS+M;az_dc=nova;",
            "createTime":""
        }
    ],
    "total":1,
    "limit":10,
    "offset":0
}

atp v2 Interfaces

1. Task

Test task for application package

1.1 POST create test task

create test task for application package.

Resource URI: /edgegallery/atp/v2/tasks

Name

Definition

Type

Required

file

file

requestpart

yes

Example response:

200 OK
{
    "data":{
        "id":"",
        "packagePath":"",
        "appName":"",
        "appVersion":"",
        "providerId":"",
        "status":"",
        "createTime":123456789,
        "user":{
            "userId":"",
            "userName":""
        }
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1",
        "param2"
    ]
}

1.2 POST run test task

Run test task by taskId

Resource URI: /edgegallery/atp/v2/tasks/{taskId}/action/run

Name

Definition

Type

Required

taskId

taskId

path param

yes

scenarioIdList

scenarioIdList

request param

yes

Example response:

200 OK
{
    "data":{
        "id":"8ac6e62d-1d20-4193-942e-ece6deff5e4e",
        "appName":"monitor-service",
        "appVersion":"1.0",
        "status":"running",
        "createTime":"2021-03-01T02:42:29.306+0000",
        "endTime":"2021-03-01T02:43:03.943+0000",
        "reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
        "user":{
            "userId":"4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
            "userName":"atp"
        },
        "providerId":"Huawei",
        "testScenarios":[
            {
                "id":"e71718a5-864a-49e5-855a-5805a5e9f97d",
                "nameCh":"中国联通",
                "nameEn":"China Unicom Scenario",
                "label":"China Unicom",
                "testSuites":[
                    {
                        "id":"6d04da1b-1f36-4295-920a-8074f7f9d942",
                        "nameCh":"沙箱测试",
                        "nameEn":"Sandbox Test",
                        "testCases":[
                            {
                                "id":"4d203173-5555-4f62-aabb-8ebcec357f87",
                                "nameCh":"应用实例化",
                                "nameEn":"Application Instantiation",
                                "descriptionCh":"将应用包部署到边缘节点",
                                "descriptionEn":"Instantiate application and its dependency application on one edge host",
                                "type":"automatic",
                                "result":"failed",
                                "reason":"host ip is empty"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}

1.3 GET get task list

download one plugin

Resource URI: /edgegallery/atp/v2/tasks?limit=10&offset=0

Name

Definition

Type

Required

appName

appName

query param

no

status

status

query param

no

appVersion

appVersion

query param

no

providerId

providerId

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example response:

200 OK
{
    "results":[
        {
            "id":"8ac6e62d-1d20-4193-942e-ece6deff5e4e",
            "appName":"monitor-service",
            "appVersion":"1.0",
            "status":"running",
            "createTime":"2021-03-01T02:42:29.306+0000",
            "endTime":"2021-03-01T02:43:03.943+0000",
            "reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
            "user":{
                "userId":"4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
                "userName":"atp"
            },
            "providerId":"Huawei",
            "testScenarios":[
                {
                    "id":"e71718a5-864a-49e5-855a-5805a5e9f97d",
                    "nameCh":"中国联通",
                    "nameEn":"China Unicom Scenario",
                    "label":"China Unicom",
                    "testSuites":[
                        {
                            "id":"6d04da1b-1f36-4295-920a-8074f7f9d942",
                            "nameCh":"沙箱测试",
                            "nameEn":"Sandbox Test",
                            "testCases":[
                                {
                                    "id":"4d203173-5555-4f62-aabb-8ebcec357f87",
                                    "nameCh":"应用实例化",
                                    "nameEn":"Application Instantiation",
                                    "descriptionCh":"将应用包部署到边缘节点",
                                    "descriptionEn":"Instantiate application and its dependency application on one edge host",
                                    "type":"automatic",
                                    "result":"failed",
                                    "reason":"host ip is empty"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "total":1,
    "limit":10,
    "offset":0
}
1.4 GET get one task

get task by taskId

Resource URI: /edgegallery/atp/v2/tasks/{taskId}

Name

Definition

Type

Required

taskId

taskId

path param

yes

Example response:

200 OK
{
    "data":{
        "id":"8ac6e62d-1d20-4193-942e-ece6deff5e4e",
        "appName":"monitor-service",
        "appVersion":"1.0",
        "status":"running",
        "createTime":"2021-03-01T02:42:29.306+0000",
        "endTime":"2021-03-01T02:43:03.943+0000",
        "reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
        "user":{
            "userId":"4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
            "userName":"atp"
        },
        "providerId":"Huawei",
        "testScenarios":[
            {
                "id":"e71718a5-864a-49e5-855a-5805a5e9f97d",
                "nameCh":"中国联通",
                "nameEn":"China Unicom Scenario",
                "label":"China Unicom",
                "testSuites":[
                    {
                        "id":"6d04da1b-1f36-4295-920a-8074f7f9d942",
                        "nameCh":"沙箱测试",
                        "nameEn":"Sandbox Test",
                        "testCases":[
                            {
                                "id":"4d203173-5555-4f62-aabb-8ebcec357f87",
                                "nameCh":"应用实例化",
                                "nameEn":"Application Instantiation",
                                "descriptionCh":"将应用包部署到边缘节点",
                                "descriptionEn":"Instantiate application and its dependency application on one edge host",
                                "type":"automatic",
                                "result":"failed",
                                "reason":"host ip is empty"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}

1.5 PUT modify test case status

modify manual test case status

Resource URI: edgegallery/atp/v2/tasks/{taskId}/testcase

Name

Definition

Type

Required

taskId

taskId

path param

yes

Example request:

[{
      "testScenarioId":"",
      "testSuiteId":"",
      "testCaseId":"",
      "result":"" ,
      "reason":""
}]

Example response:

true
1.6 POST batch delete test tasks

batch delete test tasks

Resource URI: edgegallery/atp/v2/tasks/batch_delete

Example request:

{
  "taskIds":["id1","id2"]
}

Example response:

{
    "retCode":5000,
    "failures":[
        {
            "id":"string",
            "errCode":11111,
            "message":"string",
            "params":[
                "string"
            ]
        }
    ]
}

1.7 GET get test tasks analysis

get test tasks analysis

Resource URI: edgegallery/atp/v2/tasks/action/analysize

Example response:

200 OK
 {
    "data":{
        "total":426,
        "currentMonth":11,
        "oneMonthAgo":111,
        "twoMonthAgo":12,
        "threeMonthAgo":13,
        "fourMonthAgo":14,
        "fiveMonthAgo":15
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
1.8 DELETE delete one test task

delete one test task

Resource URI: edgegallery/atp/v2/tasks/{taskId}

Example response:

true
1.9 POST upload self test report

upload self test report

Resource URI: edgegallery/atp/v2/tasks/{taskId}/action/upload-report

Example request:

{
    file: file
} 

Example response:

{
    "data":{
        "path":"reportPath"
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1“
    ]
}

2. Test case

test cases of csar package

2.1 GET query all test cases

query all test cases

Resource URI: /edgegallery/atp/v2/testcases?limit=10&offset=0

Name

Definition

Type

Required

type

type

query param

no

name

name

query param

no

locale

locale

query param

no

testSuiteIdList

testSuiteIdList

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example response:

200 OK
{
    "results":[
        {
            "id":"4d203173-9999-4f62-aabb-8ebcec357f87",
            "nameCh":"APPD文件目录校验",
            "nameEn":"APPD File Dir Validation",
            "type":"automatic",
            "descriptionCh":"根目录下必须包含APPD文件目录",
            "descriptionEn":"Root directory must contain APPD file dir",
            "hashCode":"",
            "codeLanguage":"java",
            "expectResultCh":"根目录下存在APPD文件目录",
            "expectResultEn":"Root directory contains APPD file dir",
            "testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
            "testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
            "testSuiteIdList":[
                "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
            ],
            "configIdList":[
                "522684bd-9999-4b47-aab8-b43f1b4c19c0"
            ]
        }
    ],
    "total":1,
    "limit":10,
    "offset":0
}

2.2 POST create test case

create test case

Resource URI: /edgegallery/atp/v2/testcases

Name

Definition

Type

Required

nameCh

nameCh

request param

yes

nameEn

nameEn

request param

no

type

type

request param

yes

descriptionCh

descriptionCh

request param

yes

descriptionEn

descriptionEn

request param

no

codeLanguage

codeLanguage

request param

yes

expectResultCh

expectResultCh

request param

yes

expectResultEn

expectResultEn

request param

no

testSuiteIdList

testSuiteIdList

request param

yes

testStepCh

testStepCh

request param

yes

testStepEn

testStepEn

request param

no

file

file

request part

yes

configIdList

configIdList

request param

no

Example response:

200 OK
{
    "data":{
        "id":"4d203173-9999-4f62-aabb-8ebcec357f87",
        "nameCh":"APPD文件目录校验",
        "nameEn":"APPD File Dir Validation",
        "type":"automatic",
        "descriptionCh":"根目录下必须包含APPD文件目录",
        "descriptionEn":"Root directory must contain APPD file dir",
        "hashCode":"",
        "codeLanguage":"java",
        "expectResultCh":"根目录下存在APPD文件目录",
        "expectResultEn":"Root directory contains APPD file dir",
        "testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
        "testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
        "testSuiteIdList":[
            "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
        ],
        "configIdList":[
            "522684bd-9999-4b47-aab8-b43f1b4c19c0"
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
2.3 PUT update test case

update test case

Resource URI: /edgegallery/atp/v2/testcases

Name

Definition

Type

Required

id

id

request param

yes

type

type

request param

no

descriptionCh

descriptionCh

request param

no

descriptionEn

descriptionEn

request param

no

codeLanguage

codeLanguage

request param

no

expectResultCh

expectResultCh

request param

no

expectResultEn

expectResultEn

request param

no

testSuiteIdList

testSuiteIdList

request param

no

testStepCh

testStepCh

request param

no

testStepEn

testStepEn

request param

no

file

file

request part

no

configIdList

configIdList

request param

no

Example response:

200 OK
{
    "data":{
        "id":"4d203173-9999-4f62-aabb-8ebcec357f87",
        "nameCh":"APPD文件目录校验",
        "nameEn":"APPD File Dir Validation",
        "type":"automatic",
        "descriptionCh":"根目录下必须包含APPD文件目录",
        "descriptionEn":"Root directory must contain APPD file dir",
        "hashCode":"",
        "codeLanguage":"java",
        "expectResultCh":"根目录下存在APPD文件目录",
        "expectResultEn":"Root directory contains APPD file dir",
        "testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
        "testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
        "testSuiteIdList":[
            "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
        ],
        "configIdList":[
            "522684bd-9999-4b47-aab8-b43f1b4c19c0"
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
2.4 DELETE delete test case

delete test case

Resource URI: /edgegallery/atp/v2/testcases/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
true
2.5 GET query one test case

query one test case

Resource URI: /edgegallery/atp/v2/testcases/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
{
    "data":{
        "id":"4d203173-9999-4f62-aabb-8ebcec357f87",
        "nameCh":"APPD文件目录校验",
        "nameEn":"APPD File Dir Validation",
        "type":"automatic",
        "descriptionCh":"根目录下必须包含APPD文件目录",
        "descriptionEn":"Root directory must contain APPD file dir",
        "hashCode":"",
        "codeLanguage":"java",
        "expectResultCh":"根目录下存在APPD文件目录",
        "expectResultEn":"Root directory contains APPD file dir",
        "testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
        "testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
        "testSuiteIdList":[
            "522684bd-d6df-4b47-aab8-b43f1b4c19c0"
        ],
        "configIdList":[
            "522684bd-9999-4b47-aab8-b43f1b4c19c0"
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
2.6 GET download test case

download test case

Resource URI: edgegallery/atp/v2/testcases/{id}/action/download

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
binary stream

3. Test scenario

test scenario management

3.1 GET query all test scenarios

query all test scenarios

Resource URI: edgegallery/atp/v2/testscenarios?limit=10&offset=0

Name

Definition

Type

Required

name

name

query param

no

locale

locale

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example response:

200 OK
{
    "results":[
        {
            "id":"4d203111-1111-4f62-aabb-8ebcec357f87",
            "nameCh":"社区场景",
            "nameEn":"EdgeGallery Community Scenario",
            "descriptionCh":"适用于社区场景的测试",
            "descriptionEn":"suite for EdgeGallery community test",
            "label":"EdgeGallery"
        }
    ],
    "total":1,
    "limit":10,
    "offset":0
}

3.2 POST create test scenario

create test scenario

Resource URI: edgegallery/atp/v2/testscenarios

Name

Definition

Type

Required

nameCh

nameCh

request param

yes

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

yes

descriptionEn

descriptionEn

request param

no

label

label

request param

yes

icon

icon

request part

yes

Example response:

200 OK
{
    "data":{
        "id":"4d203111-1111-4f62-aabb-8ebcec357f87",
        "nameCh":"社区场景",
        "nameEn":"EdgeGallery Community Scenario",
        "descriptionCh":"适用于社区场景的测试",
        "descriptionEn":"suite for EdgeGallery community test",
        "label":"EdgeGallery"
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
3.3 PUT update test scenario

update test scenario

Resource URI: edgegallery/atp/v2/testscenarios/{id}

Name

Definition

Type

Required

id

id

path param

yes

nameCh

nameCh

request param

no

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

no

descriptionEn

descriptionEn

request param

no

label

label

request param

no

icon

icon

request part

no

Example response:

200 OK
{
    "data":{
        "id":"4d203111-1111-4f62-aabb-8ebcec357f87",
        "nameCh":"社区场景",
        "nameEn":"EdgeGallery Community Scenario",
        "descriptionCh":"适用于社区场景的测试",
        "descriptionEn":"suite for EdgeGallery community test",
        "label":"EdgeGallery"
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
3.4 DELETE delete test scenario

delete test scenario

Resource URI: edgegallery/atp/v2/testscenarios/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
true
3.5 GET query one test scenario

query one test scenario

Resource URI: edgegallery/atp/v2/testscenarios/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
{
    "data":{
        "id":"4d203111-1111-4f62-aabb-8ebcec357f87",
        "nameCh":"社区场景",
        "nameEn":"EdgeGallery Community Scenario",
        "descriptionCh":"适用于社区场景的测试",
        "descriptionEn":"suite for EdgeGallery community test",
        "label":"EdgeGallery"
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
3.6 GET query all test cases under one scenario

query all test cases under one scenario

Resource URI: edgegallery/atp/v2/testscenarios/testcases

Name

Definition

Type

Required

scenarioids

scenarioids

request param

yes

Example request:

200 OK
"scenarioIds":["id", "id2"]

Example response:

200 OK
[
  {
    "id": "96a82e85-d40d-4ce5-beec-2dd1c9a3d41d",
    "nameCh": "中国电信",
    "nameEn": "China Telecom Scenario",
    "descriptionCh": "适用于中国电信场景的测试",
    "descriptionEn": "suite for China Telecom test",
    "label": "China Telecom",
    "testSuites": [
      {
        "id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
        "nameCh": "沙箱测试",
        "nameEn": "Sandbox Test",
        "descriptionCh": "应用包部署测试",
        "descriptionEn": "App package deployment test",
        "scenarioIdList": [
          "4d203111-1111-4f62-aabb-8ebcec357f87",
          "e71718a5-864a-49e5-855a-5805a5e9f97d",
          "6fe8581c-b83f-40c2-8f5b-505478f9e30b",
          "96a82e85-d40d-4ce5-beec-2dd1c9a3d41d"
        ],
        "testCases": [
          {
            "id": "4d203173-5555-4f62-aabb-8ebcec357f87",
            "nameCh": "应用实例化",
            "nameEn": "Application Instantiation",
            "type": "automatic",
            "descriptionCh": "将应用包部署到边缘节点",
            "descriptionEn": "Instantiate application and its dependency application on one edge host",
            "hashCode": "",
            "codeLanguage": "jar",
            "expectResultCh": "应用包可以成功部署",
            "expectResultEn": "app can instantiate successfully.",
            "testStepCh": "部署应用包到对应的边缘节点",
            "testStepEn": "Deploy application package to edge node",
            "testSuiteIdList": [
              "6d04da1b-1f36-4295-920a-8074f7f9d942"
            ]
          }
        ]
      }
    ]
  }
]

4. Test suite

test suite management

4.1 GET query all test suite

query all test suite

Resource URI: edgegallery/atp/v2/testsuites?limit=10&offset=0

Name

Definition

Type

Required

name

name

query param

no

locale

locale

query param

no

scenarioIdList

scenarioIdList

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example response:

200 OK
{
    "results":[
        {
            "id":"522684bd-d6df-4b47-aab8-b43f1b4c19c0",
            "nameCh":"遵从性测试",
            "nameEn":"Compliance Test",
            "descriptionCh":"遵从社区APPD标准、ETSI标准对应用包结构进行校验",
            "descriptionEn":"Validate app package structure according to commnunity and ETSI standard",
            "scenarioIdList":[
                "4d203111-1111-4f62-aabb-8ebcec357f87"
            ]
        }
    ],
    "total":1,
    "limit":10,
    "offset":0
}

4.2 POST create test suite

create test suite

Resource URI: edgegallery/atp/v2/testsuites

Name

Definition

Type

Required

nameCh

nameCh

request param

yes

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

yes

descriptionEn

descriptionEn

request param

no

scenarioIdList

scenarioIdList

request param

yes

Example response:

200 OK
{
    "data":{
        "id":"743abd93-57a3-499d-9591-fa7db86a4778",
        "nameCh":"安全性测试",
        "nameEn":"Security Test",
        "descriptionCh":"应用包安全测试",
        "descriptionEn":"App package security test",
        "scenarioIdList":[
            "4d203111-1111-4f62-aabb-8ebcec357f87"
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
4.3 PUT update test suite

update test suite

Resource URI: edgegallery/atp/v2/testsuites/{id}

Name

Definition

Type

Required

id

id

path param

yes

nameCh

nameCh

request param

no

nameEn

nameEn

request param

no

descriptionCh

descriptionCh

request param

no

descriptionEn

descriptionEn

request param

no

scenarioIdList

scenarioIdList

request param

no

Example response:

200 OK
{
    "data":{
        "id":"743abd93-57a3-499d-9591-fa7db86a4778",
        "nameCh":"安全性测试",
        "nameEn":"Security Test",
        "descriptionCh":"应用包安全测试",
        "descriptionEn":"App package security test",
        "scenarioIdList":[
            "4d203111-1111-4f62-aabb-8ebcec357f87"
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
4.4 DELETE delete test suite

delete test suite

Resource URI: edgegallery/atp/v2/testsuites/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
true
4.5 GET query one test suite

query one test suite

Resource URI: edgegallery/atp/v2/testsuites/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response:

200 OK
{
    "data":{
        "id":"743abd93-57a3-499d-9591-fa7db86a4778",
        "nameCh":"安全性测试",
        "nameEn":"Security Test",
        "descriptionCh":"应用包安全测试",
        "descriptionEn":"App package security test",
        "scenarioIdList":[
            "4d203111-1111-4f62-aabb-8ebcec357f87"
        ]
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}

5. Contribution

contribution

5.1 GET query all contribution

query all contribution

Resource URI: edgegallery/atp/v2/contributions?limit=10&offset=0

Name

Definition

Type

Required

name

name

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example response:

200 OK
{
    "results":[
        {
            "id":"872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
            "name":"test",
            "objective":"test",
            "step":"test",
            "expectResult":"test",
            "type":"text",
            "createTime":"2021-03-01T09:17:31.915+0000"
        }
    ],
    "total":1,
    "limit":10,
    "offset":0
}

5.2 POST create contribution

create contribution

Resource URI: edgegallery/atp/v2/contributions

Name

Definition

Type

Required

name

name

request param

yes

objective

objective

request param

no

step

step

request param

yes

expectResult

expectResult

request param

no

type

type

request param

yes

file

file

requestpart

yes

Example response:

200 OK
{
    "data":{
        "id":"872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
        "name":"test",
        "objective":"test",
        "step":"test",
        "expectResult":"test",
        "type":"text",
        "createTime":"2021-03-01T09:17:31.915+0000"
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1"
    ]
}
5.3 POST batch delete contributions

batch delete contributions

Resource URI: edgegallery/atp/v2/contributions/batch_delete

Name

Definition

Type

Required

ids

ids

request param

yes

Example request:

{
  "ids":["id1","id2"]
}

Example response:

200 OK
{
    "retCode":5000,
    "failures":[
        {
            "id":"string",
            "errCode":11111,
            "message":"string",
            "params":[
                "string"
            ]
        }
    ]
}
5.4 GET download contribution script

download contribution script

Resource URI: edgegallery/atp/v2/contributions/{id}/action/download
Name Definition Type Required
id id path param yes

Example response:

200 OK
binary stream

6. File

file

6.1 GET query one file

query one file

Resource URI: edgegallery/atp/v2/files/{id}

Name

Definition

Type

Required

id

id

path param

yes

type

type

query param

no

Example response:

200 OK
binary stream

7. Test model

test model

7.1 POST import test model

import test model

Resource URI: edgegallery/atp/v2/testmodels/action/import

Name

Definition

Type

Required

file

file

request param

yes

Example response:

200 OK
{
  "retCode" : 0
  "failures" : []
}

206 partial success
{
  "retCode" : 5000,
  "failures" : [{
       "id" : "string",
       "nameEn" : "string",
       "type" : "testScenario",
       "errCode": 1000, 
        "errMsg": “string”, 
       "params": "string" 
     },
     {
       "id" : "string",
       "nameEn" : "string",
       "type" : "testSuite",
       "errCode": 1000, 
      "errMsg": “string”,
       "params": "string" 
     },
     {
       "id" : "string",
       "nameEn" : "string",
       "type" : "testCase",
       "errCode": 1000, 
       "errMsg": “string”,
       "params": "string" 
     }
  ]
}

8. Configuration

config

8.1 POST create config

create config

Resource URI: edgegallery/atp/v2/configs

Example request:

{
    "nameCh":"虚机应用实例化",
    "nameEn":"Instantiation for vm app",
    "descriptionCh":"配置虚机应用实例化所需参数",
    "descriptionEn":"Configure params for instantiation of vm app",
    "configuration":"DC_ID = FS+M;az_dc=nova;"
}

Example response:

200 OK
{
    "data":{
        "id":"uuid",
        "nameCh":"虚机应用实例化",
        "nameEn":"Instantiation for vm app",
        "descriptionCh":"配置虚机应用实例化所需参数",
        "descriptionEn":"Configure params for instantiation of vm app",
        "configuration":"DC_ID = FS+M;az_dc=nova;",
        "createTime":""
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1",
        "param2"
    ]
}

8.2 PUT update config

update config

Resource URI: edgegallery/atp/v2/configs/{id}

Example request:

{
    "nameCh":"虚机应用实例化",
    "nameEn":"Instantiation for vm app",
    "descriptionCh":"配置虚机应用实例化所需参数",
    "descriptionEn":"Configure params for instantiation of vm app",
    "configuration":"DC_ID = FS+M;az_dc=nova;"
}

Example response:

200 OK
{
    "data":{
        "id":"uuid",
        "nameCh":"虚机应用实例化",
        "nameEn":"Instantiation for vm app",
        "descriptionCh":"配置虚机应用实例化所需参数",
        "descriptionEn":"Configure params for instantiation of vm app",
        "configuration":"DC_ID = FS+M;az_dc=nova;",
        "createTime":""
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1",
        "param2"
    ]
}

8.3 DELETE delete config

delete config

Resource URI: edgegallery/atp/v2/configs/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example request:

NA

Example response:

200 OK
true

8.4 GET query one config

query one config

Resource URI: edgegallery/atp/v2/configs/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example request:

NA

Example response:

200 OK
{
    "data":{
        "id":"uuid",
        "nameCh":"虚机应用实例化",
        "nameEn":"Instantiation for vm app",
        "descriptionCh":"配置虚机应用实例化所需参数",
        "descriptionEn":"Configure params for instantiation of vm app",
        "configuration":"DC_ID = FS+M;az_dc=nova;",
        "createTime":""
    },
    "retCode":0,
    "message":"errorMsg",
    "params":[
        "param1",
        "param2"
    ]
}

8.5 GET query all configs

query all configs

Resource URI: edgegallery/atp/v2/configs?limit=10&offset=0

Name

Definition

Type

Required

name

name

query param

no

locale

locale

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example request:

NA

Example response:

200 OK
{
    "results":[
        {
            "id":"uuid",
            "nameCh":"虚机应用实例化",
            "nameEn":"Instantiation for vm app",
            "descriptionCh":"配置虚机应用实例化所需参数",
            "descriptionEn":"Configure params for instantiation of vm app",
            "configuration":"DC_ID = FS+M;az_dc=nova;",
            "createTime":""
        }
    ],
    "total":1,
    "limit":10,
    "offset":0
}

Database design

  • In the V1.3 version, compared with the v1.2 version, the database table TEST_CASE_TABLE has a new configIdList field, and the table TASK_TABLE has a new field reportPath. The following SQL statements need to be executed in the above two database tables: alter table TEST_CASE_TABLE add column configIdList TEXT NULL ; alter table TASK_TABLE add column reportPath varchar(200) NULL;

  • Adding DB table CONFIG_TABLE, and creating table info can be seen below.

  • The ATP database uses open-source PostgreSQL databases with a recommended version of 12.2.The database tables are currently designed and applied are as follows:

  • TABLE TASK_TABLE: Storage test task information

    CREATE TABLE TASK_TABLE (
        ID                       VARCHAR(200)       NOT NULL,
        APPNAME                  VARCHAR(200)       NULL,
        APPVERSION               VARCHAR(200)       NULL,
        STATUS                   VARCHAR(200)       NULL,
        TESTCASEDETAIL           TEXT               NULL,
        CREATETIME               TIMESTAMP          NULL,
        ENDTIME                  TIMESTAMP          NULL,
        PROVIDERID               VARCHAR(200)       NULL,
        PACKAGEPATH              VARCHAR(200)       NULL,
        USERID                   VARCHAR(200)       NULL,
        USERNAME                 VARCHAR(200)       NULL,
        REPORTPATH               VARCHAR(200)       NULL,
        CONSTRAINT task_table_pkey PRIMARY KEY (ID)
    );
  • TEST_CASE_TABLE: Storage test case information

CREATE TABLE TEST_CASE_TABLE (
       ID                       VARCHAR(200)       NOT NULL,
       NAMECH                   VARCHAR(200)       NULL,
       NAMEEN                   VARCHAR(200)       NULL,
       TYPE                     VARCHAR(200)       NULL,
       CLASSNAME                VARCHAR(200)       NULL,
       HASHCODE                 TEXT               NULL, 
       DESCRIPTIONCH            TEXT               NULL,
       DESCRIPTIONEN            TEXT               NULL,
       FILEPATH                 VARCHAR(200)       NULL,
       CODELANGUAGE             VARCHAR(200)       NULL,
       EXPECTRESULTCH           VARCHAR(200)       NULL,
       EXPECTRESULTEN           VARCHAR(200)       NULL,
       TESTSUITEIDLIST          TEXT               NULL,
       TESTSTEPCH               TEXT               NULL,
       TESTSTEPEN               TEXT               NULL,
       CREATETIME               TIMESTAMP          NULL,
       CONFIGIDLIST             TEXT               NULL,
       CONSTRAINT test_case_table_pkey PRIMARY KEY (ID)
    );
  • TEST_SCENARIO_TABLE: Storage test scene information

    CREATE TABLE TEST_SCENARIO_TABLE (
        ID                       VARCHAR(200)       NOT NULL,
        NAMECH                   VARCHAR(200)       NULL,
        NAMEEN                   VARCHAR(200)       NULL,
        DESCRIPTIONCh            TEXT               NULL,
        DESCRIPTIONEN            TEXT               NULL,
        LABEL                    VARCHAR(200)       NULL,
        CREATETIME               TIMESTAMP          NULL,
        CONSTRAINT test_scenario_table_pkey PRIMARY KEY (ID)
    );
  • TEST_SUITE_TABLE: Storage test suite information

    CREATE TABLE TEST_SUITE_TABLE (
       ID                       VARCHAR(200)       NOT NULL,
       NAMECH                   VARCHAR(200)       NULL,
       NAMEEN                   VARCHAR(200)       NULL,
       DESCRIPTIONCh            TEXT               NULL,
       DESCRIPTIONEN            TEXT               NULL, 
       SCENARIOIDLIST           VARCHAR(255)       NULL,
       CREATETIME               TIMESTAMP          NULL,
       CONSTRAINT test_suite_table_pkey PRIMARY KEY (ID)
    );
  • FILE_TABLE: stores icon document information

    CREATE TABLE FILE_TABLE (
       FILEID                   VARCHAR(200)       NOT NULL,
       TYPE                     VARCHAR(200)       NOT NULL,
       CREATETIME               TIMESTAMP          NULL,
       FILEPATH                 VARCHAR(200)       NULL
    );
    alter table FILE_TABLE add constraint file_table_pkey unique(FILEID,TYPE);
  • CONTRIBUTION_TABLE: Storage contribution test case information

    CREATE TABLE CONTRIBUTION_TABLE (
        ID                       VARCHAR(200)       NOT NULL,
        NAME                     VARCHAR(200)       NULL,
        OBJECTIVE                VARCHAR(200)       NULL,
        STEP                     TEXT               NULL,
        EXPECTRESULT             TEXT               NULL, 
        TYPE                     VARCHAR(255)       NULL,
        CREATETIME               TIMESTAMP          NULL,
        FILEPATH                 VARCHAR(200)       NULL,
        CONSTRAINT contribution_table_pkey PRIMARY KEY (ID)
    );
  • CONFIG_TABLE: Storage config item information

    CREATE TABLE CONFIG_TABLE (
             ID                       VARCHAR(200)       NOT NULL,
             NAMECH                   VARCHAR(200)       NULL,
             NAMEEN                   VARCHAR(200)       NULL,
             DESCRIPTIONCh            TEXT               NULL,
             DESCRIPTIONEN            TEXT               NULL,
             CONFIGURATION            TEXT               NOT NULL,
             CREATETIME               TIMESTAMP          NULL,
             CONSTRAINT config_table_pkey PRIMARY KEY (ID)
     );

ATP Contribution

Building a local development environment

This article will guide users on how to build the atp and atp-fe modules locally, helping developers to quickly understand, develop code.

The local activation of the atp depends on:

- Service Center
- DataBase
- UserManagement

where the local activation of atp-fe depends on:

- WebsiteGateway
- UserManagement
- atp

So in order to build a local development environment, the final start sequence is Service Center->DataBase->UserManagement->atp->WebsiteGateway (atp-fe)

Service Center

1.Download Service Center

2.Run the start-service-center.bat and start-frontend.bat after decompression

DataBase

1.Download, install, start Postgresql latest version

2.setting the login name and password, such as postgresql/root

3.Create a database called atpdb

4.Create table structure based on database statement in atp deployment document

5.Create a database called usermgmtdb

6.Create table structure based on database statement in usermgmt deployment document

UserManagement

1.download the user-mgmt-be code and user-mgmt-fe code

2.install node.js and npm, enter the user-mgmt-fe folder, run npm install and npm run build

3.create a static folder in the src/main/resources/ folder in user-mgmt-be

4.copy the contents in the dist folder compiled by user-mgmt-fe into the static folder of user-mgmt-be

5.Configure runtime environment variables for MainServer in the compiler (where IDEA is used as an example)

6.Run the MainServer function, start UserManagement

atp

1.download the atp code

2.configuring the runtime environment variable for atpApp in the compiler (where IDEA is used as an example)

3.run atpApp function, start atp

atp-fe

1.Download the atp-fe code

2.enter the atp-fe folder, run npm install and npm run build

3.download the website-gateway code

4.Create a static folder in the src/main/resources/ folder on website-gateway

5.copy the contents in the dist folder compiled by the atp-fe to the static folder of website-gateway

6.Modify the server.port in the /src/main/resources/application.yaml document in the website-gateway 8080 `

7.Configuring runtime environment variables for GatewayApp in the compiler (where IDEA is used as an example)

8.Run GatewayApp Launch WebiteGateway and atp-fe, browser access to http://127.0.0.1:8080/ to access the atp homepage

ATP Guide

Overview

  • The application test authentication service is currently divided into management side functions and user plane functions.

  • On the management side, administrators can manage test scenarios, test suites, test cases, test tasks, contributed test cases and config item. The menu for contribution management is visible only to the administrator. The platform has built-in community scenarios and 3 sample operator scenarios. For community scenarios, the platform has built-in general security test test suites, general compliance test test suites, and general sandbox test test suites. There are corresponding test cases under each test suite. The platform supports one-click batch import of test models to facilitate the addition of batch test models. For test tasks with manual use cases, the administrator can manually change the test case status in the background to complete the update of the manual test case status.

  • For developers, after the developer platform develops app, the generated csars package will not be published to the app store until after the application test is passed. For suppliers or manufacturers who already have an application package, the app can be released to the app store after the app has been uploaded. The user can select the scene to be tested, wherein the community scene is selected and then the system dynamically displays the execution process of the test case. When the test is complete, a test report is generated and an analysis of the test results is given and the user can download the test report in pdf format. User can finish the contribution to the test case by filling the description of the test case or the way of uploading the script.

Admin Face Home

You can directly click on the homepage to view all test cases. The homepage also introduces the functions of each menu module and displays the statistics of the number of test tasks in the past 6 months.

Management side test scene management

The test scene page displays all the test scenarios that the platform contains, the administrator can add the test scene, edit the existing test scene, and delete the existing test scene.

Management side test suite management

The test suite page displays all the test suites that the platform contains, one test suite belonging to one or more test scenarios and the administrator can add test suites, edit existing test suites and delete already existing test suites.

Management side test case management

The test case page display platform includes all test cases, one test case belongs to one or more test suites, the administrator can add test cases, edit existing test cases and also delete existing test cases.

One-click import of management plane test models.

In order to facilitate the administrator to import test scenarios, test suites and test cases in batches, the management plane provides a test model import function. The administrator can write the description of the test scenarios, test suites and test cases in the excel sheet, and put the test case scripts and test scenario icons in the specified folder, and finally compress them into a zip package, and complete the test by importing the zip package Model batch import function. The administrator can complete the batch import function of test models in the batch import button on the upper right corner of the test scenario page, test suite page or test case page.

Management side test mission management

The task management shows all the test tasks and the administrator can delete the test task in bulk or modify the state of the manual use case.

Management side config item management

Configuration item management displays all configuration item information. Each configuration item can be associated with one or more test cases, making test case parameters configurable and more flexible.

App Store Test Credentials Portal

After uploading the application package on the homepage of the application store, in my application, click Test on the right side of the corresponding application package to enter the application testing process.

Test Scene Selection & Test Use Case Contribution

The user can choose the scene that wants to be tested, the community scene is mandatory and the rest of the scene is chosen by the user according to the needs of the user. The upper right side of the page is provided with an inlet for contributing test case, click test case, and supporting the user to contribute test case in the way of description or script.

Test Progress Visualization & Supporting user upload self-test report & Report Look

The test progress page dynamically displays the execution condition of the use case, and all test cases of the automation type are automatically executed;

If users have unique tests related to the application, they can upload self-test report in PDF format. If the user uploads the self-test report, the final test report will display the self-test report and the platform report together.

The report page displays the basic information of the test task, the test case pass rate of each test scene and the detailed information of the test case.

Developer

Developer Overview

This is a consolidated entrance for open source developers, which includes development processes, development tools, open API capabilities, integrated test validation, developer exchange forums, and so on. This facilitates a faster development of applications and integration of the same into the edgegallery platform for the developers. The Developer has a backend division, which provides main function interface or other three way system call for the frontend, which is a front-desk that provides interface display.

Architecture Design

  1. Developer-fe Developer Platform frontend framework, developed using VUE.

  2. Developer-be Developer Platform Backend framework, developed using SpringBoot and ServiceComb. (For ServiceComb, please refer to this here: https://servicecomb.apache.org/

  3. Developer DB Backend depends on Postgres database.

Deployment View

The above deployment views are designed in accordance with K8S deployment and can be initiated directly in virtual machines or docker containers during actual deployment, with the following points to be noted during the deployment process:

Developer Feature List

Feature Name

Feature Description

Design Constraints

Toolbox

The App development tools that are available to developers can be downloaded and used by developers, and it is also available for community developers.

Competence Center

Shows all the capabilities provided by the developer platform, including the capabilities provided by the platform itself, and the capabilities shared by other developers to this platform to develop and deploy projects.

Application incubation

Application incubation is a project management platform provided to developers. Developers can create projects to complete the entire process of App development-testing-release. It supports deployment and debugging of container and virtual machine applications

System Management

The system menu is a management menu provided to the administrator and this is primarily responsible for testing the management of sandboxes and capacity centres (services)

Document

The document menu includes an introduction to the platform, development tools, and presentations on how to publish competencies to the developer platform.

Competence Center

Competence center displays all the capabilities of Developer Platform (the ability of developers to share and the ability of the platform itself). It also contains detailed API description documents for developers to see, simulate, experience online.

Application incubation

Developers manage their own APP development process by creating projects here. There are two development modes:

  1. New application is deployed and tested on the development integration platform, and finally released to the application repository

  2. Select scene supportprofileApplication scenario,integratedprofileRelated basic abilities。

End-to-end development process provided by the development integration platform is as follows:

Create Item

When creating a project,Need to enter the basic information of the project。The current version supports container applications and virtual machine applications。 Enter picture description

Competence Center - Optional

The abilities selected when creating the project,Here will show the details of the corresponding capabilitiesAPI,Help developers understand how to call capability services,And provide in the backgroundAPIEmulator,Can be testedAPIRequest and return value。 Enter picture description

Select sandbox

Deploy the test

The container application deployment is divided into three deployments:

  • Upload APP Mirror

    Integrated development-System Management-System image management-Container image

    • Upload the image file to the container image management。

  • Configuring deployment documents

    Provide two ways to configure and deploy files, support online editing and modification:

    • K8s deployment yaml file upload is supported, and the platform provides basic verification functions; for the format of the configuration file, you can refer to the demo sample provided by the interface, which can be directly uploaded and used.

    • supporthelmchartFile Upload。

  • Deploy the test

    • Step1 start the deployment, start generating the deployment file -> get the test node -> instantiate the application -> get the deployment status

    • Step2 After the deployment is successful, the POD information that has been deployed will be displayed

    • Step3 Test the application with the port number exposed by the application developer

    • Step4 Can log in remotely,View application deployment details and logs

    • Step5 Upon completion, release the test environment through the [Resource Recovery] button. If you need to modify the image, please cycle the above Step1->Step2->Step3->Step4 operations to test the application repeatedly.

The virtual machine application deployment adjustment is divided into the following three steps:

  • Choose virtual machine sandbox

Configure the specifications, mirroring, network and other information of the virtual machine.

  • Enter the name of the virtual machine.

  • Configure the virtual machine image source

  • Configure virtual machine resource specifications

  • Set the virtual machine network type, select all by default

  • Start the virtual machine

The applied virtual machine can be remotely logged in and SSH to the virtual machine for application development and debugging:

  • Export Mirror

    • Download the image to the image management

Make mirror

Package the application according to the basic information of the project:

Test certification

Connecting to the certification test platform, all developed applications need to pass the certification test platform certification before they can be released to the AppStore platform, and the generated certification test report will be sent to the AppStore platform.

  • Execute test cases

  • Application Publish

The certified application can be directly published to the EdgeGallery’s AppStore platform, and if the application service release configuration is completed when [application configuration] is available, the application will also be used as a capability service, and can be used by other application developers.

System

The system menu is mainly open to users with administrator privileges, and provides management of sandbox nodes, image management, and platform capabilities.

Sandbox Management
  • Sandbox Node List

  • Add Sandbox Node

Competence Center Management
  • List of Competence Centers

  • Competence Center

Developer Interfaces

1. Plugin

Development environment plug-in or sdk

1.1 POST upload plugin

Upload one plugin with some params.

Resource URI: /mec/developer/v1/plugins/

Name

Definition

Type

Required

pluginFile

pluginfile

requestpart

yes

logoFile

pluginlogofile

requestpart

yes

apiFile

pluginapifile

requestpart

yes

pluginName

pluginname

requestparam

yes

codeLanguage

languagerepresentedbytheplugin

requestparam

yes

pluginType

1plugin2sdk

requestparam

yes

version

pluginversion

requestparam

yes

introduction

pluginbrief

requestparam

yes

userId

theauthor’sidofuploadplugin

requestparam

yes

userName

theauthor’snameofuploadplugin

requestparam

yes

Example response

200 OK
{
  "pluginId": "string",
  "pluginName": "string",
  "introduction": "string",
  "satisfaction": 0,
  "codeLanguage": "string",
  "pluginType": "string",
  "version": "string",
  "scoreCount": 0,
  "downloadCount": 0,
  "logoFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  },
  "pluginFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  },
  "uploadTime": "2020-12-29T01:38:05.596Z",
  "user": {
    "userId": "string",
    "userName": "string"
  },
  "apiFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  }
}
1.2 GET all plugin

Query all plugin or sdk

Resource URI: /mec/developer/v1/plugins/

Name

Definition

Type

Required

pluginType

plugin type

request param

yes

limit

the max count of one page

request param

yes

offset

start index of the page

request param

yes

Example response

200 OK
{
  "results": [
    {}
  ],
  "limit": 0,
  "offset": 0,
  "total": 0
}
1.3 DELETE one plugin

Delete one plugin by pluginId

Resource URI: /mec/developer/v1/plugins/{pluginId}

Name

Definition

Type

Required

pluginId

plugin id

path param

yes

Example response

200 OK
  true
1.4 GET download plugin

Download one plugin

Resource URI: /mec/developer/v1/plugins/{pluginId}/action/download

Name

Definition

Type

Required

pluginId

plugin id

path param

yes

Example response

200 OK
  binary output.
1.6 GET download api

Download plugin’s api file

Resource URI: /mec/developer/v1/plugins/{pluginId}/action/get-apifile

Name

Definition

Type

Required

pluginId

plugin id

path param

yes

Example response

200 OK
  binary output.
1.7 PUT update plugin

Update api by id

Resource URI: /mec/developer/v1/plugins/{pluginId}

Name

Definition

Type

Required

pluginId

pluginid

pathparam

yes

pluginFile

pluginfile

requestpart

no

logoFile

pluginlogofile

requestpart

no

apiFile

pluginapifile

requestpart

no

pluginName

pluginname

requestpart

no

codeLanguage

languagerepresentedbytheplugin

requestpart

no

pluginType

1plugin2sdk

requestpart

no

version

pluginversion

requestpart

no

introduction

pluginbrief

requestpart

no

Example response

200 OK
 {
  "pluginId": "string",
  "pluginName": "string",
  "introduction": "string",
  "satisfaction": 0,
  "codeLanguage": "string",
  "pluginType": "string",
  "version": "string",
  "scoreCount": 0,
  "downloadCount": 0,
  "logoFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  },
  "pluginFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  },
  "uploadTime": "2020-12-29T01:38:05.596Z",
  "user": {
    "userId": "string",
    "userName": "string"
  },
  "apiFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  }
}
1.8 PUT mark plugin

Update plugin satisfaction by pluginId

Resource URI: /mec/developer/v1/plugins/{pluginId}/action/score

Name

Definition

Type

Required

pluginId

pluginid

pathparam

yes

score

pluginsatisfaction

requestparam

yes

userId

raterid

requestparam

yes

userName

ratername

requestparam

yes

Example response

200 OK
 {
  "pluginId": "string",
  "pluginName": "string",
  "introduction": "string",
  "satisfaction": 0,
  "codeLanguage": "string",
  "pluginType": "string",
  "version": "string",
  "scoreCount": 0,
  "downloadCount": 0,
  "logoFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  },
  "pluginFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  },
  "uploadTime": "2020-12-29T01:38:05.596Z",
  "user": {
    "userId": "string",
    "userName": "string"
  },
  "apiFile": {
    "originalFileName": "string",
    "storageAddress": "string",
    "fileSize": 0,
    "hashCode": "string",
    "name": "string",
    "size": 0
  }
}
1.9 GET api content

Get plugin api content by pluginId

Resource URI: /mec/developer/v1/plugins/{pluginId}/action/content

Name

Definition

Type

Required

pluginId

pluginid

pathparam

yes

Example response

200 OK
 string output.

2. Container Image

operate about container app image

2.1 POST upload container image

Upload image with some params.

Resource URI: /mec/developer/v2/containerimages/{imageId}/action/upload

Name

Definition

Type

Required

imageId

imageId

path param

yes

id

id

query param

yes

chunkNumber

chunkNumber

path param

yes

chunkSize

chunkSize

query param

yes

currentChunkSize

currentChunkSize

query param

yes

totalSize

totalSize

query param

yes

identifier

identifier

query param

yes

filename

filename

query param

yes

relativePath

relativePath

query param

yes

totalChunks

totalChunks

query param

yes

type

type

query param

yes

file

file

query param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
2.2 Cancel upload container image

cancel upload image

Resource URI: /mec/developer/v2/containerimages/{imageId}/action/upload

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
2.3 PUT modify image

modify image record

Resource URI: /mec/developer/v2/containerimages/{imageId}

Name

Definition

Type

Required

ContainerImage

ContainerImage

request body param

yes

imageId

imageId

path param

yes

ContainerImage:
{
  "imageId": "string",
  "imageName": "string",
  "imageVersion": "string",
  "userId": "string",
  "userName": "string",
  "uploadTime": "2021-10-12T08:37:38.000+0000",
  "createTime": "2021-10-12T08:37:38.000+0000",
  "imageStatus": "UPLOAD_SUCCEED",
  "imageType": "string",
  "imagePath": "string",
  "fileName": "string"
}

Example response

200 OK
{
  "imageId": "string",
  "imageName": "string",
  "imageVersion": "string",
  "userId": "string",
  "userName": "string",
  "uploadTime": "2021-10-12T08:37:38.000+0000",
  "createTime": "2021-10-12T08:37:38.000+0000",
  "imageStatus": "UPLOAD_SUCCEED",
  "imageType": "string",
  "imagePath": "string",
  "fileName": "string"
}
2.4 DELETE container image

delete image

Resource URI: /mec/developer/v2/containerimages/{imageId}

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
true
2.5 GET download image

download container image

Resource URI: /mec/developer/v2/containerimages/{imageId}/action/download

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
binary output.
2.6 POST query all image

query all container image

Resource URI: /mec/developer/v2/containerimages/action/get-all-images

Name

Definition

Type

Required

ContainerImageReq

ContainerImageReq

request body param

yes

ContainerImageReq:
{
  "imageName": "string",
  "userId": "string",
  "uploadTimeBegin": "string",
  "uploadTimeEnd": "string",
  "limit": 0,
  "offset": 0,
  "sortBy": "string",
  "sortOrder": "string"
}

Example response

200 OK
{
  "imageId": "string",
  "imageName": "string",
  "imageVersion": "string",
  "userId": "string",
  "userName": "string",
  "uploadTime": "2021-10-12T08:17:01.000Z",
  "createTime": "2021-10-12T08:17:01.000Z",
  "imageStatus": "UPLOAD_WAIT",
  "imageType": "string",
  "imagePath": "string",
  "fileName": "string"
}
2.7 GET merge container image

merge container image

Resource URI: /mec/developer/v2/containerimages/{imageId}/action/merge

Name

Definition

Type

Required

imageId

imageId

path param

yes

fileName

fileName

query param

yes

guid

guid

query param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
2.8 GET synchronize image

synchronize container image

Resource URI: /mec/developer/v2/containerimages/action/synchronize

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}

3. Application

Edge application created by the developer platform

3.1 GET one page application

Query one page application with userId.

Resource URI: /mec/developer/v2/applications/

Name

Definition

Type

Required

name

application name

query param

yes

limit

limit

query param

yes

offset

offset

query param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "description": "string",
    "version": "string",
    "provider": "string",
    "architecture": "string",
    "appClass": "CONTAINER",
    "type": "string",
    "industry": "string",
    "iconFileId": "string",
    "guideFileId": "string",
    "appCreateType": "INTEGRATED",
    "createTime": "string",
    "status": "CREATED",
    "userId": "string",
    "userName": "string",
    "mepHostId": "string",
    "pkgSpecId": "string",
    "appPackage": {
      "id": "string",
      "appId": "string",
      "packageFileName": "string",
      "packageFilePath": "string"
    },
    "atpTestTaskList": [],
    "appConfiguration": {
      "appCertificate": {
        "ak": "string",
        "sk": "string"
      },
      "appServiceProducedList": [],
      "appServiceRequiredList": [],
      "trafficRuleList": [],
      "dnsRuleList": []
    },
    "scriptList": []
  }
]
3.2 GET one application

Query application by id

Resource URI:  /mec/developer/v2/applications/{applictaionId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "version": "string",
  "provider": "string",
  "architecture": "string",
  "appClass": "CONTAINER",
  "type": "string",
  "industry": "string",
  "iconFileId": "string",
  "guideFileId": "string",
  "appCreateType": "INTEGRATED",
  "createTime": "string",
  "status": "CREATED",
  "userId": "string",
  "userName": "string",
  "mepHostId": "string",
  "pkgSpecId": "string",
  "appPackage": {
    "id": "string",
    "appId": "string",
    "packageFileName": "string",
    "packageFilePath": "string"
  },
  "atpTestTaskList": [],
  "appConfiguration": {
    "appCertificate": {
      "ak": "string",
      "sk": "string"
   },
    "appServiceProducedList": [],
    "appServiceRequiredList": [],
    "trafficRuleList": [],
    "dnsRuleList": []
  },
  "scriptList": []
}
3.3 POST create one application

Create one application with some params

Resource URI: /mec/developer/v2/applications

Name

Definition

Type

Required

Application

Entityclass

body param

yes

Application:
{
  "name": "string",
  "description": "string",
  "version": "string",
  "provider": "string",
  "architecture": "string",
  "appClass": "CONTAINER",
  "type": "string",
  "industry": "string",
  "iconFileId": "string",
  "guideFileId": "string",
  "appCreateType": "INTEGRATED",
  "userId": "string",
  "userName": "string",
  "pkgSpecId": "string",
  "scriptList": [
    {
      "id": "string",
      "name": "string",
      "scriptFileId": "string",
      "createTime": "2021-12-29T06:44:05.343Z"
    }
  ]
}

Example response

{
  "id": "string",
  "name": "string",
  "description": "string",
  "version": "string",
  "provider": "string",
  "architecture": "string",
  "appClass": "CONTAINER",
  "type": "string",
  "industry": "string",
  "iconFileId": "string",
  "guideFileId": "string",
  "appCreateType": "INTEGRATED",
  "createTime": "string",
  "status": "CREATED",
  "userId": "string",
  "userName": "string",
  "mepHostId": "string",
  "pkgSpecId": "string",
  "appPackage": {
    "id": "string",
    "appId": "string",
    "packageFileName": "string",
    "packageFilePath": "string"
  },
  "atpTestTaskList": [],
  "appConfiguration": {
    "appCertificate": {
      "ak": "string",
      "sk": "string"
   },
    "appServiceProducedList": [],
    "appServiceRequiredList": [],
    "trafficRuleList": [],
    "dnsRuleList": []
  },
  "scriptList": []
}
3.4 DELETE one application

Delete one application by id

Resource URI: /mec/developer/v2/applications/{applicationId}

Name

Definition

Type

Required

applicationId

applicationId id

path param

yes

Example response

200 OK
true
3.5 PUT modify one application

Modify one application by id

Resource URI: /mec/developer/v2/applications/{applicationId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

application

Application

body param

yes

Application
{
  "id": "string",
  "name": "string",
  "description": "string",
  "version": "string",
  "provider": "string",
  "architecture": "string",
  "appClass": "CONTAINER",
  "type": "string",
  "industry": "string",
  "iconFileId": "string",
  "guideFileId": "string",
  "appCreateType": "INTEGRATED",
  "status": "CREATED",
  "userId": "string",
  "userName": "string",
  "mepHostId": "string",
  "pkgSpecId": "string",
  "scriptList": []
}

Example response

200 OK
true
3.6 GET application detail

get one application detail

Resource URI: /mec/developer/v2/applications/{applicationId}/detail

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
{
  "vmApp": {
    "id": "string",
    "name": "string",
    "description": "string",
    "version": "string",
    "provider": "string",
    "architecture": "string",
    "appClass": "CONTAINER",
    "type": "string",
    "industry": "string",
    "iconFileId": "string",
    "guideFileId": "string",
    "appCreateType": "INTEGRATED",
    "createTime": "string",
    "status": "CREATED",
    "userId": "string",
    "userName": "string",
    "mepHostId": "string",
    "pkgSpecId": "string",
    "appPackage": {
      "id": "string",
      "appId": "string",
      "packageFileName": "string",
      "packageFilePath": "string"
    },
    "atpTestTaskList": [
      {
        "id": "string",
        "appName": "string",
        "status": "string",
        "createTime": "string"
      }
    ],
    "appConfiguration": {
      "appCertificate": {
        "ak": "string",
        "sk": "string"
      },
      "appServiceProducedList": [
        {
          "appServiceProducedId": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "description": "string",
          "apiFileId": "string",
          "guideFileId": "string",
          "iconFileId": "string",
          "serviceName": "string",
          "internalPort": 0,
          "version": "string",
          "protocol": "string",
          "author": "string",
          "experienceUrl": "string",
          "dnsRuleIdList": [
            "string"
          ],
          "trafficRuleIdList": [
            "string"
          ]
        }
      ],
      "appServiceRequiredList": [
        {
          "id": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "twoLevelNameEn": "string",
          "serName": "string",
          "version": "string",
          "requestedPermissions": false,
          "appId": "string",
          "packageId": "string"
        }
      ],
      "trafficRuleList": [
        {
          "trafficRuleId": "string",
          "filterType": "string",
          "priority": 0,
          "trafficFilter": [
            {
              "srcAddress": [
                "string"
              ],
              "dstAddress": [
                "string"
              ],
              "srcPort": [
                "string"
              ],
              "dstPort": [
                "string"
              ],
              "protocol": [
                "string"
              ],
              "tag": [
                "string"
              ],
              "srcTunnelAddress": [
                "string"
              ],
              "tgtTunnelAddress": [
                "string"
              ],
              "srcTunnelPort": [
                "string"
              ],
              "dstTunnelPort": [
                "string"
              ],
              "qCI": 0,
              "dSCP": 0,
              "tC": 0
            }
          ],
          "action": "string",
          "dstInterface": [
            {
              "interfaceType": "string",
              "tunnelInfo": {
                "tunnelType": "string",
                "tunnelDstAddress": "string",
                "tunnelSrcAddress": "string",
                "tunnelSpecificData": "string"
              },
              "srcMacAddress": "string",
              "dstMacAddress": "string",
              "dstIpAddress": "string"
            }
          ]
        }
      ],
      "dnsRuleList": [
        {
          "dnsRuleId": "string",
          "domainName": "string",
          "ipAddressType": "string",
          "ipAddress": "string",
          "ttl": "string"
        }
      ]
    },
    "scriptList": [
      {
        "id": "string",
        "name": "string",
        "scriptFileId": "string",
        "createTime": "2021-12-29T07:10:56.154Z"
      }
    ],
    "vmList": [
      {
        "id": "string",
        "name": "string",
        "flavorId": "string",
        "imageId": 0,
        "targetImageId": 0,
        "vmCertificate": {
          "certificateType": "string",
          "pwdCertificate": {
            "password": "string",
            "username": "string"
          },
          "keyPairCertificate": {
            "keyPairId": "string"
          }
        },
        "userData": "string",
        "portList": [
          {
            "id": "string",
            "name": "string",
            "description": "string",
            "networkName": "string"
          }
        ],
        "status": "NOT_DEPLOY",
        "areaZone": "string",
        "flavorExtraSpecs": "string",
        "vmInstantiateInfo": {
          "operationId": "string",
          "appPackageId": "string",
          "distributedMecHost": "string",
          "mepmPackageId": "string",
          "appInstanceId": "string",
          "vmInstanceId": "string",
          "status": "PACKAGE_GENERATING",
          "instantiateTime": "2021-12-29T07:10:56.162Z",
          "log": "string",
          "vncUrl": "string",
          "portInstanceList": [
            {
              "networkName": "string",
              "ipAddress": "string"
            }
          ]
        },
        "imageExportInfo": {
          "operationId": "string",
          "imageInstanceId": "string",
          "name": "string",
          "imageFileName": "string",
          "format": "string",
          "checkSum": "string",
          "status": "IMAGE_CREATING",
          "downloadUrl": "string",
          "imageSize": "string",
          "createTime": "2021-12-29T07:10:56.162Z",
          "log": "string"
        }
      }
    ],
    "networkList": [
      {
        "id": "string",
        "name": "string",
        "description": "string"
      }
    ]
  },
  "containerApp": {
    "id": "string",
    "name": "string",
    "description": "string",
    "version": "string",
    "provider": "string",
    "architecture": "string",
    "appClass": "CONTAINER",
    "type": "string",
    "industry": "string",
    "iconFileId": "string",
    "guideFileId": "string",
    "appCreateType": "INTEGRATED",
    "createTime": "string",
    "status": "CREATED",
    "userId": "string",
    "userName": "string",
    "mepHostId": "string",
    "pkgSpecId": "string",
    "appPackage": {
      "id": "string",
      "appId": "string",
      "packageFileName": "string",
      "packageFilePath": "string"
    },
    "atpTestTaskList": [
      {
        "id": "string",
        "appName": "string",
        "status": "string",
        "createTime": "string"
      }
    ],
    "appConfiguration": {
      "appCertificate": {
        "ak": "string",
        "sk": "string"
      },
      "appServiceProducedList": [
        {
          "appServiceProducedId": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "description": "string",
          "apiFileId": "string",
          "guideFileId": "string",
          "iconFileId": "string",
          "serviceName": "string",
          "internalPort": 0,
          "version": "string",
          "protocol": "string",
          "author": "string",
          "experienceUrl": "string",
          "dnsRuleIdList": [
            "string"
          ],
          "trafficRuleIdList": [
            "string"
          ]
        }
      ],
      "appServiceRequiredList": [
        {
          "id": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "twoLevelNameEn": "string",
          "serName": "string",
          "version": "string",
          "requestedPermissions": false,
          "appId": "string",
          "packageId": "string"
        }
      ],
      "trafficRuleList": [
        {
          "trafficRuleId": "string",
          "filterType": "string",
          "priority": 0,
          "trafficFilter": [
            {
              "srcAddress": [
                "string"
              ],
              "dstAddress": [
                "string"
              ],
              "srcPort": [
                "string"
              ],
              "dstPort": [
                "string"
              ],
              "protocol": [
                "string"
              ],
              "tag": [
                "string"
              ],
              "srcTunnelAddress": [
                "string"
              ],
              "tgtTunnelAddress": [
                "string"
              ],
              "srcTunnelPort": [
                "string"
              ],
              "dstTunnelPort": [
                "string"
              ],
              "qCI": 0,
              "dSCP": 0,
              "tC": 0
            }
          ],
          "action": "string",
          "dstInterface": [
            {
              "interfaceType": "string",
              "tunnelInfo": {
                "tunnelType": "string",
                "tunnelDstAddress": "string",
                "tunnelSrcAddress": "string",
                "tunnelSpecificData": "string"
              },
              "srcMacAddress": "string",
              "dstMacAddress": "string",
              "dstIpAddress": "string"
            }
          ]
        }
      ],
      "dnsRuleList": [
        {
          "dnsRuleId": "string",
          "domainName": "string",
          "ipAddressType": "string",
          "ipAddress": "string",
          "ttl": "string"
        }
      ]
    },
    "scriptList": [
      {
        "id": "string",
        "name": "string",
        "scriptFileId": "string",
        "createTime": "2021-12-29T07:10:56.154Z"
      }
    ],
    "helmChartList": [
      {
        "id": "string",
        "name": "string",
        "helmChartFileId": "string",
        "createTime": "2021-12-29T07:10:56.162Z",
        "applicationId": "string",
        "helmChartFileList": [
          {
            "name": "string",
            "innerPath": "string",
            "children": [
              {}
            ],
            "content": "string",
            "file": false
          }
        ]
      }
    ],
    "instantiateInfo": {
      "operationId": "string",
      "appPackageId": "string",
      "distributedMecHost": "string",
      "mepmPackageId": "string",
      "appInstanceId": "string",
      "status": "PACKAGE_GENERATING",
      "log": "string",
      "instantiateTime": "2021-12-29T07:10:56.162Z",
      "pods": [
        {
          "name": "string",
          "podStatus": "string",
          "eventsInfo": "string",
          "containerList": [
            {
              "name": "string",
              "cpuUsage": "string",
              "memUsage": "string",
              "diskUsage": "string"
            }
          ]
        }
      ],
      "serviceList": [
        {
          "name": "string",
          "type": "string",
          "servicePortList": [
            {
              "port": "string",
              "targetPort": "string",
              "nodePort": "string"
            }
          ]
        }
      ]
    }
  }
}
3.7 PUT modify application detail

Update application detail

Resource URI: /mec/developer/v2/applications/{applicationId}/detail

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

ApplicationDetail

applicationdetail

body param

yes

ApplicationDetail:
{
  "vmApp": {
    "id": "string",
    "name": "string",
    "description": "string",
    "version": "string",
    "provider": "string",
    "architecture": "string",
    "appClass": "CONTAINER",
    "type": "string",
    "industry": "string",
    "iconFileId": "string",
    "guideFileId": "string",
    "appCreateType": "INTEGRATED",
    "createTime": "string",
    "status": "CREATED",
    "userId": "string",
    "userName": "string",
    "mepHostId": "string",
    "pkgSpecId": "string",
    "appPackage": {
      "id": "string",
      "appId": "string",
      "packageFileName": "string",
      "packageFilePath": "string"
    },
    "atpTestTaskList": [
      {
        "id": "string",
        "appName": "string",
        "status": "string",
        "createTime": "string"
      }
    ],
    "appConfiguration": {
      "appCertificate": {
        "ak": "string",
        "sk": "string"
      },
      "appServiceProducedList": [
        {
          "appServiceProducedId": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "description": "string",
          "apiFileId": "string",
          "guideFileId": "string",
          "iconFileId": "string",
          "serviceName": "string",
          "internalPort": 0,
          "version": "string",
          "protocol": "string",
          "author": "string",
          "experienceUrl": "string",
          "dnsRuleIdList": [
            "string"
          ],
          "trafficRuleIdList": [
            "string"
          ]
        }
      ],
      "appServiceRequiredList": [
        {
          "id": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "twoLevelNameEn": "string",
          "serName": "string",
          "version": "string",
          "requestedPermissions": false,
          "appId": "string",
          "packageId": "string"
        }
      ],
      "trafficRuleList": [
        {
          "trafficRuleId": "string",
          "filterType": "string",
          "priority": 0,
          "trafficFilter": [
            {
              "srcAddress": [
                "string"
              ],
              "dstAddress": [
                "string"
              ],
              "srcPort": [
                "string"
              ],
              "dstPort": [
                "string"
              ],
              "protocol": [
                "string"
              ],
              "tag": [
                "string"
              ],
              "srcTunnelAddress": [
                "string"
              ],
              "tgtTunnelAddress": [
                "string"
              ],
              "srcTunnelPort": [
                "string"
              ],
              "dstTunnelPort": [
                "string"
              ],
              "qCI": 0,
              "dSCP": 0,
              "tC": 0
            }
          ],
          "action": "string",
          "dstInterface": [
            {
              "interfaceType": "string",
              "tunnelInfo": {
                "tunnelType": "string",
                "tunnelDstAddress": "string",
                "tunnelSrcAddress": "string",
                "tunnelSpecificData": "string"
              },
              "srcMacAddress": "string",
              "dstMacAddress": "string",
              "dstIpAddress": "string"
            }
          ]
        }
      ],
      "dnsRuleList": [
        {
          "dnsRuleId": "string",
          "domainName": "string",
          "ipAddressType": "string",
          "ipAddress": "string",
          "ttl": "string"
        }
      ]
    },
    "scriptList": [
      {
        "id": "string",
        "name": "string",
        "scriptFileId": "string",
        "createTime": "2021-12-29T07:10:56.154Z"
      }
    ],
    "vmList": [
      {
        "id": "string",
        "name": "string",
        "flavorId": "string",
        "imageId": 0,
        "targetImageId": 0,
        "vmCertificate": {
          "certificateType": "string",
          "pwdCertificate": {
            "password": "string",
            "username": "string"
          },
          "keyPairCertificate": {
            "keyPairId": "string"
          }
        },
        "userData": "string",
        "portList": [
          {
            "id": "string",
            "name": "string",
            "description": "string",
            "networkName": "string"
          }
        ],
        "status": "NOT_DEPLOY",
        "areaZone": "string",
        "flavorExtraSpecs": "string",
        "vmInstantiateInfo": {
          "operationId": "string",
          "appPackageId": "string",
          "distributedMecHost": "string",
          "mepmPackageId": "string",
          "appInstanceId": "string",
          "vmInstanceId": "string",
          "status": "PACKAGE_GENERATING",
          "instantiateTime": "2021-12-29T07:10:56.162Z",
          "log": "string",
          "vncUrl": "string",
          "portInstanceList": [
            {
              "networkName": "string",
              "ipAddress": "string"
            }
          ]
        },
        "imageExportInfo": {
          "operationId": "string",
          "imageInstanceId": "string",
          "name": "string",
          "imageFileName": "string",
          "format": "string",
          "checkSum": "string",
          "status": "IMAGE_CREATING",
          "downloadUrl": "string",
          "imageSize": "string",
          "createTime": "2021-12-29T07:10:56.162Z",
          "log": "string"
        }
      }
    ],
    "networkList": [
      {
        "id": "string",
        "name": "string",
        "description": "string"
      }
    ]
  },
  "containerApp": {
    "id": "string",
    "name": "string",
    "description": "string",
    "version": "string",
    "provider": "string",
    "architecture": "string",
    "appClass": "CONTAINER",
    "type": "string",
    "industry": "string",
    "iconFileId": "string",
    "guideFileId": "string",
    "appCreateType": "INTEGRATED",
    "createTime": "string",
    "status": "CREATED",
    "userId": "string",
    "userName": "string",
    "mepHostId": "string",
    "pkgSpecId": "string",
    "appPackage": {
      "id": "string",
      "appId": "string",
      "packageFileName": "string",
      "packageFilePath": "string"
    },
    "atpTestTaskList": [
      {
        "id": "string",
        "appName": "string",
        "status": "string",
        "createTime": "string"
      }
    ],
    "appConfiguration": {
      "appCertificate": {
        "ak": "string",
        "sk": "string"
      },
      "appServiceProducedList": [
        {
          "appServiceProducedId": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "description": "string",
          "apiFileId": "string",
          "guideFileId": "string",
          "iconFileId": "string",
          "serviceName": "string",
          "internalPort": 0,
          "version": "string",
          "protocol": "string",
          "author": "string",
          "experienceUrl": "string",
          "dnsRuleIdList": [
            "string"
          ],
          "trafficRuleIdList": [
            "string"
          ]
        }
      ],
      "appServiceRequiredList": [
        {
          "id": "string",
          "oneLevelName": "string",
          "oneLevelNameEn": "string",
          "twoLevelName": "string",
          "twoLevelNameEn": "string",
          "serName": "string",
          "version": "string",
          "requestedPermissions": false,
          "appId": "string",
          "packageId": "string"
        }
      ],
      "trafficRuleList": [
        {
          "trafficRuleId": "string",
          "filterType": "string",
          "priority": 0,
          "trafficFilter": [
            {
              "srcAddress": [
                "string"
              ],
              "dstAddress": [
                "string"
              ],
              "srcPort": [
                "string"
              ],
              "dstPort": [
                "string"
              ],
              "protocol": [
                "string"
              ],
              "tag": [
                "string"
              ],
              "srcTunnelAddress": [
                "string"
              ],
              "tgtTunnelAddress": [
                "string"
              ],
              "srcTunnelPort": [
                "string"
              ],
              "dstTunnelPort": [
                "string"
              ],
              "qCI": 0,
              "dSCP": 0,
              "tC": 0
            }
          ],
          "action": "string",
          "dstInterface": [
            {
              "interfaceType": "string",
              "tunnelInfo": {
                "tunnelType": "string",
                "tunnelDstAddress": "string",
                "tunnelSrcAddress": "string",
                "tunnelSpecificData": "string"
              },
              "srcMacAddress": "string",
              "dstMacAddress": "string",
              "dstIpAddress": "string"
            }
          ]
        }
      ],
      "dnsRuleList": [
        {
          "dnsRuleId": "string",
          "domainName": "string",
          "ipAddressType": "string",
          "ipAddress": "string",
          "ttl": "string"
        }
      ]
    },
    "scriptList": [
      {
        "id": "string",
        "name": "string",
        "scriptFileId": "string",
        "createTime": "2021-12-29T07:10:56.154Z"
      }
    ],
    "helmChartList": [
      {
        "id": "string",
        "name": "string",
        "helmChartFileId": "string",
        "createTime": "2021-12-29T07:10:56.162Z",
        "applicationId": "string",
        "helmChartFileList": [
          {
            "name": "string",
            "innerPath": "string",
            "children": [
              {}
            ],
            "content": "string",
            "file": false
          }
        ]
      }
    ],
    "instantiateInfo": {
      "operationId": "string",
      "appPackageId": "string",
      "distributedMecHost": "string",
      "mepmPackageId": "string",
      "appInstanceId": "string",
      "status": "PACKAGE_GENERATING",
      "log": "string",
      "instantiateTime": "2021-12-29T07:10:56.162Z",
      "pods": [
        {
          "name": "string",
          "podStatus": "string",
          "eventsInfo": "string",
          "containerList": [
            {
              "name": "string",
              "cpuUsage": "string",
              "memUsage": "string",
              "diskUsage": "string"
            }
          ]
        }
      ],
      "serviceList": [
        {
          "name": "string",
          "type": "string",
          "servicePortList": [
            {
              "port": "string",
              "targetPort": "string",
              "nodePort": "string"
            }
          ]
        }
      ]
    }
  }
}

Example response

200 OK
true

4. Mep-hosts

Server of build and test or deploy app

4.1 GET all host

Query all host.

Resource URI: /mec/developer/v2/mephosts

Name

Definition

Type

Required

name

name

query param

yes

vimType

vim type

query param

yes

architecture

architecture

query param

yes

limit

limit

query param

yes

offset

offset

query param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "lcmIp": "string",
    "lcmProtocol": "string",
    "lcmPort": 0,
    "architecture": "string",
    "status": "NORMAL",
    "mecHostIp": "string",
    "vimType": "OpenStack",
    "mecHostUserName": "string",
    "mecHostPassword": "string",
    "mecHostPort": 0,
    "userId": "string",
    "configId": "string",
    "networkParameter": "string",
    "resource": "string",
    "address": "string"
  }
]
4.2 GET one host

Query host by id.

Resource URI: /mec/developer/v2/mephosts/{mephostId}

Name

Definition

Type

Required

mephostId

hostid

path param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "lcmIp": "string",
  "lcmProtocol": "string",
  "lcmPort": 0,
  "architecture": "string",
  "status": "NORMAL",
  "mecHostIp": "string",
  "vimType": "OpenStack",
  "mecHostUserName": "string",
  "mecHostPassword": "string",
  "mecHostPort": 0,
  "userId": "string",
  "configId": "string",
  "networkParameter": "string",
  "resource": "string",
  "address": "string"
}
4.3 POST create one host

Create one host.

Resource URI: /mec/developer/v2/mephosts/

Name

Definition

Type

Required

MepHost

entityclass

bodyparam

yes

MepHost
{
  "name": "string",
  "lcmIp": "string",
  "lcmProtocol": "string",
  "lcmPort": 0,
  "architecture": "string",
  "status": "NORMAL",
  "mecHostIp": "string",
  "vimType": "OpenStack",
  "mecHostUserName": "string",
  "mecHostPassword": "string",
  "mecHostPort": 0,
  "userId": "string",
  "configId": "string",
  "networkParameter": "string",
  "resource": "string",
  "address": "string"
}

Example response

200 OK
true
4.4 DELETE one host

Delete one host.

Resource URI: /mec/developer/v2/mephosts/{mephostId}

Name

Definition

Type

Required

mephostId

hostid

pathparam

yes

Example response

200 OK
true
4.5 PUT modify one host

modify one host.

Resource URI: /mec/developer/v2/mephosts/{mephostId}

Name

Definition

Type

Required

mephostId

hostid

pathparam

yes

MepHost

entityclass

bodyparam

yes

MepHost
{
  "id": "string",
  "name": "string",
  "lcmIp": "string",
  "lcmProtocol": "string",
  "lcmPort": 0,
  "architecture": "string",
  "status": "NORMAL",
  "mecHostIp": "string",
  "vimType": "OpenStack",
  "mecHostUserName": "string",
  "mecHostPassword": "string",
  "mecHostPort": 0,
  "userId": "string",
  "configId": "string",
  "networkParameter": "string",
  "resource": "string",
  "address": "string"
}

Example response

200 OK
true
4.6 GET host logs

get host logs.

Resource URI: /mec/developer/v2/mephosts/{mephostId}/logs

Name

Definition

Type

Required

hostId

hostid

pathparam

yes

Example response

200 OK
[
  {
    "logId": "string",
    "hostIp": "string",
    "userName": "string",
    "userId": "string",
    "projectId": "string",
    "projectName": "string",
    "appInstancesId": "string",
    "deployTime": "string",
    "status": "NORMAL",
    "operation": "string",
    "hostId": "string"
  }
]
4.7 POST upload config file

upload host config file

Resource URI: /mec/developer/v2/mephosts/action/upload-config-file

Name

Definition

Type

Required

file

config file

form data

yes

Example response

200 OK
{
  "fileId": "string",
  "fileName": "string",
  "url": "string",
  "userId": "string",
  "uploadDate": "2021-12-29T07:47:58.763Z",
  "filePath": "string",
  "temp": false
}

5. Capability-groups

capability group of edge applications

5.1 POST create group

Create one Capability group.

Resource URI: /mec/developer/v2/capability-groups

Name

Definition

Type

Required

CapabilityGroup

entityclass

body param

yes

{
  "id": "string",
  "name": "string",
  "description": "string",
  "nameEn": "string",
  "descriptionEn": "string",
  "type": "string",
  "iconFileId": "string",
  "author": "string",
  "createTime": 0,
  "updateTime": 0,
  "parent": {}
}

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "nameEn": "string",
  "descriptionEn": "string",
  "type": "string",
  "iconFileId": "string",
  "author": "string",
  "createTime": 0,
  "updateTime": 0,
  "parent": {}
}
5.2 GET all group

get all group.

Resource URI: /mec/developer/v2/capability-groups/

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "description": "string",
    "nameEn": "string",
    "descriptionEn": "string",
    "type": "string",
    "iconFileId": "string",
    "author": "string",
    "createTime": 0,
    "updateTime": 0,
    "parent": {}
  }
]
5.3 GET one group

get one group

Resource URI: /mec/developer/v2/capability-groups/{id}

Name

Definition

Type

Required

id

group id

path param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "nameEn": "string",
  "descriptionEn": "string",
  "type": "string",
  "iconFileId": "string",
  "author": "string",
  "createTime": 0,
  "updateTime": 0,
  "parent": {}
}
5.4 DELETE one group

Delete one group by id

Resource URI: /mec/developer/v2/capability-groups/{id}

Name

Definition

Type

Required

id

group id

path param

yes

Example response

200 OK
true.

6. Upload-files

This part is to configure the app, perform app deployment, and test the api for file operations

6.1 GET one file

Get one file

Resource URI: /mec/developer/v2/upload-files/{fileId}

Name

Definition

Type

Required

fileId

fileid

path param

yes

Example response

200 OK
{
  "fileId": "string",
  "fileName": "string",
  "url": "string",
  "userId": "string",
  "uploadDate": "2021-12-29T08:12:37.729Z",
  "filePath": "string",
  "temp": false
}
6.2 POST upload one file

Upload file

Resource URI: /mec/developer/v2/upload-files

Name

Definition

Type

Required

file

MultipartFileclass

request part

yes

flleType

file type

query param

yes

Example response

200 OK
{
  "fileId": "string",
  "fileName": "string",
  "url": "string",
  "userId": "string",
  "uploadDate": "2020-09-14T09:03:17.084Z",
  "filePath": "string",
  "temp": false
}
6.3 POST get sample code

Get sample code.

Resource URI: /mec/developer/v2/upload-files/action/download-sample-code

Name

Definition

Type

Required

apiFileIds

apifileid list

body param

yes

List<String>
[
  "string"
]

Example response

200 OK
byte array output
6.4 GET file stream

Get file return as stream

Resource URI: /mec/developer/v2/upload-files/{fileId}/action/get-file-stream

Name

Definition

Type

Required

fileId

file id

path param

yes

Example response

200 OK
binary output.
6.5 GET sdk code

Get sdk code

Resource URI: /mec/developer/v2/upload-files/{fileId}/action/download-sdk

Name

Definition

Type

Required

fileId

file id

path param

yes

lan

sdk codeLanguage

path param

yes

Example response

200 OK
binary output
6.6 POST sample content

query file content

Resource URI: /mec/developer/v2/upload-files/action/get-sample-code-content

Name

Definition

Type

Required

apiFileIds

apiFileIds

body param

yes

Example response

200 OK
String output
6.7 POST sample structure

post pkg structure

Resource URI: /mec/developer/v2/upload-files/action/get-sample-code-structure

Name

Definition

Type

Required

apiFileIds

file id arrays

body param

yes

Example response

200 OK
{
  "name": "string",
  "id": "string",
  "children": [
    {}
  ],
  "parent": false
}
6.8 DELETE one file

post pkg structure

Resource URI: /mec/developer/v2/upload-files/{fileId}

Name

Definition

Type

Required

fileId

file id

path param

yes

Example response

200 OK
true

7. Capabilities

capability of edge applications

7.1 POST create capability

create capability

Resource URI: /mec/developer/v2/capabilities/

Name

Definition

Type

Required

Capability

Capability

body param

yes

Capability:
{
  "id": "string",
  "name": "string",
  "nameEn": "string",
  "version": "string",
  "description": "string",
  "descriptionEn": "string",
  "provider": "string",
  "apiFileId": "string",
  "guideFileId": "string",
  "guideFileIdEn": "string",
  "uploadTime": 0,
  "port": 0,
  "host": "string",
  "protocol": "string",
  "appId": "string",
  "packageId": "string",
  "userId": "string",
  "selectCount": 0,
  "iconFileId": "string",
  "author": "string",
  "experienceUrl": "string",
  "group": {
    "id": "string",
    "name": "string",
    "description": "string",
    "nameEn": "string",
    "descriptionEn": "string",
    "type": "string",
    "iconFileId": "string",
    "author": "string",
    "createTime": 0,
    "updateTime": 0,
    "parent": {}
  },
  "groupId": "string"
}

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "nameEn": "string",
  "version": "string",
  "description": "string",
  "descriptionEn": "string",
  "provider": "string",
  "apiFileId": "string",
  "guideFileId": "string",
  "guideFileIdEn": "string",
  "uploadTime": 0,
  "port": 0,
  "host": "string",
  "protocol": "string",
  "appId": "string",
  "packageId": "string",
  "userId": "string",
  "selectCount": 0,
  "iconFileId": "string",
  "author": "string",
  "experienceUrl": "string",
  "group": {
    "id": "string",
    "name": "string",
    "description": "string",
    "nameEn": "string",
    "descriptionEn": "string",
    "type": "string",
    "iconFileId": "string",
    "author": "string",
    "createTime": 0,
    "updateTime": 0,
    "parent": {}
  },
  "groupId": "string"
}
7.2 GET all capability

GET all capabilities

Resource URI: /mec/developer/v2/capabilities/

Name

Definition

Type

Required

filterType

filterType

query param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }
]
7.3 GET one capability

query one capability

Resource URI: /mec/developer/v2/capabilities/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }
]
7.4 DELETE one capability

Delete one capability

Resource URI: /mec/developer/v2/capabilities/{id}

Name

Definition

Type

Required

id

id

path param

yes

Example response

200 OK
true
7.5 PUT one capability

update one capability

Resource URI: /mec/developer/v2/capabilities/{id}

Name

Definition

Type

Required

id

id

path param

yes

capability

capability

body param

yes

capability:
{
  "id": "string",
  "name": "string",
  "nameEn": "string",
  "version": "string",
  "description": "string",
  "descriptionEn": "string",
  "provider": "string",
  "apiFileId": "string",
  "guideFileId": "string",
  "guideFileIdEn": "string",
  "uploadTime": 0,
  "port": 0,
  "host": "string",
  "protocol": "string",
  "appId": "string",
  "packageId": "string",
  "userId": "string",
  "selectCount": 0,
  "iconFileId": "string",
  "author": "string",
  "experienceUrl": "string",
  "group": {
    "id": "string",
    "name": "string",
    "description": "string",
    "nameEn": "string",
    "descriptionEn": "string",
    "type": "string",
    "iconFileId": "string",
    "author": "string",
    "createTime": 0,
    "updateTime": 0,
    "parent": {}
  },
  "groupId": "string"
}

Example response

200 OK
{
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }

8. Capability-Groups Query

Capability-Groups query

8.1 GET group by type

query group by type

Resource URI: /mec/developer/v2/query/capability-groups/type/{type}

Name

Definition

Type

Required

type

group type

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "description": "string",
    "nameEn": "string",
    "descriptionEn": "string",
    "type": "string",
    "iconFileId": "string",
    "author": "string",
    "createTime": 0,
    "updateTime": 0,
    "parent": {}
  }
]

9. Flavors

vm flavor configuration

9.1 GET all flavor

Get all flavor

Resource URI: /mec/developer/v2/flavor

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "description": "string",
    "architecture": "string",
    "cpu": 0,
    "memory": 0,
    "systemDiskSize": 0,
    "dataDiskSize": 0,
    "gpuExtraInfo": "string",
    "otherExtraInfo": "string"
  }
]
9.2 POST create one flavor

create flavor

Resource URI: /mec/developer/v2/flavors

Name

Definition

Type

Required

flavor

flavor

body param

yes

flavor
{
  "name": "string",
  "description": "string",
  "architecture": "string",
  "cpu": 0,
  "memory": 0,
  "systemDiskSize": 0,
  "dataDiskSize": 0,
  "gpuExtraInfo": "string",
  "otherExtraInfo": "string"
}

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "architecture": "string",
  "cpu": 0,
  "memory": 0,
  "systemDiskSize": 0,
  "dataDiskSize": 0,
  "gpuExtraInfo": "string",
  "otherExtraInfo": "string"
}
9.3 GET one flavor

get one flavor

Resource URI: /mec/developer/v2/flavors/{flavorId}

Name

Definition

Type

Required

flavorId

flavorId

query param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "architecture": "string",
  "cpu": 0,
  "memory": 0,
  "systemDiskSize": 0,
  "dataDiskSize": 0,
  "gpuExtraInfo": "string",
  "otherExtraInfo": "string"
}
9.4 DELETE one flavor

delete one flavor

Resource URI: /mec/developer/v2/flavors/{flavorId}

Name

Definition

Type

Required

flavorId

flavorId

query param

yes

Example response

200 OK
true

10. AppScript

some script files about application

10.1 POST upload script file

upload script file

Resource URI: /mec/developer/v2/applications/{applicationId}/scripts

Name

Definition

Type

Required

applicationId

application id

pathparam

yes

file

file

formdata param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "scriptFileId": "string",
  "createTime": "2021-12-29T13:40:01.419Z"
}

11. Health

health Check

11.1 GET health check

Get health check

Resource URI: /health

Example response

200 OK
'ok'.

12. VmApp

some operation about vm app

12.1 GET all vm

query all vm

Resource URI: /mec/developer/v2/applications/{applicationId}/vms

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "flavorId": "string",
    "imageId": 0,
    "targetImageId": 0,
    "vmCertificate": {
      "certificateType": "string",
      "pwdCertificate": {
        "password": "string",
        "username": "string"
      },
      "keyPairCertificate": {
        "keyPairId": "string"
      }
    },
    "userData": "string",
    "portList": [
      {
        "id": "string",
        "name": "string",
        "description": "string",
        "networkName": "string"
      }
    ],
    "status": "NOT_DEPLOY",
    "areaZone": "string",
    "flavorExtraSpecs": "string",
    "vmInstantiateInfo": {
      "operationId": "string",
      "appPackageId": "string",
      "distributedMecHost": "string",
      "mepmPackageId": "string",
      "appInstanceId": "string",
      "vmInstanceId": "string",
      "status": "PACKAGE_GENERATING",
      "instantiateTime": "2021-12-29T13:52:32.321Z",
      "log": "string",
      "vncUrl": "string",
      "portInstanceList": [
        {
          "networkName": "string",
          "ipAddress": "string"
        }
      ]
    },
    "imageExportInfo": {
      "operationId": "string",
      "imageInstanceId": "string",
      "name": "string",
      "imageFileName": "string",
      "format": "string",
      "checkSum": "string",
      "status": "IMAGE_CREATING",
      "downloadUrl": "string",
      "imageSize": "string",
      "createTime": "2021-12-29T13:52:32.321Z",
      "log": "string"
    }
  }
]
12.2 POST create vm

create one vm

Resource URI: /mec/developer/v2/applications/{applicationId}/vms

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

virtualMachine

virtualMachine

body param

yes

virtualMachine:
{
  "name": "string",
  "flavorId": "string",
  "imageId": 0,
  "targetImageId": 0,
  "vmCertificate": {
    "certificateType": "string",
    "pwdCertificate": {
      "password": "string",
      "username": "string"
    },
    "keyPairCertificate": {
      "keyPairId": "string"
    }
  },
  "userData": "string",
  "portList": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "networkName": "string"
    }
  ],
  "flavorExtraSpecs": "string"
}

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "flavorId": "string",
  "imageId": 0,
  "targetImageId": 0,
  "vmCertificate": {
    "certificateType": "string",
    "pwdCertificate": {
      "password": "string",
      "username": "string"
    },
    "keyPairCertificate": {
      "keyPairId": "string"
    }
  },
  "userData": "string",
  "portList": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "networkName": "string"
    }
  ],
  "status": "NOT_DEPLOY",
  "areaZone": "string",
  "flavorExtraSpecs": "string",
  "vmInstantiateInfo": {
    "operationId": "string",
    "appPackageId": "string",
    "distributedMecHost": "string",
    "mepmPackageId": "string",
    "appInstanceId": "string",
    "vmInstanceId": "string",
    "status": "PACKAGE_GENERATING",
    "instantiateTime": "2021-12-29T13:52:32.321Z",
    "log": "string",
    "vncUrl": "string",
    "portInstanceList": [
      {
        "networkName": "string",
        "ipAddress": "string"
      }
    ]
  },
  "imageExportInfo": {
    "operationId": "string",
    "imageInstanceId": "string",
    "name": "string",
    "imageFileName": "string",
    "format": "string",
    "checkSum": "string",
    "status": "IMAGE_CREATING",
    "downloadUrl": "string",
    "imageSize": "string",
    "createTime": "2021-12-29T13:52:32.321Z",
    "log": "string"
  }
}
12.3 GET one vm

get one vm

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "flavorId": "string",
  "imageId": 0,
  "targetImageId": 0,
  "vmCertificate": {
    "certificateType": "string",
    "pwdCertificate": {
      "password": "string",
      "username": "string"
    },
    "keyPairCertificate": {
      "keyPairId": "string"
    }
  },
  "userData": "string",
  "portList": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "networkName": "string"
    }
  ],
  "status": "NOT_DEPLOY",
  "areaZone": "string",
  "flavorExtraSpecs": "string",
  "vmInstantiateInfo": {
    "operationId": "string",
    "appPackageId": "string",
    "distributedMecHost": "string",
    "mepmPackageId": "string",
    "appInstanceId": "string",
    "vmInstanceId": "string",
    "status": "PACKAGE_GENERATING",
    "instantiateTime": "2021-12-29T13:52:32.321Z",
    "log": "string",
    "vncUrl": "string",
    "portInstanceList": [
      {
        "networkName": "string",
        "ipAddress": "string"
      }
    ]
  },
  "imageExportInfo": {
    "operationId": "string",
    "imageInstanceId": "string",
    "name": "string",
    "imageFileName": "string",
    "format": "string",
    "checkSum": "string",
    "status": "IMAGE_CREATING",
    "downloadUrl": "string",
    "imageSize": "string",
    "createTime": "2021-12-29T13:52:32.321Z",
    "log": "string"
  }
}
12.4 PUT modify vm

modify vm

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

virtualMachine

virtualMachine

body param

yes

virtualMachine:
{
  "id": "string",
  "name": "string",
  "flavorId": "string",
  "imageId": 0,
  "targetImageId": 0,
  "vmCertificate": {
    "certificateType": "string",
    "pwdCertificate": {
      "password": "string",
      "username": "string"
    },
    "keyPairCertificate": {
      "keyPairId": "string"
    }
  },
  "userData": "string",
  "portList": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "networkName": "string"
    }
  ],
  "status": "NOT_DEPLOY",
  "areaZone": "string",
  "flavorExtraSpecs": "string"
}

Example response

200 OK
true
12.5 DELETE one vm

delete vm

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

Example response

200 OK
true

13. Capability-group stats

query group stats

13.1 GET group stats

Get group stats

Resource URI: /mec/developer/v2/capability-group-stats/

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "description": "string",
    "nameEn": "string",
    "descriptionEn": "string",
    "type": "string",
    "iconFileId": "string",
    "author": "string",
    "createTime": 0,
    "updateTime": 0,
    "parent": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "capabilityCount": 0
  }
]

14. AppConfiguration

This part is about the api for application configuration

14.1 GET app cert

get app cert

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 Ok
{
  "ak": "string",
  "sk": "string"
}
14.2 POST create app cert

create app cert

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate

Name

Definition

Type

Required

AppCeriticate

AppCeriticate

body param

yes

applicationId

applicationId

path param

yes

AppCeriticate:
{
  "ak": "string",
  "sk": "string"
}

Example response

200 OK
{
  "ak": "string",
  "sk": "string"
}
14.3 PUT app cert

modify app cert

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

AppCeriticate

AppCeriticate

body param

yes

AppCeriticate:
{
  "ak": "string",
  "sk": "string"
}

Example response

200 OK
true
14.4 DELETE app cert

delete cert

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
true
14.5 GET all dns

get all dns rule

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 Ok
[
  {
    "dnsRuleId": "string",
    "domainName": "string",
    "ipAddressType": "string",
    "ipAddress": "string",
    "ttl": "string"
  }
]
14.6 POST create dns

create dns

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules

Name

Definition

Type

Required

DnsRule

DnsRule

body param

yes

applicationId

applicationId

path param

yes

DnsRule:
{
    "dnsRuleId": "string",
    "domainName": "string",
    "ipAddressType": "string",
    "ipAddress": "string",
    "ttl": "string"
  }

Example response

200 OK
{
    "dnsRuleId": "string",
    "domainName": "string",
    "ipAddressType": "string",
    "ipAddress": "string",
    "ttl": "string"
  }
14.7 PUT modify dns

modify dns

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules/{ruleId}

Name

Definition

Type

Required

DnsRule

DnsRule

body param

yes

ruleId

ruleId

path param

yes

applicationId

applicationId

path param

yes

DnsRule:
{
    "dnsRuleId": "string",
    "domainName": "string",
    "ipAddressType": "string",
    "ipAddress": "string",
    "ttl": "string"
  }

Example response

200 OK
true
14.8 DELETE dns

delete dns

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules/{ruleId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

ruleId

ruleId

path param

yes

Example response

200 OK
true
14.9 GET all produced svc

get all serviceProduced

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 Ok
[
  {
    "appServiceProducedId": "string",
    "oneLevelName": "string",
    "oneLevelNameEn": "string",
    "twoLevelName": "string",
    "description": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "iconFileId": "string",
    "serviceName": "string",
    "internalPort": 0,
    "version": "string",
    "protocol": "string",
    "author": "string",
    "experienceUrl": "string",
    "dnsRuleIdList": [
      "string"
    ],
    "trafficRuleIdList": [
      "string"
    ]
  }
]
14.10 POST create produced svc

create produces svc

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds

Name

Definition

Type

Required

ServiceProduced

ServiceProduced

body param

yes

applicationId

applicationId

path param

yes

ServiceProduced:
{
  "appServiceProducedId": "string",
  "oneLevelName": "string",
  "oneLevelNameEn": "string",
  "twoLevelName": "string",
  "description": "string",
  "apiFileId": "string",
  "guideFileId": "string",
  "iconFileId": "string",
  "serviceName": "string",
  "internalPort": 0,
  "version": "string",
  "protocol": "string",
  "author": "string",
  "experienceUrl": "string",
  "dnsRuleIdList": [
    "string"
  ],
  "trafficRuleIdList": [
    "string"
  ]
}

Example response

200 OK
{
  "appServiceProducedId": "string",
  "oneLevelName": "string",
  "oneLevelNameEn": "string",
  "twoLevelName": "string",
  "description": "string",
  "apiFileId": "string",
  "guideFileId": "string",
  "iconFileId": "string",
  "serviceName": "string",
  "internalPort": 0,
  "version": "string",
  "protocol": "string",
  "author": "string",
  "experienceUrl": "string",
  "dnsRuleIdList": [
    "string"
  ],
  "trafficRuleIdList": [
    "string"
  ]
}
14.11 PUT modify produced svc

modify produced svc

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds/{appServiceProducedId}

Name

Definition

Type

Required

ServiceProduced

ServiceProduced

body param

yes

appServiceProducedId

appServiceProducedId

path param

yes

applicationId

applicationId

path param

yes

ServiceProduced:
{
  "appServiceProducedId": "string",
  "oneLevelName": "string",
  "oneLevelNameEn": "string",
  "twoLevelName": "string",
  "description": "string",
  "apiFileId": "string",
  "guideFileId": "string",
  "iconFileId": "string",
  "serviceName": "string",
  "internalPort": 0,
  "version": "string",
  "protocol": "string",
  "author": "string",
  "experienceUrl": "string",
  "dnsRuleIdList": [
    "string"
  ],
  "trafficRuleIdList": [
    "string"
  ]
}

Example response

200 OK
true
14.12 DELETE produced svc

delete produced svc

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds/{appServiceProducedId}

Name

Definition

Type

Required

appServiceProducedId

appServiceProducedId

path param

yes

applicationId

applicationId

path param

yes

Example response

200 OK
true
14.13 GET all required svc

get all serviceRequired

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/servicerequireds

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 Ok
[
  {
    "id": "string",
    "oneLevelName": "string",
    "oneLevelNameEn": "string",
    "twoLevelName": "string",
    "twoLevelNameEn": "string",
    "serName": "string",
    "version": "string",
    "requestedPermissions": false,
    "appId": "string",
    "packageId": "string"
  }
]
14.14 POST create required svc

create required svc

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/servicerequireds

Name

Definition

Type

Required

ServiceRequired

ServiceRequired

body param

yes

applicationId

applicationId

path param

yes

ServiceRequired:
 {
    "id": "string",
    "oneLevelName": "string",
    "oneLevelNameEn": "string",
    "twoLevelName": "string",
    "twoLevelNameEn": "string",
    "serName": "string",
    "version": "string",
    "requestedPermissions": false,
    "appId": "string",
    "packageId": "string"
 }

Example response

200 OK
 {
    "id": "string",
    "oneLevelName": "string",
    "oneLevelNameEn": "string",
    "twoLevelName": "string",
    "twoLevelNameEn": "string",
    "serName": "string",
    "version": "string",
    "requestedPermissions": false,
    "appId": "string",
    "packageId": "string"
  }
14.15 PUT modify required svc

modify required svc

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/servicerequireds/{serName}

Name

Definition

Type

Required

ServiceRequired

ServiceRequired

body param

yes

serName

serName

path param

yes

applicationId

applicationId

path param

yes

ServiceRequired:
{
    "id": "string",
    "oneLevelName": "string",
    "oneLevelNameEn": "string",
    "twoLevelName": "string",
    "twoLevelNameEn": "string",
    "serName": "string",
    "version": "string",
    "requestedPermissions": false,
    "appId": "string",
    "packageId": "string"
}

Example response

200 OK
true
14.16 DELETE required svc

delete required svc

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds/{serviceRequiredId}

Name

Definition

Type

Required

serviceRequiredId

serviceRequiredId

path param

yes

applicationId

applicationId

path param

yes

Example response

200 OK
true
14.17 GET all traffic rule

get all traffic rule

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 Ok
[
  {
    "trafficRuleId": "string",
    "filterType": "string",
    "priority": 0,
    "trafficFilter": [
      {
        "srcAddress": [
          "string"
        ],
        "dstAddress": [
          "string"
        ],
        "srcPort": [
          "string"
        ],
        "dstPort": [
          "string"
        ],
        "protocol": [
          "string"
        ],
        "tag": [
          "string"
        ],
        "srcTunnelAddress": [
          "string"
        ],
        "tgtTunnelAddress": [
          "string"
        ],
        "srcTunnelPort": [
          "string"
        ],
        "dstTunnelPort": [
          "string"
        ],
        "qCI": 0,
        "dSCP": 0,
        "tC": 0
      }
    ],
    "action": "string",
    "dstInterface": [
      {
        "interfaceType": "string",
        "tunnelInfo": {
          "tunnelType": "string",
          "tunnelDstAddress": "string",
          "tunnelSrcAddress": "string",
          "tunnelSpecificData": "string"
        },
        "srcMacAddress": "string",
        "dstMacAddress": "string",
        "dstIpAddress": "string"
      }
    ]
  }
]
14.18 POST create traffic rule

create traffic rule

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules

Name

Definition

Type

Required

TrafficRule

TrafficRule

body param

yes

applicationId

applicationId

path param

yes

TrafficRule:
 {
  "trafficRuleId": "string",
  "filterType": "string",
  "priority": 0,
  "trafficFilter": [
    {
      "srcAddress": [
        "string"
      ],
      "dstAddress": [
        "string"
      ],
      "srcPort": [
        "string"
      ],
      "dstPort": [
        "string"
      ],
      "protocol": [
        "string"
      ],
      "tag": [
        "string"
      ],
      "srcTunnelAddress": [
        "string"
      ],
      "tgtTunnelAddress": [
        "string"
      ],
      "srcTunnelPort": [
        "string"
      ],
      "dstTunnelPort": [
        "string"
      ],
      "qCI": 0,
      "dSCP": 0,
      "tC": 0
    }
  ],
  "action": "string",
  "dstInterface": [
    {
      "interfaceType": "string",
      "tunnelInfo": {
        "tunnelType": "string",
        "tunnelDstAddress": "string",
        "tunnelSrcAddress": "string",
        "tunnelSpecificData": "string"
      },
      "srcMacAddress": "string",
      "dstMacAddress": "string",
      "dstIpAddress": "string"
    }
  ]
}

Example response

200 OK
 {
  "trafficRuleId": "string",
  "filterType": "string",
  "priority": 0,
  "trafficFilter": [
    {
      "srcAddress": [
        "string"
      ],
      "dstAddress": [
        "string"
      ],
      "srcPort": [
        "string"
      ],
      "dstPort": [
        "string"
      ],
      "protocol": [
        "string"
      ],
      "tag": [
        "string"
      ],
      "srcTunnelAddress": [
        "string"
      ],
      "tgtTunnelAddress": [
        "string"
      ],
      "srcTunnelPort": [
        "string"
      ],
      "dstTunnelPort": [
        "string"
      ],
      "qCI": 0,
      "dSCP": 0,
      "tC": 0
    }
  ],
  "action": "string",
  "dstInterface": [
    {
      "interfaceType": "string",
      "tunnelInfo": {
        "tunnelType": "string",
        "tunnelDstAddress": "string",
        "tunnelSrcAddress": "string",
        "tunnelSpecificData": "string"
      },
      "srcMacAddress": "string",
      "dstMacAddress": "string",
      "dstIpAddress": "string"
    }
  ]
}
14.19 PUT modify traffic rule

modify traffic rule

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules/{ruleId}

Name

Definition

Type

Required

TrafficRule

TrafficRule

body param

yes

ruleId

ruleId

path param

yes

applicationId

applicationId

path param

yes

TrafficRule:
{
  "trafficRuleId": "string",
  "filterType": "string",
  "priority": 0,
  "trafficFilter": [
    {
      "srcAddress": [
        "string"
      ],
      "dstAddress": [
        "string"
      ],
      "srcPort": [
        "string"
      ],
      "dstPort": [
        "string"
      ],
      "protocol": [
        "string"
      ],
      "tag": [
        "string"
      ],
      "srcTunnelAddress": [
        "string"
      ],
      "tgtTunnelAddress": [
        "string"
      ],
      "srcTunnelPort": [
        "string"
      ],
      "dstTunnelPort": [
        "string"
      ],
      "qCI": 0,
      "dSCP": 0,
      "tC": 0
    }
  ],
  "action": "string",
  "dstInterface": [
    {
      "interfaceType": "string",
      "tunnelInfo": {
        "tunnelType": "string",
        "tunnelDstAddress": "string",
        "tunnelSrcAddress": "string",
        "tunnelSpecificData": "string"
      },
      "srcMacAddress": "string",
      "dstMacAddress": "string",
      "dstIpAddress": "string"
    }
  ]
}

Example response

200 OK
true
14.20 DELETE traffic rule

delete traffic rule

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules/{ruleId}

Name

Definition

Type

Required

ruleId

ruleId

path param

yes

applicationId

applicationId

path param

yes

Example response

200 OK
true
14.21 GET app configuration

query application configuration

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
{
  "appCertificate": {
    "ak": "string",
    "sk": "string"
  },
  "appServiceProducedList": [
    {
      "appServiceProducedId": "string",
      "oneLevelName": "string",
      "oneLevelNameEn": "string",
      "twoLevelName": "string",
      "description": "string",
      "apiFileId": "string",
      "guideFileId": "string",
      "iconFileId": "string",
      "serviceName": "string",
      "internalPort": 0,
      "version": "string",
      "protocol": "string",
      "author": "string",
      "experienceUrl": "string",
      "dnsRuleIdList": [
        "string"
      ],
      "trafficRuleIdList": [
        "string"
      ]
    }
  ],
  "appServiceRequiredList": [
    {
      "id": "string",
      "oneLevelName": "string",
      "oneLevelNameEn": "string",
      "twoLevelName": "string",
      "twoLevelNameEn": "string",
      "serName": "string",
      "version": "string",
      "requestedPermissions": false,
      "appId": "string",
      "packageId": "string"
    }
  ],
  "trafficRuleList": [
    {
      "trafficRuleId": "string",
      "filterType": "string",
      "priority": 0,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "tag": [
            "string"
          ],
          "srcTunnelAddress": [
            "string"
          ],
          "tgtTunnelAddress": [
            "string"
          ],
          "srcTunnelPort": [
            "string"
          ],
          "dstTunnelPort": [
            "string"
          ],
          "qCI": 0,
          "dSCP": 0,
          "tC": 0
        }
      ],
      "action": "string",
      "dstInterface": [
        {
          "interfaceType": "string",
          "tunnelInfo": {
            "tunnelType": "string",
            "tunnelDstAddress": "string",
            "tunnelSrcAddress": "string",
            "tunnelSpecificData": "string"
          },
          "srcMacAddress": "string",
          "dstMacAddress": "string",
          "dstIpAddress": "string"
        }
      ]
    }
  ],
  "dnsRuleList": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": "string"
    }
  ]
}
14.22 PUT app configuration

modify application configuration

Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration

Name

Definition

Type

Required

AppConfiguration

AppConfiguration

path param

yes

applicationId

applicationId

path param

yes

AppConfiguration:
{
  "appCertificate": {
    "ak": "string",
    "sk": "string"
  },
  "appServiceProducedList": [
    {
      "appServiceProducedId": "string",
      "oneLevelName": "string",
      "oneLevelNameEn": "string",
      "twoLevelName": "string",
      "description": "string",
      "apiFileId": "string",
      "guideFileId": "string",
      "iconFileId": "string",
      "serviceName": "string",
      "internalPort": 0,
      "version": "string",
      "protocol": "string",
      "author": "string",
      "experienceUrl": "string",
      "dnsRuleIdList": [
        "string"
      ],
      "trafficRuleIdList": [
        "string"
      ]
    }
  ],
  "appServiceRequiredList": [
    {
      "id": "string",
      "oneLevelName": "string",
      "oneLevelNameEn": "string",
      "twoLevelName": "string",
      "twoLevelNameEn": "string",
      "serName": "string",
      "version": "string",
      "requestedPermissions": false,
      "appId": "string",
      "packageId": "string"
    }
  ],
  "trafficRuleList": [
    {
      "trafficRuleId": "string",
      "filterType": "string",
      "priority": 0,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "tag": [
            "string"
          ],
          "srcTunnelAddress": [
            "string"
          ],
          "tgtTunnelAddress": [
            "string"
          ],
          "srcTunnelPort": [
            "string"
          ],
          "dstTunnelPort": [
            "string"
          ],
          "qCI": 0,
          "dSCP": 0,
          "tC": 0
        }
      ],
      "action": "string",
      "dstInterface": [
        {
          "interfaceType": "string",
          "tunnelInfo": {
            "tunnelType": "string",
            "tunnelDstAddress": "string",
            "tunnelSrcAddress": "string",
            "tunnelSpecificData": "string"
          },
          "srcMacAddress": "string",
          "dstMacAddress": "string",
          "dstIpAddress": "string"
        }
      ]
    }
  ],
  "dnsRuleList": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": "string"
    }
  ]
}

Example response

200 OK
true

15. Capability-group stats query

This part is about the api for Capability-group stats

15.1 GET stats by type

query group stats by type

Resource URI: /mec/developer/v2/query/capability-group-stats/type/{type}

Name

Definition

Type

Required

type

type

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "description": "string",
    "nameEn": "string",
    "descriptionEn": "string",
    "type": "string",
    "iconFileId": "string",
    "author": "string",
    "createTime": 0,
    "updateTime": 0,
    "parent": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "capabilityCount": 0
  }
]

16. Operation

This part is about the api for application launch

16.1 GET one operation

get one application operation

Resource URI: /mec/developer/v2/operations//{operationId}

Name

Definition

Type

Required

operationId

operationId

path param

yes

Example response

200 OK
{
  "id": "string",
  "userName": "string",
  "objectType": "APPLICATION",
  "objectId": "string",
  "objectName": "string",
  "operationName": "string",
  "progress": 0,
  "status": "ONGOING",
  "errorMsg": "string",
  "actionStatusList": [
    {
      "id": "string",
      "objectType": "APPLICATION",
      "objectId": "string",
      "actionName": "string",
      "progress": 0,
      "status": "ONGOING",
      "errorMsg": "string",
      "statusLog": "string",
      "updateTime": "string"
    }
  ],
  "createTime": "string",
  "updateTime": "string"
}

17. Capability query

This part is about the api for query capability

17.1 GET capability by groupid

get capability by groupid

Resource URI: /mec/developer/v2/query/capabilities/group-id/{groupId}

Name

Definition

Type

Required

groupId

groupId

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }
]
17.2 GET capability by en name

query capability by en name

Resource URI: /mec/developer/v2/query/capabilities/name-en

Name

Definition

Type

Required

nameEn

english name

query param

yes

limit

limit name

query param

yes

offset

offset name

query param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }
]
17.3 GET capability by name

GET capability by zh name

Resource URI: /mec/developer/v2/query/capabilities/name

Name

Definition

Type

Required

name

chinese name

query param

yes

limit

limit name

query param

yes

offset

offset name

query param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }
]
17.4 GET capability by projectid

get capability by projectid

Resource URI: /mec/developer/v2/query/capabilities/project-id/{projectId}

Name

Definition

Type

Required

projectId

projectId

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }
]
17.5 GET capability by type

query capability by type

Resource URI: /mec/developer/v2/query/capabilities/type/{type}

Name

Definition

Type

Required

type

type

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "nameEn": "string",
    "version": "string",
    "description": "string",
    "descriptionEn": "string",
    "provider": "string",
    "apiFileId": "string",
    "guideFileId": "string",
    "guideFileIdEn": "string",
    "uploadTime": 0,
    "port": 0,
    "host": "string",
    "protocol": "string",
    "appId": "string",
    "packageId": "string",
    "userId": "string",
    "selectCount": 0,
    "iconFileId": "string",
    "author": "string",
    "experienceUrl": "string",
    "group": {
      "id": "string",
      "name": "string",
      "description": "string",
      "nameEn": "string",
      "descriptionEn": "string",
      "type": "string",
      "iconFileId": "string",
      "author": "string",
      "createTime": 0,
      "updateTime": 0,
      "parent": {}
    },
    "groupId": "string"
  }
]

18. Profile

This part is about the api for profile operation

18.1 POST create profile

Create one profile

Resource URI: /mec/developer/v2/profiles

Name

Definition

Type

Required

file

file

request part

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "descriptionEn": "string",
  "seq": [
    "string"
  ],
  "appList": [
    "string"
  ],
  "createTime": "2021-12-30T09:19:44.092Z",
  "type": "string",
  "industry": "string",
  "topoFilePath": "string"
}
18.2 GET download file

GET download file according to file type

Resource URI: /mec/developer/v2/profiles/{profileId}/action/download

Name

Definition

Type

Required

profileId

profileId

path param

yes

type

type

query param

no

name

name

query param

no

Example response

200 OK
byte[]
18.3 PUT update profile

Update one profile

Resource URI: /mec/developer/v2/profiles/{profileId}

Name

Definition

Type

Required

file

file

request part

yes

profileId

profileId

path param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "descriptionEn": "string",
  "seq": [
    "string"
  ],
  "appList": [
    "string"
  ],
  "createTime": "2021-12-30T09:19:44.092Z",
  "type": "string",
  "industry": "string",
  "topoFilePath": "string"
}
18.4 GET query all profiles

GET query all profiles

Resource URI: /mec/developer/v2/profiles

Name

Definition

Type

Required

name

name

query param

no

limit

limit

query param

yes

offset

offset

query param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "descriptionEn": "string",
  "seq": [
    "string"
  ],
  "appList": [
    "string"
  ],
  "createTime": "2021-12-30T09:19:44.092Z",
  "type": "string",
  "industry": "string",
  "topoFilePath": "string"
}
18.5 GET query one profile

GET query one profile

Resource URI: /mec/developer/v2/profiles/{profileId}

Name

Definition

Type

Required

profileId

profileId

path param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "descriptionEn": "string",
  "seq": [
    "string"
  ],
  "appList": [
    "string"
  ],
  "createTime": "2021-12-30T09:19:44.092Z",
  "type": "string",
  "industry": "string",
  "topoFilePath": "string"
}
18.6 DELETE delete one profile

DELETE delete one profile

Resource URI: /mec/developer/v2/profiles/{profileId}

Name

Definition

Type

Required

profileId

profileId

path param

yes

Example response

200 OK
true
18.7 POST create application by profile id

POST create application by profile id

Resource URI: /mec/developer/v2/profiles/{profileId}/create-application

Name

Definition

Type

Required

profileId

profileId

path param

yes

iconFile

iconFile

request part

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "description": "string",
  "version": "string",
  "provider": "string",
  "architecture": "string",
  "appClass": "CONTAINER",
  "type": "string",
  "industry": "string",
  "iconFileId": "string",
  "guideFileId": "string",
  "appCreateType": "INTEGRATED",
  "createTime": "string",
  "status": "CREATED",
  "userId": "string",
  "userName": "string",
  "mepHostId": "string",
  "pkgSpecId": "string",
  "appPackage": {
    "id": "string",
    "appId": "string",
    "packageFileName": "string",
    "packageFilePath": "string"
  },
  "atpTestTaskList": [
    {
      "id": "string",
      "appName": "string",
      "status": "string",
      "createTime": "string"
    }
  ],
  "appConfiguration": {
    "appCertificate": {
      "ak": "string",
      "sk": "string"
    },
    "appServiceProducedList": [
      {
        "appServiceProducedId": "string",
        "oneLevelName": "string",
        "oneLevelNameEn": "string",
        "twoLevelName": "string",
        "description": "string",
        "apiFileId": "string",
        "guideFileId": "string",
        "iconFileId": "string",
        "serviceName": "string",
        "internalPort": 0,
        "version": "string",
        "protocol": "string",
        "author": "string",
        "experienceUrl": "string",
        "dnsRuleIdList": [
          "string"
        ],
        "trafficRuleIdList": [
          "string"
        ]
      }
    ],
    "appServiceRequiredList": [
      {
        "id": "string",
        "oneLevelName": "string",
        "oneLevelNameEn": "string",
        "twoLevelName": "string",
        "twoLevelNameEn": "string",
        "serName": "string",
        "version": "string",
        "requestedPermissions": false,
        "appId": "string",
        "packageId": "string"
      }
    ],
    "trafficRuleList": [
      {
        "trafficRuleId": "string",
        "filterType": "string",
        "priority": 0,
        "trafficFilter": [
          {
            "srcAddress": [
              "string"
            ],
            "dstAddress": [
              "string"
            ],
            "srcPort": [
              "string"
            ],
            "dstPort": [
              "string"
            ],
            "protocol": [
              "string"
            ],
            "tag": [
              "string"
            ],
            "srcTunnelAddress": [
              "string"
            ],
            "tgtTunnelAddress": [
              "string"
            ],
            "srcTunnelPort": [
              "string"
            ],
            "dstTunnelPort": [
              "string"
            ],
            "qCI": 0,
            "dSCP": 0,
            "tC": 0
          }
        ],
        "action": "string",
        "dstInterface": [
          {
            "interfaceType": "string",
            "tunnelInfo": {
              "tunnelType": "string",
              "tunnelDstAddress": "string",
              "tunnelSrcAddress": "string",
              "tunnelSpecificData": "string"
            },
            "srcMacAddress": "string",
            "dstMacAddress": "string",
            "dstIpAddress": "string"
          }
        ]
      }
    ],
    "dnsRuleList": [
      {
        "dnsRuleId": "string",
        "domainName": "string",
        "ipAddressType": "string",
        "ipAddress": "string",
        "ttl": "string"
      }
    ]
  },
  "scriptList": [
    {
      "id": "string",
      "name": "string",
      "scriptFileId": "string",
      "createTime": "2021-12-30T09:19:44.090Z"
    }
  ]
}

19. VmApp-network

This part is about the api for vm network

19.1 GET all network

query all networks

Resource URI: /mec/developer/v2/applications/{applicationId}/networks

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "description": "string"
  }
]
19.2 POST create network

create network

Resource URI: /mec/developer/v2/applications/{applicationId}/networks

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

network

network

body param

yes

network
{
    "id": "string",
    "name": "string",
    "description": "string"
}

Example response

200 OK
{
    "id": "string",
    "name": "string",
    "description": "string"
}
19.3 GET one network

get one network

Resource URI: /mec/developer/v2/applications/{applicationId}/networks/{networkId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

networkId

networkId

path param

yes

Example response

200 OK
{
    "id": "string",
    "name": "string",
    "description": "string"
}
19.4 PUT modify network

modify one network

Resource URI: /mec/developer/v2/applications/{applicationId}/networks/{networkId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

networkId

networkId

path param

yes

network

network

body param

yes

network
{
    "id": "string",
    "name": "string",
    "description": "string"
}

Example response

200 OK
{
    "id": "string",
    "name": "string",
    "description": "string"
}
19.5 DELETE network

delete network

Resource URI: /mec/developer/v2/applications/{applicationId}/networks/{networkId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

networkId

networkId

path param

yes

Example response

200 OK
true

20. UserData

This part is about the api for vm config(userdata)

20.1 GET all userdata

query all userdata

Resource URI: /mec/developer/v2/user-datas

Name

Definition

Type

Required

osType

osType

query param

yes

pkgSpecId

pkgSpecId

query param

yes

Example response

200 OK
string output

21. Pkg-specs

This part is about the api for vm config(pkg specs)

21.1 GET all pkg specs

query all pkg specs

Resource URI: /mec/developer/v2/pkg-specs

Example response

200 OK
[
  {
    "id": "string",
    "zhName": "string",
    "enName": "string",
    "specifications": {
      "appdSpecs": {
        "networkNameSpecs": {
          "networkNameN6": "string",
          "networkNameInternet": "string",
          "networkNameMep": "string"
        },
        "userDataFlag": "string",
        "flavorSpecs": "string"
      }
    }
  }
]

22. VmApp-operation

This part is about the api for vm application operation

22.1 POST export image

export vm image

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/export-image

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

Example response

200 OK
{
  "operationId": "string"
}
22.2 GET ssh url

query vm ssh url

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/ssh

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

Example response

200 OK
{
  "encoding": "string",
  "id": "string",
  "status": "string",
  "sshAddress": "string"
}
22.3 GET vnc url

query vm vnc url

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/vnc

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
22.4 POST instantiate vm

instantiate vm

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/launch

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

Example response

200 OK
{
  "operationId": "string"
}
22.5 GET merge app file

merge app file

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/merge-file

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

fileName

fileName

path param

yes

identifier

identifier

path param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
22.6 POST upload file

upload app file

Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/upload-file

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

vmId

vmId

path param

yes

id

id

query param

yes

chunkNumber

chunkNumber

query param

yes

chunkSize

chunkSize

query param

yes

currentChunkSize

currentChunkSize

query param

yes

totalSize

totalSize

query param

yes

identifier

identifier

query param

yes

filename

filename

query param

yes

relativePath

relativePath

query param

yes

totalChunks

totalChunks

query param

yes

type

type

query param

yes

file

file

query param

yes

Example response

200 OK
true

23. ContainerApp-operation

This part is about the api for container application operation

23.1 GET container ssh url

query container ssh url

Resource URI: /mec/developer/v2/applications/{applicationId}/containers/action/ssh

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
{
  "encoding": "string",
  "id": "string",
  "status": "string",
  "sshAddress": "string"
}
23.2 POST instantiate container

instantiate container application

Resource URI: /mec/developer/v2/applications/{applicationId}/containers/action/launch

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
{
  "operationId": "string"
}

24. App-operation

This part is about the api for application operation

24.1 POST clean env

clean test env

Resource URI: /mec/developer/v2/applications/{applicationId}/action/clean-env

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
true
24.2 GET atp tests

query all atp test

Resource URI: /mec/developer/v2/applications/{applicationId}/action/atp-tests

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
{
  "id": "string",
  "appName": "string",
  "status": "string",
  "createTime": "string"
}
24.3 POST create atp tests

create atp test

Resource URI: /mec/developer/v2/applications/{applicationId}/action/atp-tests

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
true
24.4 POST generate pkg

generate app pkg

Resource URI: /mec/developer/v2/applications/{applicationId}/action/generate-package

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
{
  "id": "string",
  "appId": "string",
  "packageFileName": "string",
  "packageFilePath": "string"
}
24.5 GET one atp test

query one atp test

Resource URI: /mec/developer/v2/applications/{applicationId}/atpTests/{atpTestId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

atpTestId

atpTestId

path param

yes

Example response

200 OK
{
  "id": "string",
  "appName": "string",
  "status": "string",
  "createTime": "string"
}
24.6 POST release app

release application

Resource URI: /mec/developer/v2/applications/{applicationId}/action/release

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

publishAppDto

publishAppDto

body param

yes

publishAppDto
{
  "price": 0,
  "free": false
}

Example response

200 OK
true
24.7 PUT select host

release app,select host

Resource URI: /mec/developer/v2/applications/{applicationId}/action/sel-mephost

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

selectSandbox

selectSandbox

body param

yes

selectSandbox
{
  "mepHostId": "string"
}

Example response

200 OK
true

25. AppPackage

This part is about the api for application package

25.1 GET app package

get app package

Resource URI: /mec/developer/v2/apppackages/{packageId}

Name

Definition

Type

Required

packageId

packageId

path param

yes

Example response

200 OK
{
  "id": "string",
  "appId": "string",
  "packageFileName": "string",
  "packageFilePath": "string"
}
25.2 POST get package content

query package file content

Resource URI: /mec/developer/v2/apppackages/{packageId}/action/get-file-content

Name

Definition

Type

Required

packageId

packageId

path param

yes

structureReqDto

structureReqDto

body param

yes

structureReqDto
{
  "filePath": "string"
}

Example response

200 OK
{
  "filePath": "string",
  "content": "string"
}
25.3 GET package structure

query package structure

Resource URI: /mec/developer/v2/apppackages/{packageId}/action/get-pkg-structure

Name

Definition

Type

Required

packageId

packageId

path param

yes

Example response

200 OK
[
  {}
]
25.4 PUT modify package content

modify package content

Resource URI: /mec/developer/v2/apppackages/{packageId}/action/update-file-content

Name

Definition

Type

Required

packageId

packageId

path param

yes

releasedPkgFileContent

releasedPkgFileContent

body param

yes

releasedPkgFileContent
{
  "filePath": "string",
  "content": "string"
}

Example response

200 OK
{
  "filePath": "string",
  "content": "string"
}
25.5 POST zip package

zip app package

Resource URI: /mec/developer/v2/apppackages/{packageId}/action/zip-package

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

atpTestId

atpTestId

path param

yes

Example response

200 OK
{
  "id": "string",
  "appId": "string",
  "packageFileName": "string",
  "packageFilePath": "string"
}

26. Helmcharts

This part is about the api for application deploy yaml

26.1 GET helm chart

get helm chart

Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

helmchartId

helmchartId

path param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "helmChartFileId": "string",
  "createTime": "2021-12-30T11:08:27.398Z",
  "applicationId": "string",
  "helmChartFileList": [
    {
      "name": "string",
      "innerPath": "string",
      "children": [
        {}
      ],
      "content": "string",
      "file": false
    }
  ]
}
26.2 DELETE helm chart

delete helm chart

Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

helmchartId

helmchartId

path param

yes

Example response

200 OK
true
26.3 POST download helmchart

download helm package

Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}/action/download

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

helmchartId

helmchartId

path param

yes

Example response

200 OK
byte[]
26.4 GET helmchart content

query package content

Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}/action/get-inner-file

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

helmchartId

helmchartId

path param

yes

filePath

filePath

query param

yes

Example response

200 OK
string output
26.5 GET all helmchart

get all helmcharts

Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

Example response

200 OK
[
  {
    "id": "string",
    "name": "string",
    "helmChartFileId": "string",
    "createTime": "2021-12-30T11:08:27.398Z",
    "applicationId": "string",
    "helmChartFileList": [
      {
        "name": "string",
        "innerPath": "string",
        "children": [
          {}
        ],
        "content": "string",
        "file": false
      }
    ]
  }
]
26.6 POST upload helmchart

upload deploy file

Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

file

file

format param

yes

Example response

200 OK
{
  "id": "string",
  "name": "string",
  "helmChartFileId": "string",
  "createTime": "2021-12-30T11:08:27.398Z",
  "applicationId": "string",
  "helmChartFileList": [
    {
      "name": "string",
      "innerPath": "string",
      "children": [
        {}
      ],
      "content": "string",
      "file": false
    }
  ]
}
26.7 PUT modify helm content

modify helm content

Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}/action/modify-inner-file

Name

Definition

Type

Required

applicationId

applicationId

path param

yes

helmchartId

helmchartId

path param

yes

content

content

body param

yes

content
{
  "innerFilePath": "string",
  "content": "string"
}

Example response

200 OK
true

27. ReleasedPackage

This part is about the api for synchronized pkg

27.1 GET all released pkg

query all released pkg

Resource URI: /mec/developer/v2/released-packages

Name

Definition

Type

Required

name

name

query param

yes

limit

limit

query param

yes

offset

limit

query param

yes

Example response

200 OK
{}
27.2 DELETE released pkg

delete released pkg

Resource URI: /mec/developer/v2/released-packages/{packageId}

Name

Definition

Type

Required

packageId

packageId

path param

yes

Example response

200 OK
true
27.3 POST release pkg

release pkg

Resource URI: /mec/developer/v2/released-packages/{packageId}/action/release

Name

Definition

Type

Required

packageId

packageId

path param

yes

publishAppDto

publishAppDto

body param

yes

publishAppDto
{
  "price": 0,
  "free": false
}

Example response

200 OK
true
27.4 POST get released content

query package content

Resource URI: /mec/developer/v2/released-packages/{packageId}/action/get-file-content

Name

Definition

Type

Required

packageId

packageId

path param

yes

structureReqDto

structureReqDto

body param

yes

structureReqDto
{
  "filePath": "string"
}

Example response

200 OK
{
  "filePath": "string",
  "content": "string"
}
27.5 POST synchronize pkg

synchronize released pkg from appstore

Resource URI:/mec/developer/v2/released-packages

Name

Definition

Type

Required

pkgReqDtos

pkgReqDtos

body param

yes

pkgReqDtos
[
  {
    "appId": "string",
    "packageId": "string"
  }
]

Example response

200 OK
true
27.6 GET released pkg structure

get released pkg structure

Resource URI: /mec/developer/v2/released-packages/{packageId}/action/get-pkg-structure

Name

Definition

Type

Required

packageId

packageId

path param

yes

Example response

200 OK
[
 {}
]
27.7 PUT modify pkg content

modify released pkg file content

Resource URI: /mec/developer/v2/released-packages/{packageId}/action/edit-file-content

Name

Definition

Type

Required

packageId

packageId

path param

yes

releasedPkgFileContent

releasedPkgFileContent

body param

yes

releasedPkgFileContent
{
  "filePath": "string",
  "content": "string"
}

Example response

200 OK
{
  "filePath": "string",
  "content": "string"
}

28. VmImage

This part is about the api for vm image

28.1 GET check upload

check chunk for upload vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/upload

Name

Definition

Type

Required

identifier

identifier

query param

yes

imageId

imageId

path param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
28.2 POST upload vm image

upload vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/upload

Name

Definition

Type

Required

imageId

imageId

path param

yes

id

id

query param

yes

chunkNumber

chunkNumber

query param

yes

chunkSize

chunkSize

query param

yes

currentChunkSize

currentChunkSize

query param

yes

totalSize

totalSize

query param

yes

identifier

identifier

query param

yes

filename

filename

query param

yes

relativePath

relativePath

query param

yes

totalChunks

totalChunks

query param

yes

type

type

query param

yes

file

file

query param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
28.3 DELETE cancel upload vm image

cancel upload vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/upload

Name

Definition

Type

Required

imageId

imageId

path param

yes

identifier

identifier

query param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
28.4 POST create vm image

create vm image

Resource URI: /mec/developer/v2/vmimages

Name

Definition

Type

Required

VmImage

VmImage

body param

yes

VmImage
{
  "visibleType": "public",
  "osType": "ubuntu",
  "osVersion": "string",
  "osBitType": "string",
  "systemDiskSize": 0,
  "name": "string"
}

Example response

200 OK
true
28.5 GET one vm image

query vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
{
  "id": 0,
  "visibleType": "public",
  "osType": "ubuntu",
  "osVersion": "string",
  "osBitType": "string",
  "systemDiskSize": 0,
  "name": "string",
  "imageFileName": "string",
  "createTime": "string",
  "modifyTime": "string",
  "imageFormat": "string",
  "uploadTime": "string",
  "downLoadUrl": "string",
  "imageSize": 0,
  "status": "UPLOAD_WAIT",
  "imageSlimStatus": "SLIM_WAIT",
  "userId": "string",
  "userName": "string",
  "fileMd5": "string",
  "fileIdentifier": "string",
  "errorType": "string"
}
28.6 PUT modify vm image

modify vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}

Name

Definition

Type

Required

imageId

imageId

path param

yes

VmImage

VmImage

body param

yes

VmImage
{
  "id": 0,
  "visibleType": "public",
  "osType": "ubuntu",
  "osVersion": "string",
  "osBitType": "string",
  "systemDiskSize": 0,
  "name": "string"
}

Example response

200 OK
true
28.7 DELETE vm image

delete vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
true
28.8 GET download vm image

download vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/download

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
binary output.
28.9 POST get all vm image

query all vm image

Resource URI: /mec/developer/v2/vmimages/action/get-list

Name

Definition

Type

Required

imageId

imageId

path param

yes

vmImageReq

vmImageReq

body param

yes

vmImageReq
{
  "name": "string",
  "visibleType": "public",
  "userId": "string",
  "osType": "string",
  "status": "UPLOAD_WAIT",
  "uploadTimeBegin": "string",
  "uploadTimeEnd": "string",
  "queryCtrl": {
    "offset": 0,
    "limit": 0,
    "sortBy": "userName",
    "sortOrder": "ASC"
  }
}

Example response

200 OK
{
  "totalCount": 0,
  "imageList": [
    {
      "id": 0,
      "visibleType": "public",
      "osType": "ubuntu",
      "osVersion": "string",
      "osBitType": "string",
      "systemDiskSize": 0,
      "name": "string",
      "imageFileName": "string",
      "createTime": "string",
      "modifyTime": "string",
      "imageFormat": "string",
      "uploadTime": "string",
      "downLoadUrl": "string",
      "imageSize": 0,
      "status": "UPLOAD_WAIT",
      "imageSlimStatus": "SLIM_WAIT",
      "userId": "string",
      "userName": "string",
      "fileMd5": "string",
      "fileIdentifier": "string",
      "errorType": "string"
    }
  ]
}
28.10 POST slim vm image

slim vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/slim

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
{
  "operationId": "string"
}
28.11 GET merge vm image

merge vm image

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/merge

Name

Definition

Type

Required

imageId

imageId

path param

yes

fileName

fileName

query param

yes

identifier

identifier

query param

yes

Example response

200 OK
{
  "headers": {
    "string": [
      "string"
    ]
  },
  "body": {},
  "statusCode": "CONTINUE",
  "statusCodeValue": 0
}
28.12 PUT publish image

publish image

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/publish

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
true
28.13 PUT reset image

reset vm image status

Resource URI: /mec/developer/v2/vmimages/{imageId}/action/reset

Name

Definition

Type

Required

imageId

imageId

path param

yes

Example response

200 OK
true

Developer Dependency

Developer-be Third-Party Use List

GroupId

ArtifactId

Version

License

Direct Import (Y/N)

ch.ethz.ganymed

ganymed-ssh2

262

BSD

Y

com.esotericsoftware.yamlbeans

yamlbeans

1.13

BSD 2-clause

Y

com.fasterxml

classmate

1.4.0

Apache 2.0

N

com.fasterxml.jackson.core

jackson-annotations

2.10.0

Apache 2.0

N

com.fasterxml.jackson.core

jackson-core

2.10.5

Apache 2.0

Y

com.fasterxml.jackson.core

jackson-databind

2.10.5.1

Apache 2.0

Y

com.fasterxml.jackson.dataformat

jackson-dataformat-xml

2.10.0

Apache 2.0

N

com.fasterxml.jackson.dataformat

jackson-dataformat-yaml

2.10.0

Apache 2.0

N

com.fasterxml.jackson.datatype

jackson-datatype-jdk8

2.10.0

Apache 2.0

N

com.fasterxml.jackson.datatype

jackson-datatype-jsr310

2.10.0

Apache 2.0

N

com.fasterxml.jackson.jaxrs

jackson-jaxrs-base

2.9.9

Apache

N

com.fasterxml.jackson.jaxrs

jackson-jaxrs-json-provider

2.9.9

Apache

N

com.fasterxml.jackson.module

jackson-module-jaxb-annotations

2.10.0

Apache 2.0

N

com.fasterxml.jackson.module

jackson-module-parameter-names

2.10.0

Apache 2.0

N

com.github.docker-java

docker-java

3.2.10

Apache 2.0

Y

com.github.docker-java

docker-java-api

3.2.10

Apache 2.0

N

com.github.docker-java

docker-java-core

3.2.10

Apache 2.0

N

com.github.docker-java

docker-java-transport

3.2.10

Apache 2.0

N

com.github.docker-java

docker-java-transport-jersey

3.2.10

Apache 2.0

N

com.github.docker-java

docker-java-transport-netty

3.2.10

Apache 2.0

N

com.github.jsqlparser

jsqlparser

2.0

Apache 2.0,LGPL 2.1

N

com.github.pagehelper

pagehelper

5.1.11

MIT

N

com.github.pagehelper

pagehelper-spring-boot-autoconfigure

1.2.13

MIT

N

com.github.pagehelper

pagehelper-spring-boot-starter

1.2.13

MIT

Y

com.google.code.findbugs

jsr305

3.0.2

Apache 2.0

N

com.google.code.gson

gson

2.8.5

Apache 2.0

Y

com.google.guava

guava

26.0-jre

Apache 2.0

N

com.google.inject

guice

4.2.0

Apache 2.0

N

com.google.inject.extensions

guice-assistedinject

4.1.0

Apache 2.0

N

com.google.inject.extensions

guice-multibindings

4.1.0

Apache 2.0

N

com.google.protobuf

protobuf-java

3.7.1

BSD 3-Clause

N

com.h2database

h2

1.4.199

MPL 2.0,EPL 1.0

Y

com.ibm.icu

icu4j

58.2

ICU

N

com.jayway.jsonpath

json-path

2.4.0

Apache 2.0

N

com.jcraft

jsch

0.1.54

BSD

Y

com.kohlschutter.junixsocket

junixsocket-common

2.3.2

Apache 2.0

N

com.kohlschutter.junixsocket

junixsocket-native-common

2.3.2

Apache 2.0

N

com.mikesamuel

json-sanitizer

1.2.2

Apache 2.0

Y

com.netflix.archaius

archaius-core

0.7.6

Apache 2.0

N

com.netflix.hystrix

hystrix-core

1.5.18

Apache 2.0

N

com.netflix.netflix-commons

netflix-commons-util

0.3.0

Apache 2.0

N

com.netflix.netflix-commons

netflix-statistics

0.1.1

Apache 2.0

N

com.netflix.ribbon

ribbon

2.3.0

Apache 2.0

N

com.netflix.ribbon

ribbon-core

2.3.0

Apache 2.0

N

com.netflix.ribbon

ribbon-loadbalancer

2.3.0

Apache 2.0

N

com.netflix.ribbon

ribbon-transport

2.3.0

Apache 2.0

N

com.netflix.servo

servo-core

0.12.21

Apache 2.0

N

com.netflix.spectator

spectator-api

0.83.0

Apache 2.0

N

com.netflix.spectator

spectator-reg-servo

0.83.0

Apache 2.0

N

com.spencerwi

Either.java

2.1.0

MIT

Y

com.squareup.okhttp3

logging-interceptor

3.8.1

Apache 2.0

N

com.squareup.okhttp3

okhttp

3.8.1

Apache 2.0

N

com.squareup.okio

okio

1.13.0

Apache 2.0

N

com.sun.istack

istack-commons-runtime

3.0.7

CDDL 1.1,GPL 1.1

N

com.sun.xml.fastinfoset

FastInfoset

1.2.15

Apache 2.0

N

com.vaadin.external.google

android-json

0.0.20131108.vaadin1

Apache 2.0

N

com.zaxxer

HikariCP

3.2.0

Apache 2.0

N

commons-codec

commons-codec

1.11

Apache 2.0

N

commons-configuration

commons-configuration

1.10

Apache 2.0

N

commons-fileupload

commons-fileupload

1.3.3

Apache 2.0

Y

commons-io

commons-io

2.6

Apache 2.0

Y

commons-lang

commons-lang

2.6

Apache 2.0

N

commons-net

commons-net

3.3

Apache 2.0

Y

io.fabric8

kubernetes-model

4.1.0

Apache 2.0

Y

io.gsonfire

gson-fire

1.8.5

MIT

N

io.kubernetes

client-java

13.0.1

Apache 2.0

Y

io.kubernetes

client-java-api

13.0.1

Apache 2.0

Y

io.kubernetes

client-java-proto

13.0.1

Apache 2.0

Y

io.lettuce

lettuce-core

5.1.8.RELEASE

Apache 2.0

Y

io.netty

netty-buffer

4.1.36.Final

Apache 2.0

N

io.netty

netty-codec

4.1.36.Final

Apache 2.0

N

io.netty

netty-codec-dns

4.1.36.Final

Apache 2.0

N

io.netty

netty-codec-http

4.1.36.Final

Apache 2.0

N

io.netty

netty-codec-http2

4.1.36.Final

Apache 2.0

N

io.netty

netty-codec-socks

4.1.36.Final

Apache 2.0

N

io.netty

netty-common

4.1.36.Final

Apache 2.0

N

io.netty

netty-handler

4.1.36.Final

Apache 2.0

N

io.netty

netty-handler-proxy

4.1.36.Final

Apache 2.0

N

io.netty

netty-resolver

4.1.36.Final

Apache 2.0

N

io.netty

netty-resolver-dns

4.1.36.Final

Apache 2.0

N

io.netty

netty-tcnative-boringssl-static

2.0.25.Final

Apache 2.0

N

io.netty

netty-transport

4.1.36.Final

Apache 2.0

N

io.netty

netty-transport-native-epoll

l4.1.36.Final

Apache 2.0

N

io.netty

netty-transport-native-kqueue

4.1.36.Final

Apache 2.0

N

io.netty

netty-transport-native-unix-common

4.1.36.Final

Apache 2.0

N

io.projectreactor

reactor-core

3.2.8.RELEASE

Apache 2.0

Y

io.prometheus

simpleclient

0.6.0

Apache 2.0

N

io.prometheus

simpleclient_common

0.6.0

Apache 2.0

N

io.prometheus

simpleclient_httpserver

0.6.0

Apache 2.0

N

io.protostuff

protostuff-api

1.5.9

Apache 2.0

N

io.protostuff

protostuff-collectionschema

1.5.9

Apache 2.0

N

io.protostuff

protostuff-core

1.5.9

Apache 2.0

N

io.protostuff

protostuff-runtime

1.5.9

Apache 2.0

N

io.protostuff

protostuff-parser

2.2.25

Apache 2.0

N

io.reactivex

rxjava

1.2.0

Apache 2.0

N

io.reactivex

rxnetty

0.4.9

Apache 2.0

N

io.reactivex

rxnetty-contexts

0.4.9

Apache 2.0

N

io.reactivex

rxnetty-servo

0.4.9

Apache 2.0

N

io.swagger

swagger-annotations

1.6.2

Apache 2.0

N

io.swagger

swagger-core

1.5.22

Apache 2.0

N

io.swagger

swagger-models

1.5.22

Apache 2.0

N

io.vertx

vertx-auth-common

3.9.4

Apache 2.0

N

io.vertx

vertx-bridge-common

3.9.4

Apache 2.0

N

io.vertx

vertx-core

3.9.4

Apache 2.0

N

io.vertx

vertx-web

3.9.4

Apache 2.0

N

io.vertx

vertx-web-common

3.9.4

Apache 2.0

N

io.zipkin.brave

brave

5.6.0

Apache 2.0

N

io.zipkin.reporter2

zipkin-reporter

2.7.13

Apache 2.0

N

io.zipkin.zipkin2

zipkin

2.19.1

Apache 2.0

N

jakarta.activation

jakarta.activation-api

1.2.1

EDL 1.0

N

jakarta.xml.bind

jakarta.xml.bind-api

2.3.3

EDL 1.0

N

javax.activation

javax.activation-api

1.2.0

CDDL,GPL2.0

N

javax.annotation

javax.annotation-api

1.3.2

CDDL,GPLv2.0

N

javax.inject

javax.inject

1

Apache 2.0

N

javax.servlet

javax.servlet-api

4.0.1

CDDL,GPLv2.0

N

javax.validation

validation-api

2.0.1.Final

Apache 2.0

N

javax.ws.rs

javax.ws.rs-api

2.1

CDDL 1.1,GPL 1.1

N

javax.xml.bind

jaxb-api

2.3.1

CDDL 1.1

N

junit

junit

4.13

EPL 1.0

Y

net.bytebuddy

byte-buddy

1.9.13

Apache 2.0

N

net.bytebuddy

byte-buddy-agent

1.9.13

Apache 2.0

N

net.lingala.zip4j

zip4j

2.4.0

Apache 2.0

Y

net.minidev

accessors-smart

1.2

Apache 2.0

N

net.minidev

json-smart

2.3

Apache 2.0

N

org.antlr

ST4

4.0.8

BSD

N

org.antlr

antlr-runtime

3.5.2

BSD

N

org.antlr

antlr4

4.7

The BSD

N

org.antlr

antlr4-runtime

4.7

BSD

N

org.apache.ant

ant

1.8.2

Apache 2.0

Y

org.apache.ant

ant-launcher

1.8.2

Apache 2.0

N

org.apache.commons

commons-collections4

4.4

Apache 2.0

N

org.apache.commons

commons-compress

1.19

Apache 2.0

Y

org.apache.commons

commons-lang3

3.8.1

Apache 2.0

N

org.apache.httpcomponents

httpclient

4.5.9

Apache 2.0

N

org.apache.httpcomponents

httpcore

4.4.11

Apache 2.0

N

org.apache.httpcomponents

httpmime

4.3.1

Apache 2.0

N

org.apache.logging.log4j

log4j-api

2.17.0

Apache 2.0

Y

org.apache.logging.log4j

log4j-core

2.17.0

Apache 2.0

Y

org.apache.logging.log4j

log4j-slf4j-impl

2.17.0

Apache 2.0

Y

org.apache.servicecomb

common-javassist

1.3.2

Apache 2.0

N

org.apache.servicecomb

common-protobuf

1.3.2

Apache 2.0

N

org.apache.servicecomb

common-rest

1.3.2

Apache 2.0

N

org.apache.servicecomb

deployment

1.3.2

Apache 2.0

N

org.apache.servicecomb

foundation-common

1.3.2

Apache 2.0

N

org.apache.servicecomb

foundation-config

1.3.2

Apache 2.0

N

org.apache.servicecomb

foundation-metrics

1.3.2

Apache 2.0

N

org.apache.servicecomb

foundation-protobuf

1.3.2

Apache 2.0

N

org.apache.servicecomb

foundation-ssl

1.3.2

Apache 2.0

N

org.apache.servicecomb

foundation-vertx

1.3.2

Apache 2.0

N

org.apache.servicecomb

handler-bizkeeper

1.3.2

Apache 2.0

N

org.apache.servicecomb

handler-flowcontrol-qps

1.3.2

Apache 2.0

N

org.apache.servicecomb

handler-loadbalance

1.3.2

Apache 2.0

N

org.apache.servicecomb

java-chassis-core

1.3.2

Apache 2.0

N

org.apache.servicecomb

provider-jaxrs

1.3.2

Apache 2.0

N

org.apache.servicecomb

provider-pojo

1.3.2

Apache 2.0

N

org.apache.servicecomb

provider-rest-common

1.3.2

Apache 2.0

N

org.apache.servicecomb

provider-springmvc

1.3.2

Apache 2.0

N

org.apache.servicecomb

service-registry

1.3.2

Apache 2.0

N

org.apache.servicecomb

spring-boot2-starter

1.3.2

Apache 2.0

N

org.apache.servicecomb

spring-boot2-starter-servlet

1.3.2

Apache 2.0

Y

org.apache.servicecomb

swagger-generator-core

1.3.2

Apache 2.0

N

org.apache.servicecomb

swagger-generator-jaxrs

1.3.2

Apache 2.0

N

org.apache.servicecomb

swagger-generator-springmvc

1.3.2

Apache 2.0

N

org.apache.servicecomb

swagger-invocation-core

1.3.2

Apache 2.0

N

org.apache.servicecomb

swagger-invocation-jaxrs

1.3.2

Apache 2.0

N

org.apache.servicecomb

swagger-invocation-springmvc

1.3.2

Apache 2.0

N

org.apache.servicecomb

transport-common

1.3.2

Apache 2.0

N

org.apache.servicecomb

transport-highway

1.3.2

Apache 2.0

N

org.apache.servicecomb

transport-rest-client

1.3.2

Apache 2.0

N

org.apache.servicecomb

transport-rest-servlet

1.3.2

Apache 2.0

N

org.apache.tomcat

tomcat-annotations-api

9.0.21

Apache 2.0

N

org.apache.tomcat.embed

tomcat-embed-core

9.0.44

Apache 2.0

Y

org.apache.tomcat.embed

tomcat-embed-el

9.0.21

Apache 2.0

N

org.apache.tomcat.embed

tomcat-embed-websocket

9.0.44

Apache 2.0

Y

org.apiguardian

apiguardian-api

1.0.0

Apache 2.0

N

org.assertj

assertj-core

3.11.1

Apache 2.0

N

org.bitbucket.b_c

jose4j

0.7.8

Apache 2.0

N

org.bouncycastle

bcprov-jdk15on

1.68

BouncyCastle

Y

org.bouncycastle

bcpkix-jdk15on

1.69

BouncyCastle

Y

org.bouncycastle

bcutil-jdk15on

1.69

BouncyCastle

N

org.bouncycastle

bcprov-ext-jdk15on

1.69

BouncyCastle

Y

org.checkerframework

checker-qual

3.5.0

MIT

N

org.codehaus.woodstox

stax2-api

4.2

BSD

N

org.eclipse.persistence

javax.persistence

2.1.0

EPL 1.0

Y

org.glassfish

jakarta.el

3.0.3

EPL 2.0

N

org.glassfish

javax.json

1.0.4

CDDL 1.1,GPL 2.0

N

org.glassfish.hk2

hk2-api

2.5.0-b42

EPL 2.0

N

org.glassfish.hk2

hk2-locator

2.5.0-b42

EPL 2.0

N

org.glassfish.hk2

hk2-utils

2.5.0-b42

EPL 2.0

N

org.glassfish.hk2

osgi-resource-locator

1.0.1

EPL 2.0

N

org.glassfish.hk2.external

aopalliance-repackaged

2.5.0-b42

EPL 2.0

N

org.glassfish.hk2.external

javax.inject

2.5.0-b42

EPL 2.0

N

org.glassfish.jaxb

jaxb-runtime

2.3.1

CDDL,GPL

N

org.glassfish.jaxb

txw2

2.3.1

CDDL,GPL

N

org.glassfish.jersey.connectors

jersey-apache-connector

2.27

Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C

N

org.glassfish.jersey.core

jersey-client

2.27

Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C

N

org.glassfish.jersey.core

jersey-common

2.27

Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C

N

org.glassfish.jersey.inject

jersey-hk2

2.27

Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C

N

org.hamcrest

hamcrest

2.2

BSD 3-clause

N

org.hamcrest

hamcrest-core

1.3

BSD 3-clause

N

org.hdrhistogram

HdrHistogram

2.1.10

BSD 2-clause,CC0 1.0

N

org.hibernate.validator

hibernate-validator

6.0.17.Final

Apache 2.0

N

org.javassist

javassist

3.24.0-GA

Apache 2.0

N

org.jboss.logging

jboss-logging

3.3.2.Final

Apache 2.0

N

org.jmockit

jmockit

1.19

MIT

Y

org.jmockit

jmockit-coverage

1.19

MIT

Y

org.junit.jupiter

junit-jupiter

5.6.2

EPL 2.0

N

org.junit.jupiter

junit-jupiter-api

5.3.2

EPL 2.0

N

org.junit.jupiter

junit-jupiter-engine

5.3.2

EPL 2.0

N

org.junit.jupiter

junit-jupiter-params

5.3.2

EPL 2.0

N

org.junit.platform

junit-platform-commons

1.3.2

EPL 2.0

N

org.junit.platform

junit-platform-engine

1.3.2

EPL 2.0

N

org.junit.vintage

junit-vintage-engine

5.3.2

EPL 2.0

N

org.jvnet.staxex

stax-ex

1.8

EDL 1.0

N

org.mockito

mockito-core

2.23.4

MIT

N

org.mockito

mockito-junit-jupiter

2.23.4

MIT

N

org.modelmapper

modelmapper

1.1.0

Apache 2.0

N

org.mybatis

mybatis

3.5.6

Apache 2.0

N

org.mybatis

mybatis-spring

2.0.6

Apache 2.0

N

org.mybatis.spring.boot

mybatis-spring-boot-autoconfigure

2.2.0

Apache 2.0

N

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.2.0

Apache 2.0

Y

org.objenesis

objenesis

2.6

Apache 2

N

org.opentest4j

opentest4j

1.1.1

Apache 2

N

org.ow2.asm

asm

5.0.4

BSD

N

org.postgresql

postgresql

42.2.16

BSD 2-Clause

Y

org.projectlombok

lombok

1.18.10

The MIT

Y

org.reactivestreams

reactive-streams

1.0.0

CC0

Y

org.skyscreamer

jsonassert

1.5.0

Apache 2.0

N

org.slf4j

jcl-over-slf4j

1.7.26

MIT

N

org.slf4j

slf4j-api

1.7.30

MIT

Y

org.springframework

spring-aop

5.1.13.RELEASE

Apache 2.0

Y

org.springframework

spring-beans

5.1.13.RELEASE

Apache 2.0

N

org.springframework

spring-context

5.1.13.RELEASE

Apache 2.0

N

org.springframework

spring-core

5.1.13.RELEASE

Apache 2.0

Y

org.springframework

spring-expression

5.1.8.RELEASE

Apache 2.0

N

org.springframework

spring-jcl

5.1.13.RELEASE

Apache 2.0

Y

org.springframework

spring-jdbc

5.2.8.RELEASE

Apache 2.0

Y

org.springframework

spring-test

5.1.13.RELEASE

Apache 2.0

N

org.springframework

spring-tx

5.1.13.RELEASE

Apache 2.0

Y

org.springframework

spring-web

5.1.13.RELEASE

Apache 2.0

Y

org.springframework

spring-webmvc

5.1.13.RELEASE

Apache 2.0

N

org.springframework

spring-websocket

5.1.13.RELEASE

Apache 2.0

Y

org.springframework.boot

spring-boot

2.1.6.RELEASE

Apache 2.0

N

org.springframework.boot

spring-boot-autoconfigure

2.1.6.RELEASE

Apache 2.0

N

org.springframework.boot

spring-boot-configuration-processor

2.1.6.RELEASE

Apache 2.0

Y

org.springframework.boot

spring-boot-starter

2.1.6.RELEASE

Apache 2.0

N

org.springframework.boot

spring-boot-starter-jdbc

2.3.3.RELEASE

Apache 2.0

Y

org.springframework.boot

spring-boot-starter-json

2.1.6.RELEASE

Apache 2.0

N

org.springframework.boot

spring-boot-starter-test

2.3.3.RELEASE

Apache 2.0

Y

org.springframework.boot

spring-boot-starter-tomcat

2.1.6.RELEASE

Apache 2.0

N

org.springframework.boot

spring-boot-starter-validation

2.3.3.RELEASE

Apache 2.0

Y

org.springframework.boot

spring-boot-starter-web

2.3.3.RELEASE

Apache 2.0

Y

org.springframework.boot

spring-boot-starter-websocket

2.1.18.RELEASE

Apache 2.0

Y

org.springframework.boot

spring-boot-test

2.1.6.RELEASE

Apache 2.0

N

org.springframework.boot

spring-boot-test-autoconfigure

2.1.6.RELEASE

Apache 2.0

N

org.springframework.security

spring-security-config

5.3.8.RELEASE

Apache 2.0

N

org.springframework.security

spring-security-core

5.3.10.RELEASE

Apache 2.0

Y

org.springframework.security

spring-security-jwt

1.0.9.RELEASE

Apache 2.0

org.springframework.security

spring-security-test

5.3.10.RELEASE

Apache 2.0

Y

org.springframework.security

spring-security-web

5.3.8.RELEASE

Apache 2.0

Y

org.springframework.security.oauth

spring-security-oauth2

2.3.8.RELEASE

Apache 2.0

Y

org.springframework.security.oauth.boot

spring-security-oauth2-autoconfigure

2.2.2

Apache 2.0

Y

org.xmlunit

xmlunit-core

2.6.2

Apache 2.0

N

org.yaml

snakeyaml

1.26

Apache 2.0

Y

Developer-fe Third-Party Use List

Type

Name

Version

License

Direct Import (Y/N)

dependencies

acorn

7.2.0

MIT

Y

dependencies

auth0-js

9.13.2

MIT

Y

dependencies

axios

0.21.1

MIT

Y

dependencies

core-js

3.3.2

MIT

Y

dependencies

dot-prop

4.2.1

MIT

Y

dependencies

echarts

4.4.0

Apache-2.0

Y

dependencies

eg-view

0.0.20

Apache-2.0

Y

dependencies

el-table-pagination

0.4.38

MIT

Y

dependencies

element-china-area-data

4.1.2

MIT

Y

dependencies

element-ui

2.12.0

MIT

Y

dependencies

elliptic

6.5.4

MIT

Y

dependencies

http-proxy

1.18.1

MIT

Y

dependencies

http-proxy-agent

4.0.1

MIT

Y

dependencies

kity

2.0.4

Y

dependencies

kityminder-core

1.4.50

BSD-3-Clause

Y

dependencies

less-loader

5.0.0

MIT

Y

dependencies

local-storage

2.0.0

MIT

Y

dependencies

lodash

4.17.21

MIT

Y

dependencies

mavon-editor

2.9.1

MIT

Y

dependencies

serialize-javascript

4.0.0

BSD-3-Clause

Y

dependencies

swagger-ui

3.39.0

Apache-2.0

Y

dependencies

swiper

5.4.5

MIT

Y

dependencies

v-charts

1.19.0

MIT

Y

dependencies

vue

2.6.11

MIT

Y

dependencies

vue-awesome-swiper

4.1.1

MIT

Y

dependencies

vue-cookies

1.7.0

MIT

Y

dependencies

vue-i18n

8.15.3

MIT

Y

dependencies

vue-router

3.1.3

MIT

Y

dependencies

vue-simple-uploader

0.7.6

MIT

Y

dependencies

vuex

3.0.1

MIT

Y

dependencies

html2canvas

1.3.2

MIT

Y

dependencies

jspdf

2.4.0

MIT

Y

dependencies

vue-pdf

4.3.0

MIT

Y

dependencies

vue-seamless-scroll

1.1.23

ISC

Y

dependencies

vue-video-player

5.0.2

MIT

Y

dependencies

jquery

3.6.0

MIT

Y

devDependencies

@vue/cli-plugin-babel

4.0.0

MIT

Y

devDependencies

@vue/cli-plugin-eslint

4.0.5

MIT

Y

devDependencies

@vue/cli-service

4.0.0

MIT

Y

devDependencies

@vue/eslint-config-standard

4.0.0

MIT

Y

devDependencies

babel-eslint

10.0.3

MIT

Y

devDependencies

eslint

5.16.0

MIT

Y

devDependencies

eslint-plugin-vue

5.2.3

MIT

Y

devDependencies

less

3.10.3

Apache-2.0

Y

devDependencies

mockjs

1.1.0

Y

devDependencies

node-sass

5.0.0

MIT

Y

devDependencies

postcss-import

11.0.0

MIT

Y

devDependencies

postcss-loader

2.0.8

MIT

Y

devDependencies

postcss-url

7.2.1

MIT

Y

devDependencies

sass-loader

10.1.1

MIT

Y

devDependencies

vue-template-compiler

2.6.11

MIT

Y

Developer DataBase Design v1.5

The Developer database uses open-source PostgreSQL databases with the recommended version of 12.2. PostgreSQL is an open source object-relational database server (ORDBMS), released under a flexible BSD license. Learn more about PostgreSQL here.

  • tbl_plugin Store plug-in information uploaded by the developer, such as name, satisfaction degree, plugin save path, etc.

  CREATE TABLE IF NOT EXISTS tbl_plugin (
        pluginid              varchar(255)       NOT NULL,    --Plugin ID
        pluginname            varchar(255)       NOT NULL,    --Plugin name
        introduction          varchar(500)       NULL,        --Introduction to the plugin
        satisfaction          float4             NOT NULL,    --Satisfaction (rating)
        codelanguage          varchar(255)       NOT NULL,    --The programming language represented by the plugin
        plugintype            int4               NOT NULL,    --Plugin type (1: plugin 2: sdk)
        version               varchar(255)       NOT NULL,    --Plugin version
        downloadcount         int4               NOT NULL,    --download times
        logofile              varchar(500)       NOT NULL,    --Saved path of the plugin icon
        pluginfile            varchar(500)       NOT NULL,    --Save path of the plugin
        userid                varchar(255)       NOT NULL,    --ID of the user who uploaded the plugin
        uploadtime            timestamptz(6)     NOT NULL,    --Upload time
        username              varchar(255)       NOT NULL,    --The name of the user who uploaded the plugin
        pluginsize            int4               NOT NULL,    --Plugin size (bytes)
        apifile               varchar(500)       NOT NULL,    --Saved path of the plugin API file
        scorecount            int4               NOT NULL,    --Number of ratings for the plugin
        pluginfilehashcode    varchar(50)        DEFAULT NULL --Plugin hash value, verification file
        CONSTRAINT tbl_plugin_pkey PRIMARY KEY (pluginid)
  );
  • tbl_downloadrecord Store plugin download records. One plugin corresponds to multiple download records.

  CREATE TABLE IF NOT EXISTS tbl_downloadrecord (
       recordid          varchar(255)    NOT NULL,    --Download record ID
       pluginid          varchar(255)    NOT NULL,    --Plugin ID (corresponding to pluginid in tbl_plugin)
       downloaduserid    varchar(255)    NOT NULL,    --Download user ID
       downloadusername  varchar(255)    NOT NULL,    --Download user name
       score             float4          NOT NULL,    --Rating score (1-5)
       scoretype         int4            NOT NULL,    --Rating type
       downloadtime      timestamptz(0)  NOT NULL,    --Download time
       CONSTRAINT  tbl_downloadrecord_pkey  PRIMARY KEY (recordid)
  );
  • tbl_container_image stores the container image information generated when the developer uploads the container image package on the developer platform

  CREATE TABLE IF NOT EXISTS  tbl_container_image  (
       image_id           varchar(255)       NOT NULL,           --image ID
       image_name         varchar(255)       NOT NULL,           --image name
       image_version      varchar(255)       NOT NULL,           --image version
       user_id            varchar(255)       NOT NULL,           --the author id of upload container image
       user_name          varchar(255)       NOT NULL,           --the author name of upload container image
       upload_time        timestamptz(0)     DEFAULT NULL,       --upload image time
       create_time        timestamptz(0)     DEFAULT NULL,       --create db record time
       image_status       varchar(255)       DEFAULT NULL,       --image status
       image_type         varchar(255)       DEFAULT NULL,       --image type(private or public)
       image_path         text               DEFAULT NULL,       --image info(xxxx:xxx)
       file_name          varchar(255)       DEFAULT NULL,       --image type(private or public)
       CONSTRAINT tbl_container_image_uniqueName UNIQUE (image_name,image_version,user_name),
       CONSTRAINT tbl_container_image_pkey PRIMARY KEY (image_id)
  );
  • tbl_app_project_capability When the developer creates a new container application project, he selects the platform capability (this table is an association table between projects and capabilities)

  CREATE TABLE IF NOT EXISTS  tbl_app_project_capability  (
       project_id         varchar(50)        NOT NULL,           --project_id
       capability_id      varchar(50)        NOT NULL,           --capability id
       CONSTRAINT tbl_app_project_capability_pkey PRIMARY KEY (project_id,capability_id)
  );
  • tbl_openmep_capability Store the information of all the capabilities provided by the platform when the developer builds the application project on the developer platform.

  CREATE TABLE IF NOT EXISTS  tbl_capability_group  (
       id             varchar(50)         NOT NULL,         --group id
       name           varchar(255)        DEFAULT NULL,     --capability group zh name
       name_en        varchar(255)        DEFAULT NULL,     --capability group en name
       type           varchar(20)         DEFAULT NULL,     --capability group type(openmep or openmep_eco)
       description    text                DEFAULT NULL,     --capability group desc
       description_en text                DEFAULT NULL,     --capability group en desc
       icon_file_id   varchar(50)         DEFAULT NULL,     --group icon
       author         varchar(50)         DEFAULT NULL,     --the author of create group
       update_time    bigint              NOT NULL DEFAULT 0,       --update db record time
       create_time    bigint              NOT NULL DEFAULT 0,       --create db record time
       CONSTRAINT tbl_capability_group_pkey PRIMARY KEY (id)
  );
  • tbl_openmep_capability Store the information of all the capabilities provided by the platform when the developer builds the application project on the developer platform.

  CREATE TABLE IF NOT EXISTS  tbl_capability  (
       id                varchar(50)         NOT NULL,         --capability id
       name              varchar(100)        DEFAULT NULL,     --capability  zh name
       name_en           varchar(100)        DEFAULT NULL,     --capability  en name
       version           varchar(100)        DEFAULT NULL,     --capability  version
       description       text                DEFAULT NULL,     --capability  desc
       description_en    text                DEFAULT NULL,     --capability  en desc
       provider          varchar(100)        DEFAULT NULL,     --capability  provider
       api_file_id       varchar(255)        DEFAULT NULL,     --capability api file
       guide_file_id     varchar(255)        DEFAULT NULL,     --capability guide file
       guide_file_id_en  varchar(255)        DEFAULT NULL,     --capability guide file(en version)
       upload_time       varchar(50)         NOT NULL,         --create capability time
       host              varchar(50)         DEFAULT NULL,     --registered service name
       port              int4                DEFAULT NULL,     --service port
       protocol          varchar(20)         DEFAULT NULL,     --http,https
       app_id            varchar(255)        DEFAULT NULL,     --id posted to appstore
       package_id        varchar(255)        DEFAULT NULL,     --the packageId published to the appstore
       user_id           varchar(255)        DEFAULT NULL,     --the author id of create this capability
       select_count      integer             NOT NULL DEFAULT 0, --the number of select this capability
       icon_file_id      varchar(50)         DEFAULT NULL,     --capability icon file
       author            varchar(50)         DEFAULT NULL,     --the author name of create this capability
       experience_url    text                DEFAULT NULL,     --the access url of capability
       CONSTRAINT tbl_capability_pkey PRIMARY KEY (id)
  );
  • tbl_mep_host stores the server (test sandbox) information that the developer can choose when deploying and testing the self-built application project on the developer platform

  CREATE TABLE IF NOT EXISTS  tbl_mep_host  (
       host_id                 varchar(50)    NOT NULL,        --Server id
	   name                    varchar(100)   DEFAULT NULL,    --server name
       lcm_ip                  varchar(20)    DEFAULT NULL,    --lcm IP address
	   lcm_protocol            varchar(20)    DEFAULT NULL,    --lcm protocol
	   lcm_port                int4           DEFAULT '-1',    --lcm port
       architecture            varchar(100)   DEFAULT NULL,    --architecture
	   status                  varchar(20)    DEFAULT NULL,    --status
	   mec_host_ip             varchar(20)    DEFAULT NULL,    --mec host address
	   vim_type                varchar(255)   DEFAULT NULL,    --Operating system name
	   mec_host_user_name      varchar(50)    DEFAULT NULL,    --User name required to log in to the host  
	   mec_host_password       varchar(50)    DEFAULT NULL,    --Password required to log in to the host
	   mec_host_port           int4           DEFAULT 22,      --The exposed connection port of the server deploying the edge application
       user_id                 varchar(50)    DEFAULT NULL,   --UserId
	   config_file_id          varchar(50)    DEFAULT NULL,   --config file id
	   net_work_parameter      text           DEFAULT NULL,    --sandbox parameter 
	   resource                text           DEFAULT NULL     --Sandbox hardware information 
       address                 varchar(255)   DEFAULT NULL,    --address     
  );
  • tbl_uploaded_file Store the icon, image, api and other file information uploaded by the developer when deploying and testing the self-built application project on the developer platform

  CREATE TABLE IF NOT EXISTS  tbl_uploaded_file  (
       file_id         varchar(50)      NOT NULL,       --File ID
       file_name       varchar(255)     DEFAULT NULL,   --file name
       is_temp         bool             DEFAULT NULL,   --Is it a temporary file
       user_id         varchar(50)      DEFAULT NULL,   --ID of the user who uploaded the file
       upload_date     timestamptz(6)   DEFAULT NULL,   --Upload time
       file_path       varchar(255)     DEFAULT NULL,   --file path
       CONSTRAINT  tbl_uploaded_file_pkey  PRIMARY KEY ( file_id )
  );
  • tbl_host_log Record the deployment log of the app project on the edge node.

   CREATE TABLE IF NOT EXISTS  tbl_host_log  (
       log_id           varchar(50) NOT NULL,              --Log ID
       host_ip          varchar(50) NOT NULL,              --host IP
       user_name        varchar(50) DEFAULT NULL,          --username
       user_id          varchar(50) DEFAULT NULL,          --User ID
       project_id       varchar(50) DEFAULT NULL,          --Project ID
       project_name     varchar(50) DEFAULT NULL,          --project name
       app_instances_id varchar(50) DEFAULT NULL,          --The instance ID of the app project
       deploy_time      varchar(50) DEFAULT NULL,          --Project deployment time
       status           varchar(50) DEFAULT NULL,          --host status
       operation        varchar(50) DEFAULT NULL,          --operating
       host_id          varchar(50) DEFAULT NULL           --host ID
    );   
  • tbl_api_emulator Platform ability to call the simulator

   CREATE TABLE IF NOT EXISTS  tbl_api_emulator  (
       id             varchar(50) NOT NULL,        --id
       user_id        varchar(50) NOT NULL,        --host IP
       host_id        varchar(50) NOT NULL,        --username
       port           int4 NOT NULL,               --port
	   workload_id    varchar(50) NOT NULL,        --work load id
	   create_time    varchar(50) NOT NULL,        --create tine
    );   
  • tbl_app_traffic_rule Traffic rule configuration

   CREATE TABLE IF NOT EXISTS tbl_app_traffic_rule (
       app_id              varchar(255) NOT NULL,      --application id
       traffic_rule_id     varchar(255) NOT NULL,      --primary key
       action              varchar(255) DEFAULT NULL,  --action
       priority            int4 DEFAULT NULL,          --priority
       filter_type         varchar(255) DEFAULT NULL,  --filter type
       traffic_filter      text DEFAULT NULL,          --traffic filter
       dst_interface       text DEFAULT NULL,          -- dst interface
       CONSTRAINT  tbl_app_traffic_rule_unique_id_traffic_rule UNIQUE (app_id,traffic_rule_id)
    );
  • tbl_app_dns_rule Diversion rule configuration

   CREATE TABLE IF NOT EXISTS tbl_app_dns_rule (
       app_id            varchar(255) NOT NULL,        --application id
       dns_rule_id       varchar(255) NOT NULL,        --primary key
       domain_name       varchar(255) DEFAULT NULL,    --domain name
       ip_address_type   varchar(255) DEFAULT NULL,    --ip type
       ip_address        varchar(255) DEFAULT NULL,    --ip
       ttl               varchar(255) DEFAULT NULL,    --ttl
       CONSTRAINT  tbl_app_dns_rule_unique_id_dns_rule UNIQUE (app_id,dns_rule_id)
    );
  • tbl_app_service_produced Capability release configuration

   CREATE TABLE IF NOT EXISTS tbl_app_service_produced (
      app_id                     varchar(50) NOT NULL,     --application id
      app_service_produced_id    varchar(50) NOT NULL,     --primary key
      one_level_name             varchar(100) NOT NULL,    --one level capability name
      one_level_name_en          varchar(100) NOT NULL,    --one level english capability name
      two_level_name             varchar(100) NOT NULL,    --two level capability name
      description                varchar(500) NOT NULL,    --two level english capability name
      api_file_id                varchar(50) NOT NULL,     --api file
      guide_file_id              varchar(50) NOT NULL,     --guide file
      icon_file_id               varchar(50) NOT NULL,     --icon file
      service_name               varchar(50) NOT NULL,     --service name
      internal_port              int4 NOT NULL,            --service port
      version                    varchar(30) NOT NULL,     --service version
      protocol                   varchar(30) NOT NULL,     --service protocol
      author                     varchar(50) NOT NULL,     --create author
      experience_url             varchar(500) DEFAULT NULL,--service experience url
      dns_rule_id_list           text DEFAULT NULL,        --dns list
      traffic_rule_id_list       text DEFAULT NULL,        --traffic list
      CONSTRAINT  tbl_app_service_produced_unique_id_name UNIQUE (app_id,service_name)
   );
  • tbl_app_service_required Service dependent configuration

   CREATE TABLE IF NOT EXISTS tbl_app_service_required (
      app_id                   varchar(255) NOT NULL,       --application id
      id                       varchar(255) NOT NULL,       --primary key
      one_level_name           varchar(255) NOT NULL,       --one level capability name
      one_level_name_en        varchar(255) NOT NULL,       --one level english capability name
      two_level_name           varchar(255) NOT NULL,       --two level capability name
      two_level_name_en        varchar(255) NOT NULL,       --two level english capability name
      ser_name                 varchar(255) NOT NULL,       --service name
      version                  varchar(255) DEFAULT NULL,   --service version
      requested_permissions    bool DEFAULT NULL,           --need permission
      ser_app_id               varchar(255) DEFAULT NULL,   --service application id 
      package_id               varchar(255) DEFAULT NULL,   -- package id
      CONSTRAINT  tbl_app_service_required_unique_id_name UNIQUE (app_id,ser_name)
    );
  • tbl_app_certificate Authentication configuration

   CREATE TABLE IF NOT EXISTS tbl_app_certificate (
       app_id      varchar(255) NOT NULL,   --application id
       ak          text DEFAULT NULL,       --ak
       sk          text DEFAULT NULL,       --sk
       CONSTRAINT tbl_app_certificate_pkey PRIMARY KEY (app_id)
    );
  • tbl_application project(Incubation application)Configuration

   CREATE TABLE IF NOT EXISTS tbl_application (
      id              varchar(255) NOT NULL,          --application id
      name            varchar(255) NOT NULL,          --application name
      description     varchar(255) DEFAULT NULL,      --description
      version         varchar(255) NOT NULL,          --version
      provider        varchar(255) NOT NULL,          --application provider
      architecture    varchar(255) DEFAULT NULL,      --application architecture
      app_class       varchar(255) DEFAULT NULL,      --application class
      type            varchar(255) DEFAULT NULL,      --application type
      industry        varchar(255) DEFAULT NULL,      --industry
      icon_file_id    varchar(255) DEFAULT NULL,      --icon file
      guide_file_id   varchar(255) DEFAULT NULL,      --guide file
      app_create_type varchar(255) DEFAULT NULL,      --create type
      create_time     timestamptz(6)  DEFAULT NULL,   --create time
      status          varchar(255) DEFAULT NULL,      --application status
      user_id         varchar(255) DEFAULT NULL,      --user id
      user_name       varchar(255) DEFAULT NULL,      --user name
      mep_host_id     varchar(255) DEFAULT NULL,      --selected sandbox
      CONSTRAINT  tbl_application_unique_name_version UNIQUE (name,version),
      CONSTRAINT tbl_application_pkey PRIMARY KEY (id)
    );
  • tbl_container_helm_chart Record application deployment files

   CREATE TABLE IF NOT EXISTS tbl_container_helm_chart (
      id                     varchar(255) NOT NULL,         --primary key
      app_id                 varchar(255) NOT NULL,         --application id
      name                   varchar(255) DEFAULT NULL,     --generate tgz name
      helm_chart_file_id     text DEFAULT NULL,             --upload file name
	  create_time            timestamptz(6)  DEFAULT NULL,  --create time
      helm_chart_file_list   text DEFAULT NULL,             --file list of tgz file
      CONSTRAINT tbl_container_helm_chart_pkey PRIMARY KEY (id)
   );
  • tbl_vm virtual machine configuration

   CREATE TABLE IF NOT EXISTS tbl_vm (
      id                 varchar(255) NOT NULL,          --vm id
      app_id             varchar(255) DEFAULT NULL,      --application id
      name               varchar(255) NOT NULL,          --vm name
      flavor_id          varchar(255) DEFAULT NULL,      --vm flavor id
      image_id           int4 DEFAULT NULL,              --vm image
      target_image_id    int4 DEFAULT NULL,              --vm target image
      user_data          text DEFAULT NULL,              --user data
      status             varchar(255) DEFAULT NULL,      --vm status
      area_zone          varchar(255) DEFAULT NULL,      --deploy zone
      flavor_extra_specs text DEFAULT NULL,              -- flavor param
      CONSTRAINT tbl_vm_pkey PRIMARY KEY (id)
   );
  • tbl_network virtual machine network configuration

 CREATE TABLE IF NOT EXISTS tbl_network (
    id           varchar(255) NOT NULL,        --primary key
    app_id       varchar(255) DEFAULT NULL,    --application id
    name         varchar(255) NOT NULL,        --net name
    description  varchar(255) DEFAULT NULL,    --net description
    CONSTRAINT tbl_network_pkey PRIMARY KEY (id)
    );
  • tbl_vm_port virtual machine port configuration

CREATE TABLE IF NOT EXISTS tbl_vm_port (
    id            varchar(255) NOT NULL,         --primary key
    vm_id         varchar(255) DEFAULT NULL,     --vm id
    name          varchar(255) DEFAULT NULL,     --port name
    description   varchar(255) DEFAULT NULL,     --port description
    network_name  varchar(255) DEFAULT NULL,     --net name
    CONSTRAINT tbl_vm_port_pkey PRIMARY KEY (id)
    );
  • tbl_vm_certificate virtual machine certificate configuration

CREATE TABLE IF NOT EXISTS tbl_vm_certificate (
    vm_id                  varchar(255) DEFAULT NULL,   --vm id
    certificate_type       varchar(255) NOT NULL,       --vm certificate
    pwd_certificate        text DEFAULT NULL,           --password certificate
    key_pair_certificate   text DEFAULT NULL,           --key-valye certificate
    CONSTRAINT tbl_vm_certificate_pkey PRIMARY KEY (vm_id)
    );
  • tbl_vm_flavor virtual machine specification configuration

CREATE TABLE IF NOT EXISTS tbl_vm_flavor (
    id                varchar(255) NOT NULL,      --primary key
    name              varchar(255) NOT NULL,      --flavor name
    description       varchar(255) DEFAULT NULL,  --description
    architecture      varchar(255) DEFAULT NULL,  --architecture
    cpu               text DEFAULT NULL,          --cpu param
    memory            varchar(255) DEFAULT NULL,  --memory param
    system_disk_size  int4 DEFAULT NULL,          --system disk size
    data_disk_size    int4 DEFAULT NULL,          --data disk size
    gpu_extra_info    text DEFAULT NULL,          --gpu info 
    other_extra_info  text DEFAULT NULL,          --other info
    CONSTRAINT tbl_vm_flavor_pkey PRIMARY KEY (id)
    );
  • tbl_vm_image virtual machine image management

CREATE TABLE IF NOT EXISTS tbl_vm_image (
    id                SERIAL,                      --primary key
    name              varchar(255) NOT NULL,       --image name
    visible_type      varchar(255) DEFAULT NULL,   --visible type
    os_type           varchar(255) DEFAULT NULL,   --os type
    os_version        varchar(255) DEFAULT NULL,   --os version
    os_bit_type       varchar(255) DEFAULT NULL,   --os bit
    system_disk_size  int4 DEFAULT NULL,           --system disk size
    image_file_name   varchar(255) DEFAULT NULL,   --image file name
    image_format      varchar(255) DEFAULT NULL,   --image format
    down_load_url     varchar(255) DEFAULT NULL,   --download url
    file_md5          varchar(255) DEFAULT NULL,   --file md5
    image_size        bigint DEFAULT NULL,         --image size
    image_slim_status varchar(50) DEFAULT NULL,    --image slim size
    status            varchar(255) DEFAULT NULL,   --image status
    create_time       timestamptz(6) DEFAULT NULL, --create time
    modify_time       timestamptz(6) DEFAULT NULL, --modify time
    upload_time       timestamptz(6) DEFAULT NULL, --upload time
    user_id           varchar(255) DEFAULT NULL,   --user id
    user_name         varchar(255) DEFAULT NULL,   --user name
    file_identifier   varchar(128) DEFAULT NULL,   --file identifier
    error_type        varchar(32) DEFAULT NULL,    --error type
    CONSTRAINT tbl_vm_image_uniqueName UNIQUE (name,user_id),
    CONSTRAINT tbl_vm_image_pkey PRIMARY KEY (id)
    );
  • tbl_vm_instantiate_info Virtual machine instantiation information table

CREATE TABLE IF NOT EXISTS tbl_vm_instantiate_info (
    vm_id                   varchar(255) NOT NULL,       --vm id
    operation_id            varchar(255) DEFAULT NULL,   --opreation(after launch vm) id
    app_package_id          varchar(255) DEFAULT NULL,   --vm package id
    distributed_mec_host    varchar(255) DEFAULT NULL,   --selected sandbox
    mepm_package_id         varchar(255) DEFAULT NULL,   --mepm package id
    app_instance_id         varchar(255) DEFAULT NULL,   --app package instance 
    vm_instance_id          varchar(255) DEFAULT NULL,   --vm instance
    status                  varchar(255) DEFAULT NULL,   --vm status
    vnc_url                 varchar(255) DEFAULT NULL,   --vm vnc url
    log                     text DEFAULT NULL,           --deploy log
    instantiate_time        timestamptz(6) DEFAULT NULL, --instantiate time
    CONSTRAINT tbl_vm_instantiate_info_pkey PRIMARY KEY (vm_id)
  );
  • tbl_vm_port_instantiate_info Virtual port instantiation information table

   CREATE TABLE IF NOT EXISTS tbl_vm_port_instantiate_info (
       vm_id           varchar(255) NOT NULL,      --vm id
       network_name    varchar(255) NOT NULL,      --net name
       ip_address      varchar(255) DEFAULT NULL,  --ip
       CONSTRAINT  tbl_vm_port_instantiate_info_unique_id_name UNIQUE (vm_id,network_name)
   );
  • tbl_vm_image_export_info Record virtual machine image export information

 CREATE TABLE IF NOT EXISTS tbl_vm_image_export_info (
    vm_id                varchar(255) NOT NULL,        --vm id
    operation_id         varchar(255) DEFAULT NULL,    --operation id
    image_instance_id    varchar(255) DEFAULT NULL,    --image instance id
    name                 varchar(255) DEFAULT NULL,    --image name
    image_file_name      varchar(255) DEFAULT NULL,    --image file
    format               varchar(255) DEFAULT NULL,    --image format
    download_url         varchar(255) DEFAULT NULL,    --image download url
    check_sum            varchar(255) DEFAULT NULL,    --image sum
    image_size           varchar(255) DEFAULT NULL,    --image size
    status               varchar(255) DEFAULT NULL,    --image status
    log                  text DEFAULT NULL,            --image log
    create_time          timestamptz(6)  DEFAULT NULL, --create time
    CONSTRAINT tbl_vm_image_export_info_pkey PRIMARY KEY (vm_id)
    );
  • tbl_container_app_instantiate_info Container application instantiation information table

  CREATE TABLE IF NOT EXISTS tbl_container_app_instantiate_info (
    app_id                       varchar(255) NOT NULL,        --application id
    operation_id                 varchar(255) NOT NULL,        --operation id
    app_package_id               varchar(255) DEFAULT NULL,    --app pkg
    distributed_mec_host         varchar(255) DEFAULT NULL,    --selected sandbox
    mepm_package_id              varchar(255) DEFAULT NULL,    --mepm package
	app_instance_id              varchar(255) DEFAULT NULL,    --app instance
	status                       varchar(255) DEFAULT NULL,    --deploy status
	log                          text DEFAULT NULL,            --deploy log
	instantiate_time             timestamptz(6)  DEFAULT NULL, --instantiate time
    CONSTRAINT  tbl_container_instantiate_info_unique_id_name UNIQUE (pod_name,name)
    );
  • tbl_k8s_pod_instantiate_info Container application deploymentpodInstantiated information

   CREATE TABLE IF NOT EXISTS tbl_k8s_pod_instantiate_info (
       name            varchar(255) NOT NULL,      --pod name
       app_id          varchar(255) NOT NULL,      --application id
       pod_status      varchar(255) DEFAULT NULL,  --pod status
       events_info     text DEFAULT NULL,          --pod instantiate info
       CONSTRAINT  tbl_k8s_pod_instantiate_info_unique_id_name UNIQUE (app_id,name)
   );
  • tbl_container_instantiate_info Container instantiation information

  CREATE TABLE IF NOT EXISTS tbl_container_instantiate_info (
      name            varchar(255) NOT NULL,       --container name
      pod_name        varchar(255) NOT NULL,       --container pod name
      cpu_usage       varchar(255) DEFAULT NULL,   --cpu usage percent
      mem_usage       varchar(255) DEFAULT NULL,   --memory usage percent
      disk_usage      varchar(255) DEFAULT NULL,   --disk usage percent
      CONSTRAINT  tbl_container_instantiate_info_unique_id_name UNIQUE (pod_name,name)
    );
  • tbl_k8s_service_instantiate_info Container application deploymentServiceInstantiated information

  CREATE TABLE IF NOT EXISTS tbl_k8s_service_instantiate_info (
      name          varchar(255) NOT NULL,       --service name
      app_id        varchar(255) NOT NULL,       --application id
      type          varchar(255) DEFAULT NULL,   --service type
      CONSTRAINT tbl_k8s_service_instantiate_info_pkey PRIMARY KEY (name)
   );
  • tbl_k8s_service_port_instantiate_info Container application deploymentServicePort instantiation information

  CREATE TABLE IF NOT EXISTS tbl_k8s_service_port_instantiate_info (
    port             varchar(255) NOT NULL,       --svc port
    service_name     varchar(255) NOT NULL,       --svc name
    target_port      varchar(255) DEFAULT NULL,   --svc target port
    node_port        varchar(255) DEFAULT NULL,   --svc node port
    CONSTRAINT tbl_k8s_service_port_instantiate_info_pkey PRIMARY KEY (service_name)
    );
  • tbl_operation_status Application deployment operation information table

  CREATE TABLE IF NOT EXISTS tbl_operation_status (
    id                 varchar(255) NOT NULL,      --operation id
    user_name          varchar(255) NOT NULL,      --operation author
    object_type        varchar(255) DEFAULT NULL,  --operate object type
    object_id          varchar(255) DEFAULT NULL,  --operate object id
    object_name        varchar(255) DEFAULT NULL,  --operate object name
    operation_name     varchar(255) DEFAULT NULL,  --operation name
    progress           int4 DEFAULT NULL,          --operate progress
    status             varchar(255) DEFAULT NULL,  --status
    error_msg          text DEFAULT NULL,          --error msg
    create_time        timestamptz(6) DEFAULT NULL,     --create time
    update_time        timestamptz(6)  DEFAULT NULL,    --update time
    CONSTRAINT tbl_operation_status_pkey PRIMARY KEY (id)
    );
  • tbl_action_status Application deploymentactionInformation Sheet

  CREATE TABLE IF NOT EXISTS tbl_action_status (
     id             varchar(255) NOT NULL,        --primary key
     operation_id   varchar(255) NOT NULL,        --operation id
     object_type    varchar(255) DEFAULT NULL,    --operate object type
     object_id      varchar(255) DEFAULT NULL,    --operate object id
     action_name    varchar(255) DEFAULT NULL,    --action name
     progress       int4 DEFAULT NULL,            --action progress
     status         varchar(255) DEFAULT NULL,    --action status
     error_msg      text DEFAULT NULL,            --err msg
     status_log     text DEFAULT NULL,            --action status log
     update_time    timestamptz(6)  DEFAULT NULL, --update time
     CONSTRAINT tbl_action_status_pkey PRIMARY KEY (id)
    );
  • tbl_app_package Generated application package information

   CREATE TABLE IF NOT EXISTS tbl_app_package (
       id                  varchar(255) NOT NULL,      --pkg id
       app_id              varchar(255) NOT NULL,      --application id
       package_file_name   varchar(255) DEFAULT NULL,  --package file name
	   package_file_path   varchar(500) DEFAULT NULL,  --package file path
       CONSTRAINT tbl_app_package_pkey PRIMARY KEY (id)
    );
  • tbl_atp_test_task Application package test certification information table

   CREATE TABLE IF NOT EXISTS tbl_atp_test_task (
    id           varchar(255) NOT NULL,      --task id
    app_id       varchar(255) NOT NULL,      --application id
    app_name     varchar(255) DEFAULT NULL,  --application name
    status       varchar(255) DEFAULT NULL,  --task status
    create_time  varchar(255)  DEFAULT NULL, --create time
    CONSTRAINT tbl_atp_test_task_pkey PRIMARY KEY (id)
    );
  • tbl_profile profileInformation Sheet

  CREATE TABLE IF NOT EXISTS tbl_profile (
    id                    varchar(255) NOT NULL,       --primary key
    name                  varchar(255) NOT NULL,       --profile name
    description           varchar(255) DEFAULT NULL,   --description
    description_en        varchar(255) DEFAULT NULL,   --english description
    file_path             varchar(255) NOT NULL,       --profile file path
    deploy_file_path      text NOT NULL,               --deploy file path
    config_file_path      varchar(255) DEFAULT NULL,   --config file path
    seq                   varchar(255) NOT NULL,       --sequence
    create_time           timestamptz(6)  NOT NULL,    --create time
    type                  varchar(255) NOT NULL,       --type
    industry              varchar(255) NOT NULL,       --industry
    topo_file_path        varchar(255) DEFAULT NULL,   --topo file path
    CONSTRAINT tbl_profile_pkey PRIMARY KEY (id)
    );
  • tbl_app_script Application package script file table

  CREATE TABLE IF NOT EXISTS tbl_app_script (
    id              varchar(255) NOT NULL,     --primary key
    app_id          varchar(255) NOT NULL,     --application id
    name            varchar(255) DEFAULT NULL, --script file name
    script_file_id  text DEFAULT NULL,         --script file id
    create_time     timestamptz(6)  NOT NULL,  --create time
    CONSTRAINT tbl_app_script_pkey PRIMARY KEY (id)
    );
  • tbl_released_package fromAppstoreSynchronized application package information

   CREATE TABLE IF NOT EXISTS tbl_released_package (
       id                     varchar(50) NOT NULL,      --primary key
       app_store_app_id       varchar(50) NOT NULL,      --app id from appstore
       app_store_package_id   varchar(50) NOT NULL,      --pkg id from appstore
       name                   varchar(255) NOT NULL,     --pkg name
       version                varchar(255) NOT NULL,     --pkg version
       provider               varchar(255) NOT NULL,     --provider
       industry               varchar(255) NOT NULL,     --industry
       type                   varchar(255) NOT NULL,     --type
       architecture           varchar(255) NOT NULL,     --app architecture
       short_desc             varchar(255) NOT NULL,     --description
       synchronize_date       timestamptz(6) NOT NULL,   --synchronize date
       user_id                varchar(50) NOT NULL,      --user id
       user_name              varchar(255) NOT NULL,     --user name
       test_task_id           varchar(50) NOT NULL,      --test task id from appstore
       CONSTRAINT tbl_released_package_pkey PRIMARY KEY ("id")
    );

Developer Contribution

Local development environment

This article will guide users on how to build developer-be and developer-fe modules locally, helping developers to quickly understand and develop code.

The local activation of developer-be depends on:

- Service Center
- DataBase
- UserManagement

The local activation of the developer-fe depends on:

- WebsiteGateway
- UserManagement
- developer-be

So in order to build a local development environment, the final sequence is Service Center -> DataBase -> UserManagement -> developer-be -> WebiteGateway (developer-fe)

Detailed process

Service Center

1.Download Service Center

2.Run the start-service-center.bat and start-frontend.bat after decompression

DataBase

1.Download, install, start Postgresql latest version

2.Setting the login name and password as like (postgresql/root)

3.Create a database called developerdb

4.Create table structure based on database statement in developer deployment document

5.Create a database called usermgmtdb

6.Create table structure based on database statement in usermgmt deployment document

User Management

1.Download the user-mgmt-be code and user-mgmt-fe code

2.Install node.js and npm, enter the user-mgmt-fe folder, run npm install and npm run build

3.Create a static folder in the src/main/resources/ folder in user-mgmt-be

4.Copy the contents in the dist folder compiled by user-mgmt-fe into the static folder of user-mgmt-be

5.Configure runtime environment variables for MainServer in the compiler (where IDEA is used as an example)

6.Run the MainServer function, start UserManagement

Developer-be

1.Download developer-be code

2.Configure runtime environment variables for DeveloperApp in the compiler (where IDEA is used as an example)

3.Run the DeveloperApp function to start developer-be

Developer-fe

1.Download developer-fe code

2.Enter the developer-fe folder, run npm install and npm run build

3.Download the website-gateway code

4.Create a static folder in the src/main/resources/ folder on website-gateway

5.Copy the contents in the dist folder compiled by developer-fe in the static folder of website-gateway

6.Modify the server.port in the /src/main/resources/application.yaml document in the website-gateway 8080

7.Configuring runtime environment variables for GatewayApp in the compiler (where IDEA is used as an example)

8.Run GatewayApp Launch WebiteGateway with developer-fe, browser access to http://127.0.0.1:8080/ to access the developer homepage

MECM

OVERVIEW OVERVIEW

Overview

MECM (multi access edge compute manager) provides orchestration and life cycle management of application in edgegallery architecture. MECM provides various features including application on-boarding, application orchestration by selecting appropriate edge based on deployment strategy, application life cycle management, homing and placement of application based on analytics and policies, application/edge resource monitoring and provides unified topology view.

Architecture

Architecture

.

Application Package Manager

Application Package Manager(APM) enables edgegallery to distribute/on-board applications to edge repositories by downloading application packages from appstore.

Application Orchestrator

Application Orchestrator(APPO) is mainly responsible for MEC application orchestration by requesting for life cycle management of MEC application on the edge host by executing specified workflow while maintaining the life cycle state. Orchestration workflows are modeled using Camunda modeler tool and workflows are executed by camunda engine.

Inventory

Inventory provides realtime view of deployed applications on the edge hosts and applications configurations. Inventory is also used for external system registrations.

North

North provides interface to obtain the host list and application distribution deployment. At present, it mainly helps
the Appstore implement the subscription function.

LCM Controller

LCM Controller is responsible MEC application life cycle management operations by sending requests to appropriate pluggable plugin adapters based on the infrastructure.

K8s Plugin

K8s Plugin is responsible for MEC application life cycle management operations on kubernetes infrastructure. K8s plugin use helm client to perform application life cycle management operations.

App Rule Manager

APP Rule Manager is responsible for configuring application rules by sending application rule configurations to MEP. Application rule configurations includes the traffic rules and DNS to be configured.

Resource Controller

Resource Controller performs LCM operations on resources such as flavour, network, virtual machine etc…

Deployment view

.

The deployment view shown is based on k8s deployment. MECM modules supports deployment on virtual machine or docker container to start respective service.

Interface Design

Application Package Manager Interface

The document is for the Application Package Manager project, there is one part of interfaces in the project.

Get All Application Packages

Retrieves all application packages

Resource URI: /apm/v1/tenants/{tenant_id}/packages
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
[
  {
      "appIconUrl": "string",
      "appId": "string",
      "appPkgAffinity": "string",
      "appPkgDesc": "string",
      "appPkgId": "string",
      "appPkgName": "string",
      "appPkgPath": "string",
      "appPkgVersion": "string",
      "appProvider": "string",
      "createdTime": "string",
      "mecHostInfo": [
        {
          "error": "string",
          "hostIp": "string",
          "status": "string"
        }
      ],
      "modifiedTime": "string"
    }
]
Onboard Application Package

Onboard application package

Resource URI: /apm/v1/tenants/{tenant_id}/packages
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

appIconUrl

appIconUrl

body

yes

Valid URL

1024

appId

appId

body

yes

AlphaNumeric with smaller case alphabets

32

appPkgAffinity

appPkgAffinity

body

yes

AlhpaNumeric

255

appPkgDesc

appPkgDesc

body

yes

AlhpaNumeric

1024

appPkgId

appPkgId

body

yes

AlphaNumeric with smaller case alphabets

32

appPkgName

appPkgName

body

yes

AlphaNumeric and allowed special characters hypen and underscore

255

appPkgPath

appPkgPath

body

yes

Valid URL

1024

appPkgVersion

appPkgVersion

body

yes

Valid URL

1024

appProvider

appProvider

body

yes

AlphaNumeric

1024

createdTime

createdTime

body

yes

Valid time

255

mecHostInfo

mecHostInfo

body

yes

Valid URL

15

Example request body:

{
  "appIconUrl": "string",
  "appId": "string",
  "appPkgAffinity": "string",
  "appPkgDesc": "string",
  "appPkgId": "string",
  "appPkgName": "string",
  "appPkgPath": "string",
  "appPkgVersion": "string",
  "appProvider": "string",
  "createdTime": "string",
  "mecHostInfo": [
    {
      "error": "string",
      "hostIp": "string",
      "status": "string"
    }
  ],
  "modifiedTime": "string"
}

Example response:

200 OK
[
  {
     "packageId": "string"
  }
]
Get Application Package Information

Retrieves application package information.

Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

app_package_id

app package id

path

yes

Alphanumeric and must be smaller case

32

tenant_id

tenant id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    "appIconUrl": "string",
    "appId": "string",
    "appPkgAffinity": "string",
    "appPkgDesc": "string",
    "appPkgId": "string",
    "appPkgName": "string",
    "appPkgPath": "string",
    "appPkgVersion": "string",
    "appProvider": "string",
    "createdTime": "string",
    "mecHostInfo": [
      {
        "error": "string",
        "hostIp": "string",
        "status": "string"
      }
    ],
    "modifiedTime": "string"
  }
Get Application template

Retrieves application template.

Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}/apptemplate
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

app_package_id

app package id

path

yes

Alphanumeric and must be smaller case

32

tenant_id

tenant id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    "appPkgName": "positioning_service",
    "version": "1.0",
    "appId": "efa14bd4327c43098343402246619ff3",
    "appPackageId": "9022daf9de964391ae29907221ef95a1",
    "inputs": [
        {
            "name": "APP_Name",
            "type": "string",
            "defaultValue": null,
            "description": "APP_Name"
        },
        {
            "name": "network_name_1",
            "type": "string",
            "defaultValue": "fst01_OM_Plane",
            "description": "APP_NETWORK"
        }
    ]
}
Delete Application Packages

Deletes application package

Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

app_package_id

app package id

path

yes

Alphanumeric and must be smaller case

32

tenant_id

tenant id

path

yes

Valid UUID

64

appId

app id

path

yes

Alphanumeric and must be smaller case

32

Example response:

200 OK
{
 "success"
}
Download Csar

Download application package CSAR

Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}/download
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

app_package_id

app package id

path

yes

Alphanumeric and must be smaller case

32

tenant_id

tenant id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    "description": "string",
    "file": {
      "absolute": true,
      "absolutePath": "string",
      "canonicalPath": "string",
      "directory": true,
      "file": true,
      "freeSpace": 0,
      "hidden": true,
      "name": "string",
      "parent": "string",
      "path": "string",
      "totalSpace": 0,
      "usableSpace": 0
    },
    "filename": "string",
    "inputStream": {},
    "open": true,
    "readable": true,
    "uri": {
      "absolute": true,
      "authority": "string",
      "fragment": "string",
      "host": "string",
      "opaque": true,
      "path": "string",
      "port": 0,
      "query": "string",
      "rawAuthority": "string",
      "rawFragment": "string",
      "rawPath": "string",
      "rawQuery": "string",
      "rawSchemeSpecificPart": "string",
      "rawUserInfo": "string",
      "scheme": "string",
      "schemeSpecificPart": "string",
      "userInfo": "string"
    },
    "url": {
      "authority": "string",
      "content": {},
      "defaultPort": 0,
      "file": "string",
      "host": "string",
      "path": "string",
      "port": 0,
      "protocol": "string",
      "query": "string",
      "ref": "string",
      "userInfo": "string"
    }
  }
Delete Application Package

Deletes an application packages

Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}/hosts/{host_ip}
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

app_package_id

app package id

path

yes

Alphanumeric and must be smaller case

32

host_ip

host ip

path

yes

Valid IP address

15

tenant_id

tenant id

path

yes

Valid UUID

64

Example response:

200 OK
{
 "success"
}
On-boards application with package.

On-boards application with package provided.

Resource URI: /apm/v1/tenants/{tenant_id}/packages/upload
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt token

appPkgName

appPkgName

body

yes

AlphaNumeric and allowed special characters hypen and underscore

255

appPkgVersion

appPkgVersion

body

yes

Valid URL

1024

File

file

formData

No

hostList

host list

formData

yes

tenant_id

tenant id

path

no

Valid UUID

64

Example request body:

{
  "access_token": "string",
  "appPackageName": "string",
  "appPackageVersion": "string",
  "file": "file",
  "hostList": "string",
  "tenant_id": "string",
}

Example response:

202 Accepted
{
  "appId": "string",
  "appPackageId": "string"
}
Queries liveness & readiness

Retrieves data for liveness & readiness

Resource URI: /apm/v1/health
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

Example response:

200 OK
Retrieves all application packages info from app store.

Retrieves all application packages info from app store.

Resource URI: /apm/v1/apps/info/appstores/{appstore_ip}
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appstore_ip

appstore_ip

body

yes

AlphaNumeric with smaller case alphabets

32

Example response:

200 OK
Sync application packages

Sync application package by downloading package from appstore.

Resource URI: /apm/v1/apps/sync
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt token

appId

appId

body

yes

AlphaNumeric with smaller case alphabets

32

packageId

packageId

body

yes

AlphaNumeric with smaller case alphabets

32

Example request body:

[
    {
        "appId": "string",
        "appstoreIp": "string",
        "packageId": "string"
    },
    {
        "appId": "string",
        "appstoreIp": "string",
        "packageId": "string"
    }
]

Example response:

200 OK
[
  {
     "packageId": "string"
  }
]
Retrieves all application packages sync status

Retrieves all application packages sync status.

Resource URI: /apm/v1/apps/syncstatus
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

Example response:

200 OK
Get Application Package Information

Retrieve application packages sync status.

Resource URI: /apm/v1/apps/{app_id}/packages/{package_id}/syncstatus
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appId

appId

body

yes

AlphaNumeric with smaller case alphabets

32

packageId

packageId

body

yes

AlphaNumeric with smaller case alpha

Example response:

200 OK
{
 "appId": "ad dolore laborum",
 "name": "Excep",
 "operationalInfo": "est magna",
 "packageId": "sit n",
 "syncStatus": "cillum exercitation quis"
}
Get Application Package Information

Retrieve application packages sync status.

Resource URI: /apm/v1/tenants/{tenant_id}/app_package_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:

200 OK
{
    "appPackageRecord": [
        {
            "appPkgId": "8e3d6f90bad74cecb7544fc5ebf56782a5df67ab47ba40e09015136573d7bce439937079-99fe-4cd8-881f-04ca8c4fe09d",
            "appPkgName": "Video_Surveillance_ap",
            "appPkgVersion": "2",
            "appPkgPath": "abc",
            "appProvider": "",
            "appPkgDesc": "abc",
            "appPkgAffinity": "bangalore",
            "appIconUrl": "",
            "createdTime": "2021-03-12 07:59:55.695956+00",
            "modifiedTime": "",
            "appId": "1",
            "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a7",
            "packageId": "1",
            "origin": "MEPM",
            "syncStatus": false,
            "mecHostInfo": [
                {
                    "pkgHostKey": "8e3d6f90bad74cecb7544fc5ebf56782a5df67ab47ba40e09015136573d7bce439937079-99fe-4cd8-881f-04ca8c4fe09d119.8.47.5",
                    "hostIp": "119.8.47.5",
                    "appPkgId": "8e3d6f90bad74cecb7544fc5ebf56782a5df67ab47ba40e09015136573d7bce4",
                    "status": "",
                    "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a7",
                    "error": "success",
                    "origin": "MEPM",
                    "syncStatus": false
                }
            ]
        }
    ]
}
APM Open Api Swagger

Applcm Interface

The document is for the Applcm project, there is one part of interfaces in the project.

Upload Config File

Upload Config File

Resource URI: /lcmcontroller/v2/tenants/{tenantId}/configuration
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

string

yes

Valid IP Address

15

configFile

configFile

formData

yes

Example response:

200 OK
{
    "data": null,
    "retCode": 0,
    "message": "Upload config is successful",
    "params": null
}
Delete Config File

Removes the config file

Resource URI: /lcmcontroller/v2/tenants/{tenantId}/configuration
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt Token

hostIp

host Ip

string

yes

Valid IP Address

15

Example response:

200 OK
Instantiate Application

Application instantiated

Resource URI: /lcmcontroller/v2/tenants/{tenantId}/app_instance/{appInstanceId}/instantiate
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

hostIp

host Ip

string

yes

Valid IP

15

appName

appName

string

yes

AlphaNumeric

128

parameters

key value pair

map

no

valid string

Example request body:

{
    "hostIp": "119.8.47.5",
    "packageId": "ea3b8191f8a84565bd8eb5933c8bbcd560e4f65665a84cba851c93ece4fd825d",
    "appName": "testApplication",
    "parameters": {
    	"mepIp": "MEP IP",
    	"mepPort": "MEP port",
    	"ak": "access key",
    	"sk": "secure key",
    	"...": "..."
    }
}

Example response:

200 OK
  {
    {}
  }
Terminates Application

Terminates application instance id

Resource URI: /lcmcontroller/v2/tenants/{tenantId}/app_instances/{appInstanceId}/terminate
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
Query

Get the statistics information

Resource URI: /lcmcontroller/v2/tenants/{tenantId}/app_instances/{appInstanceId}
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Query Kpi

Get cpu , memory and file system size

Resource URI: /lcmcontroller/v2/tenants/{tenantId}/hosts/{hostIp}/kpi
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Query MepCapabilities

Get Mep Capabilities

Resource URI: /lcmcontroller/v2/tenants/{tenantId}/hosts/{hostIp}/mep_capabilities
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

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: /lcmcontroller/v2/tenants/{tenantId}/hosts/{hostIp}/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"
        },
      ]
   }
  ]
Queries liveness & readiness

Retrieves data for liveness & readiness

Resource URI: /lcmcontroller/v1/health
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

Example response:

200 OK
App Deployment Status

Retrieves status of the application deployment

Resource URI: /lcmcontroller/v1/hosts/{hostIp}/packages/{packageId}/status
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

packageId

package Id

path

yes

Valid UUID without hypen

64

Example response:

200 OK
{
  {"package_deployed":false}
}
Query workload

GetWorkloadDescription

Resource URI: /lcmcontroller/v2/tenants/:tenantId/app_instances/:appInstanceId/workload/events
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Query AppInstance information

AppInstance information

Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Query app instances records

Sync app instances records

Resource URI: /lcmcontroller/v2/tenants/:tenantId/app_instances/sync_updated
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Query stale records

Sync app instances stale records

Resource URI: /lcmcontroller/v2/tenants/:tenantId/app_instances/sync_deleted
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Upload package

Upload package

Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

packageId

package Id

header

yes

Valid UUID without hypen

64

appId

app Id

header

yes

Valid UUID without hypen

64

tenantId

tenant Id

path

yes

Valid UUID

64

packages

package file

formData

yes

Valid UUID

64

Example response:

200 OK
Delete package

Delete package

Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

packageId

package Id

path

yes

Valid UUID without hypen

64

Example response:

200 OK
Delete application package on host

Delete application package on host

Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId/hosts/:hostIp
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

packageId

package Id

path

yes

Valid UUID without hypen

64

host_ip

host ip

path

yes

Valid IP

15

Example response:

200 OK
Distribute package

Distribute package

Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

packageId

package Id

header

yes

Valid UUID without hypen

64

packages

package file

formData

yes

Valid UUID

64

Example response:

200 OK
Query

Distribution status

Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

packageId

package Id

header

yes

Valid UUID without hypen

64

Example response:

200 OK
  {
    {}
  }
Distribution status

Distribution status

Resource URI: /lcmcontroller/v1/tenants/:tenantId/packages
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Sync app package records

Sync app package records

Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/sync_updated
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Sync app package stale records

Sync app package stale records

Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/sync_deleted
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Add MEC host
Resource URI: /lcmcontroller/v1//hosts
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

mecHostInfo

MecHostInfo

body

yes

Valid UUID

64

Example response:

200 OK
Update MEC host
Resource URI: /lcmcontroller/v1//hosts
Method: PUT

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

mecHostInfo

MecHostInfo

body

yes

Valid UUID

64

Example response:

200 OK
Query MEC hosts
Resource URI: /lcmcontroller/v1/hosts
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

Example response:

200 OK
  {
    {}
  }
Delete MEC host
Resource URI: /lcmcontroller/v1/hosts:hostIp
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt Token

host_ip

host ip

path

yes

Valid IP

15

Example response:

200 OK
Batch terminate application
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/batchTerminate
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt Token

tenantId

tenant Id

path

yes

Valid UUID

64

Example response:

200 OK
Sync mec host records
Resource URI: /lcmcontroller/v1/hosts/sync_updated
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

Example response:

200 OK
  {
    {}
  }
Sync mec host stale records
Resource URI: /lcmcontroller/v1/hosts/sync_deleted
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

Example response:

200 OK
  {
    {}
  }
Create Image
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

vmId

vm Id

body

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Delete Image
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images/:imageId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

imageId

image Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Get Image
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images/:imageId
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

imageId

image Id

path

yes

Valid UUID

64

Example response:

200 OK
  {
    {}
  }
Get Image file
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images/:imageId/file
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

appInstanceId

appInstance Id

path

yes

Valid UUID

64

tenantId

tenant Id

path

yes

Valid UUID

64

imageId

image Id

path

yes

Valid UUID

64

chunk_num

chunk num

header

yes

Valid int

64

Example response:

200 OK
  {
    {}
  }
Get Services
Resource URI: /lcmcontroller/v1/mep/subscribe_statistic
Method: GET

Example response:

200 OK
  [{
	"serInstanceId": "xxx",
	"serName": "xxx",
	"serCategory": {
		"href": "/example/catalogue1",
		"id": "id12345",
		"name": "RNI",
		"version": "1.2.3"
	},
	"version": "4.5.8",
	"state": "INACTIVE",
	"transportId": "Rest1",
	"transportInfo": {
		"id": "TransId12345",
		"name": "REST",
		"description": "REST API",
		"type": "REST_HTTP",
		"protocol": "HTTP",
		"version": "2.0",
		"endpoint": {
			"uris": null,
			"addresses": null,
			"alternative": null
		},
		"security": {
			"oAuth2Info": {
				"grantTypes": ["OAUTH2_CLIENT_CREDENTIALS"],
				"tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint"
			}
		}
	},
	"serializer": "JSON",
	"scopeOfLocality": "MEC_SYSTEM",
	"isLocal": true,
	"livenessInterval": 60,
	"_links": {
		"self": {
			"liveness": "/mepserver/mec_service_mgmt/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/services/31fe525ee3dbccbf25a234f8e81d696c/liveness"
		},
		"appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f"
	}
}]
Get Kong Logs
Resource URI: /lcmcontroller/v1/mep/kong_log
Method: GET
200 OK
{
	"appServices": [{
		"callTimes": [0, 0, 0, 0, 0, 0, 0],
		"desc": "",
		"name": "hehe5"
	}],
	"mepServices": [{
		"callTimes": [0, 0, 0, 3, 0, 0, 0],
		"desc": "",
		"name": "serviceRegister"
	}]
}
Get Subscribe Statistic
Resource URI: /lcmcontroller/v1/mep/subscribe_statistic
Method: GET
200 OK
{
	"subscribeNum": {
		"appSubscribeNum": 0,
		"serviceSubscribedNum": 0
	},
	"subscribeRelations": []
}
Create Flavor

Create Flavor

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/flavors
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

flavorInfo

Flavor

body

yes

Example response:

200 OK
Query Flavor

Query Flavor

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/flavors/:flavorId
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

flavorId

flavor Id

path

yes

Valid UUID

64

Example response:

200 OK
Delete Flavor

Delete Flavor

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/flavors/:flavorId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

flavorId

flavor Id

path

yes

Valid UUID

64

Example response:

200 OK
Create Server

Create Server

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

serverInfo

Server

body

yes

Example response:

200 OK
Query Server

Query Server

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers/:serverId
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

serverId

server Id

path

yes

Valid UUID

64

Example response:

200 OK
Delete Server

Delete Server

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers/:serverId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

serverId

server Id

path

yes

Valid UUID

64

Example response:

200 OK
Operate Server

Operate Server

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers/:serverId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

serverId

server Id

path

yes

Valid UUID

64

Example response:

200 OK
Create Image

Create Image

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

imageId

image Id

path

yes

Valid UUID

64

imageInfo

Image

body

yes

Example response:

200 OK
Import Image

Import Image

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

imageId

image Id

path

yes

Valid UUID

64

importImageInfo

ImportImage

body

yes

Example response:

200 OK
Query Image

Query Image

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

imageId

image Id

path

yes

Valid UUID

64

Example response:

200 OK
Delete Image

Delete Image

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

imageId

image Id

path

yes

Valid UUID

64

Example response:

200 OK
Create Security Group

Create Security Group

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

securityGroupInfo

SecurityGroup

body

yes

Example response:

200 OK
Query Security Group

Query Security Group

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

securityGroupId

security group Id

path

yes

Valid UUID

64

Example response:

200 OK
Delete Security Group

Delete Security Group

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

securityGroupId

security group Id

path

yes

Valid UUID

64

Example response:

200 OK
Create Security Group rule

Create Security Group rule

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId/securityGroupRules
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

securityGroupId

security group Id

path

yes

Valid UUID

64

securityGroupRulesInfo

SecurityGroupRules

body

yes

Example response:

200 OK
Query Security Group rule

Query Security Group rule

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId/securityGroupRules
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

securityGroupId

security group Id

path

yes

Valid UUID

64

Example response:

200 OK
Delete Security Group rule

Delete Security Group rule

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId/securityGroupRules/:securityGroupRuleId
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

securityGroupId

security group Id

path

yes

Valid UUID

64

securityGroupRuleId

security group rule Id

path

yes

Valid UUID

64

Example response:

200 OK
Create Network

Create Network

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/networks
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

networkInfo

Network

body

yes

Example response:

200 OK
Query Network

Query Network

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/networks/:networkId
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

networkId

network Id

path

yes

Valid UUID

64

Example response:

200 OK
Delete Network

Delete Network

Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/networks/:networkId
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt Token

hostIp

host Ip

path

yes

Valid IP Address

15

tenantId

tenant Id

path

yes

Valid UUID

64

networkId

network Id

path

yes

Valid UUID

64

Example response:

200 OK

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 App Instance Information based in App package ID

Retrieves application instance information based on package ID

Resource URI: /appo/v1/tenants/{tenant_id}/apps/{app_id}/packages/{app_package_id}/status
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

app_id

application id

header

yes

Alphanumeric in lower case

64

app_package_id

application package id

header

yes

Alphanumeric in lower case

64

tenant_id

tenant id

path

yes

Valid UUID

64

Example response:

200 OK
  {
  "data": [
    {
      "appInstanceId": "e87c728c-a552-447b-84ca-782b6c065add",
      "appName": "face_recognition",
      "appDescriptor": "face_recognition",
      "mecHost": "1.1.1.1",
      "mepmHost": "1.1.1.1",
      "operationalStatus": "Created"
    }
  ],
  "retCode": 200,
  "params": [],
  "message": ""
}
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
        }
    ]
}

Create flavor

Create flavor

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors
Method: POST

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 request body:

{
    "name": "test_flavor",
    "vcpus": 2,
    "ram": 1024,
    "disk": 88888,
    "swap": 10,
    "extraSpecs": {
        "EG": "true"
    }
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "create flavor success",
    "params": null
}
Query flavor

Query flavor

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors
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
{
    "data": {
		"name": "test_flavor",
		"vcpus": 2,
        "ram": 1024,
        "disk": 10,
        "swap": "10",
        "extraSpecs": {
		    "EG": "true"
		}},
    "retCode": 0,
    "message": "Query flavor success",
    "params": null
}
Query flavor by id

Query flavor by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors/{flavor_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

flavor_id

tenant_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": {
		"name": "test_flavor",
		"vcpus": 2,
        "ram": 1024,
        "disk": 10,
        "swap": "10",
        "extraSpecs": {
		    "EG": "true"
		}},
    "retCode": 0,
    "message": "Query flavor success",
    "params": null
}
Delete flavor by id

Delete flavor by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors/{flavor_id}
Method: DELETE

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

flavor_id

flavor_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": null,
    "retCode": 0,
    "message": "delete flavor success",
    "params": null
}
Create networks

Create networks

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks
Method: POST

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 request body:

{
    "name": "sample_network",
    "shared": true,
    subnet": {
            "name": "subnetA",
            "enableDhcp": true,
            "gatewayIp": "192.168.xxx.1",
            "cidr": "10.0.0.0/24",
            "allocationPools": [
                {
                    "start": "192.168.xxx.5",
                    "end": "192.168.xxx.25"
                }
            ]
        }
        
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "Create networks success",
    "params": null
}
Query flavor

Query flavor

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks
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
{
    "data": [{
            "id": "0884b5fb-ea5c-4951-9c54-256f4fc38996",
            "name": "mec_network_n6",
            "shared": true,
            "external": false,
            "status": "ACTIVE",
            "adminState": true,
            "availabilityZones": [
                "nova"
            ],
            "subnets": [
                {
                    "cidr": "192.168.225.0/24",
                    "name": "shared-subnet"
                },
                {
                    "cidr": "111.11.11.0/24",
                    "name": "test111"
                }
            ]
        },
        {
            "id": "1e15cba8-979f-4fb8-bb56-e16a0ebabf54",
            "name": "test6666",
            "shared": false,
            "external": false,
            "status": "ACTIVE",
            "adminState": true,
            "availabilityZones": [
                "nova"
            ],
            "subnets": [
                {
                    "cidr": "192.168.4.0/24",
                    "name": "test6666"
                }
            ]
        }
    ]},
    "retCode": 0,
    "message": "Query networks success",
    "params": null
}
Query flavor by id

Query flavor by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks/{network_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

network_id

tenant_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": [{
            "id": "0884b5fb-ea5c-4951-9c54-256f4fc38996",
            "name": "mec_network_n6",
            "shared": true,
            "external": false,
            "status": "ACTIVE",
            "adminState": true,
            "availabilityZones": [
                "nova"
            ],
            "subnets": [
                {
                    "cidr": "192.168.225.0/24",
                    "name": "shared-subnet"
                },
                {
                    "cidr": "111.11.11.0/24",
                    "name": "test111"
                }
            ]
        },
        {
            "id": "1e15cba8-979f-4fb8-bb56-e16a0ebabf54",
            "name": "test6666",
            "shared": false,
            "external": false,
            "status": "ACTIVE",
            "adminState": true,
            "availabilityZones": [
                "nova"
            ],
            "subnets": [
                {
                    "cidr": "192.168.4.0/24",
                    "name": "test6666"
                }
            ]
        }
    ]},
    "retCode": 0,
    "message": "Query networks success",
    "params": null
}
Delete network by id

Delete network by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks/{network_id}
Method: DELETE

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

network_id

network_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": null,
    "retCode": 0,
    "message": "delete network success",
    "params": null
}
Create servers

Create servers

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers
Method: POST

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 request body:

{
    "server" : {
        "name": "vmTest",
        "flavor": "0e12087a-7c87-476a-8f84-7398e991cecc",
        "image" : "cec3aab9-5991-4893-befe-4775ddf79de6",
        "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b",
        "availabilityZone": "us-west",
        "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
        "configDrive": "true",
        "securityGroups": [
            {
                "name": "default"
            }
        ],
		"netWorks": [
            {
                "network": "0884b5fb-ea5c-4951-9c54-256f4fc38991",
				"fixedIp": "192.168.xx.19"
            },
			{
                "network": "241aee72-de67-4c95-bdaa-e63f12fbd183",
				"fixedIp": "192.168.xx.19"
            },
			{
                "network": "446aa035-f737-45db-9834-83c7a5f94046",
				"fixedIp": "192.168.xxx.19"
            }
        ]
    }
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "Create server success",
    "params": null
}
Query servers

Query servers

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers
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
{
    "data": {
	"servers": [
        {
            "OS-DCF:diskConfig": "AUTO",
            "OS-EXT-AZ:availability_zone": "nova",
            "OS-EXT-SRV-ATTR:host": "compute",
            "OS-EXT-SRV-ATTR:hostname": "new-server-test",
            "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini",
            "OS-EXT-SRV-ATTR:instance_name": "instance-00000001",
            "OS-EXT-SRV-ATTR:kernel_id": "",
            "OS-EXT-SRV-ATTR:launch_index": 0,
            "OS-EXT-SRV-ATTR:ramdisk_id": "",
            "OS-EXT-SRV-ATTR:reservation_id": "r-l0i0clt2",
            "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda",
            "OS-EXT-SRV-ATTR:user_data": "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
            "OS-EXT-STS:power_state": 1,
            "OS-EXT-STS:task_state": null,
            "OS-EXT-STS:vm_state": "active",
            "OS-SRV-USG:launched_at": "2019-04-23T15:19:15.317839",
            "OS-SRV-USG:terminated_at": null,
            "accessIPv4": "1.2.3.4",
            "accessIPv6": "80fe::",
            "addresses": {
                "private": [
                    {
                        "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                        "OS-EXT-IPS:type": "fixed",
                        "addr": "192.168.1.30",
                        "version": 4
                    }
                ]
            },
            "config_drive": "",
            "created": "2019-04-23T15:19:14Z",
            "description": null,
            "flavor": {
                "disk": 1,
                "ephemeral": 0,
                "extra_specs": {},
                "original_name": "m1.tiny",
                "ram": 512,
                "swap": 0,
                "vcpus": 1
            },
            "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
            "host_status": "UP",
            "id": "2ce4c5b3-2866-4972-93ce-77a2ea46a7f9",
            "image": {
                "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            },
            "key_name": null,
            
            "locked": true,
            "locked_reason": "I don't want to work",
            "metadata": {
                "My Server Name": "Apache1"
            },
            "name": "new-server-test",
            "os-extended-volumes:volumes_attached": [],
            "progress": 0,
            "security_groups": [
                {
                    "name": "default"
                }
            ],
            "status": "ACTIVE",
            "tags": [],
            "tenant_id": "6f70656e737461636b20342065766572",
            "trusted_image_certificates": null,
            "updated": "2019-04-23T15:19:15Z",
            "user_id": "admin"
        }
    ]},
    "retCode": 0,
    "message": "Query servers success",
    "params": null
}
Query server by id

Query server by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers/{server_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

server_id

tenant_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": {"server": {
        "OS-DCF:diskConfig": "AUTO",
        "OS-EXT-AZ:availability_zone": "nova",
        "OS-EXT-SRV-ATTR:host": "compute",
        "OS-EXT-SRV-ATTR:hostname": "new-server-test",
        "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini",
        "OS-EXT-SRV-ATTR:instance_name": "instance-00000001",
        "OS-EXT-SRV-ATTR:kernel_id": "",
        "OS-EXT-SRV-ATTR:launch_index": 0,
        "OS-EXT-SRV-ATTR:ramdisk_id": "",
        "OS-EXT-SRV-ATTR:reservation_id": "r-t61j9da6",
        "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda",
        "OS-EXT-SRV-ATTR:user_data": "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==",
        "OS-EXT-STS:power_state": 1,
        "OS-EXT-STS:task_state": null,
        "OS-EXT-STS:vm_state": "active",
        "OS-SRV-USG:launched_at": "2019-04-23T15:19:10.855016",
        "OS-SRV-USG:terminated_at": null,
        "accessIPv4": "1.2.3.4",
        "accessIPv6": "80fe::",
        "addresses": {
            "private": [
                {
                    "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74",
                    "OS-EXT-IPS:type": "fixed",
                    "addr": "192.168.1.30",
                    "version": 4
                }
            ]
        },
        "config_drive": "",
        "created": "2019-04-23T15:19:09Z",
        "description": null,
        "flavor": {
            "disk": 1,
            "ephemeral": 0,
            "extra_specs": {},
            "original_name": "m1.tiny",
            "ram": 512,
            "swap": 0,
            "vcpus": 1
        },
        "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6",
        "host_status": "UP",
        "id": "0e12087a-7c87-476a-8f84-7398e991cecc",
        "image": {
            "id": "70a599e0-31e7-49b7-b260-868f441e862b",
        },
        "key_name": null,
        
        "locked": true,
        "locked_reason": "I don't want to work",
        "metadata": {
            "My Server Name": "Apache1"
        },
        "name": "new-server-test",
        "os-extended-volumes:volumes_attached": [],
        "progress": 0,
        "security_groups": [
            {
                "name": "default"
            }
        ],
        "server_groups": [],
        "status": "ACTIVE",
        "tags": [],
        "tenant_id": "6f70656e737461636b20342065766572",
        "trusted_image_certificates": null,
        "updated": "2019-04-23T15:19:11Z",
        "user_id": "admin"
    }},
    "retCode": 0,
    "message": "Query servers success",
    "params": null
}
Operate servers

Operate servers

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers/{server_id}
Method: POST

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

server_id

tenant_id

path

yes

Valid UUID

64

Example request body:

{
    "action" : "" ### reboot/createImage/pause(数据保留到内存)/unpause(after pause)/suspend(数据保留到磁盘)/resume(after suspend)/stop(关机)/start(after stop)/createConsole
    ### if action reboot, need add params like "HARD" or "SOFT" , if action createImage need add params name and metadata
	"reboot" : " " 
	"createImage : { 
	    "name": "vmsnap",
		"metadata": { }
	} 
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "Operate server success",
    "params": null
}
Delete servers by serverId

Delete servers by serverId

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers/{server_id}
Method: DELETE

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

server_id

server_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": null,
    "retCode": 0,
    "message": "delete server success",
    "params": null
}
Create images

Create images

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images
Method: POST

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 request body:

{
    name: "test_image",
    containerFormat: "",
    diskFormat: "",
    minRam: 1,
    minDisk: 10,
    properties: { }
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "create image success",
    "params": null
}
Import image

Import image

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/{image_id}
Method: POST

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

image_id

image_id

path

yes

Valid UUID

64

Example request body:

{
    resourceUri: "example",       
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "import image success",
    "params": null
}
Query images

Query images

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/
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 { “images”: [ { “status”: “active”, “name”: “cirros-0.3.2-x86_64-disk”, “tags”: [], “container_format”: “bare”, “created_at”: “2014-11-07T17:07:06Z”, “disk_format”: “qcow2”, “updated_at”: “2014-11-07T17:19:09Z”, “visibility”: “public”, “self”: “/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27”, “min_disk”: 0, “protected”: false, “id”: “1bea47ed-f6a9-463b-b423-14b9cca9ad27”, “file”: “/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file”, “checksum”: “64d7c1cd2b6f60c92c14662941cb7913”, “os_hash_algo”: “sha512”, “os_hash_value”: “073b4523583784fbe01daff81eba092a262ec37ba6d04dd3f52e4cd5c93eb8258af44881345ecda0e49f3d8cc6d2df6b050ff3e72681d723234aff9d17d0cf09”, “os_hidden”: false, “owner”: “5ef70662f8b34079a6eddb8da9d75fe8”, “size”: 13167616, “min_ram”: 0, “schema”: “/v2/schemas/image”, “virtual_size”: null } ], “schema”: “/v2/schemas/images”, “first”: “/v2/images” }

### Query images by id
Query images by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/{image_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|
|image_id|image_id|path|yes|Valid UUID|64|

Example response:

200 OK
{
    "status": "active",
    "name": "cirros-0.3.2-x86_64-disk",
    "tags": [],
    "container_format": "bare",
    "created_at": "2014-05-05T17:15:10Z",
    "disk_format": "qcow2",
    "updated_at": "2014-05-05T17:15:11Z",
    "visibility": "public",
    "self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27",
    "min_disk": 0,
    "protected": false,
    "id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27",
    "file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file",
    "checksum": "64d7c1cd2b6f60c92c14662941cb7913",
    "os_hash_algo": "sha512",
    "os_hash_value": "073b4523583784fbe01daff81eba092a262ec37ba6d04dd3f52e4cd5c93eb8258af44881345ecda0e49f3d8cc6d2df6b050ff3e72681d723234aff9d17d0cf09",
    "os_hidden": false,
    "owner": "5ef70662f8b34079a6eddb8da9d75fe8",
    "size": 13167616,
    "min_ram": 0,
    "schema": "/v2/schemas/image",
    "virtual_size": null
}
Delete image by id

Delete image by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/{image_id}
Method: DELETE

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

image_id

image_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": null,
    "retCode": 0,
    "message": "delete image success",
    "params": null
}
Create securityGroups

Create securityGroups

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups
Method: POST

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 request body:

{
    "name": "new-webservers",
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "create securityGroup success",
    "params": null
}
Query securityGroups

Query securityGroups

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups
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
{
    "data": {"securityGroup": [
        {
            "description": "default",
            "id": "85cc3048-abc3-43cc-89b3-377341426ac5",
            "name": "default",
            "securityGroupRule": [
                {
                    "direction": "egress",
                    "ethertype": "IPv6",
                    "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff",
                    "port_range_max": null,
                    "port_range_min": null,
                    "protocol": null,
                    "remote_group_id": null,
                    "remote_ip_prefix": null,
                    "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
                    "project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
                    "revision_number": 1,
                    "tags": ["tag1,tag2"],
                    "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
                    "created_at": "2018-03-19T19:16:56Z",
                    "updated_at": "2018-03-19T19:16:56Z",
                    "description": ""
                }
            ],
            "project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
            "revision_number": 8,
            "created_at": "2018-03-19T19:16:56Z",
            "updated_at": "2018-03-19T19:16:56Z",
            "tags": ["tag1,tag2"],
            "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
            "stateful": true,
            "shared": false
        }
    ]},
    "retCode": 0,
    "message": "Query securityGroups success",
    "params": null
}
Query securityGroup by securityGroupId

Query securityGroup by securityGroupId

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_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

security_group_id

security_group_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": {"securityGroup": {
        "description": "default",
        "id": "85cc3048-abc3-43cc-89b3-377341426ac5",
        "name": "default",
        "securityGroupRule": [
            {
                "securityGroupId": "a7734e61-b545-452d-a3cd-0189cbd9747a",
		        "direction": "egress",
		        "protocol": "tcp",
                "ethertype": "IPv4",
		        "port_range_min": 80,
                "port_range_max": 90,
		        remoteIpPrefix: "",
                "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5"
            }
        ],
        "project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
        "created_at": "2018-03-19T19:16:56Z",
        "updated_at": "2018-03-19T19:16:56Z",
        "revision_number": 4,
        "tags": ["tag1,tag2"],
        "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
        "stateful": true,
        "shared": false
    }},
    "retCode": 0,
    "message": "Query securityGroup success",
    "params": null
}
Delete securityGroup by id

Delete securityGroup by id

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id}
Method: DELETE

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

security_group_id

security_group_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": null,
    "retCode": 0,
    "message": "delete securityGroup success",
    "params": null
}
Create securityGroupRules

Create securityGroupRules

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id}/securityGroupRules
Method: POST

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

security_group_id

security_group_id

path

yes

Valid UUID

64

Example request body:

{
        "securityGroupId": "a7734e61-b545-452d-a3cd-0189cbd9747a",
        "direction": "ingress",
        "protocol": "tcp",
        "ethertype": "IPv4",
        "port_range_min": 80,
        "port_range_max": 90,
        remoteIpPrefix: "",
        "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5"
}

Example response:

200 Accepted
{
    "data": null,
    "retCode": 0,
    "message": "create securityGroupRules success",
    "params": null
}
Query securityGroupRules

Query securityGroupRules

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id}/securityGroupRules
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

security_group_id

security_group_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": {"securityGroupRule": [
        {
            "direction": "egress",
            "ethertype": "IPv6",
            "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff",
            "port_range_max": null,
            "port_range_min": null,
            "protocol": null,
            "remote_group_id": null,
            "remote_ip_prefix": null,
            "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
            "project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
            "revision_number": 1,
            "created_at": "2018-03-19T19:16:56Z",
            "updated_at": "2018-03-19T19:16:56Z",
            "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
            "description": ""
        }
    ]},
    "retCode": 0,
    "message": "Query securityGroupRules success",
    "params": null
}
Delete securityGroupRules by securityGroupRulesId

Delete securityGroupRules by securityGroupRulesId

Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id}/securityGroupRules
Method: DELETE

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

security_group_id

security_group_id

path

yes

Valid UUID

64

Example response:

200 OK
{
    "data": null,
    "retCode": 0,
    "message": "delete securityGroupRule success",
    "params": null
}
APPO Open Api Swagger

Inventory Interfaces

The document is for the Inventory project, there are three parts of interfaces in the project.

Get All Application Records

Retrieves all application store records

Resource URI: /inventory/v1/appstores
Method: GET
Name Definition Type Required Allowed Max Length
access_token access token header yes Jwt token

Example response:

200 OK
  {
    {
      "appstoreIp": "string",
      "appstoreName": "string",
      "appstorePort": "string",
      "producer": "string",
      "uri": "string",
      "userName": "string"
    }
  }
Add Application Store Record

Adds new application store record

Resource URI: /inventory/v1/appstores
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appstoreIp

appstoreIp

body

yes

Valid IP Address

15

appstoreName

appstoreName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

appstorePort

appstorePort

body

yes

Valid Port

5

producer

producer

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

uri

uri

body

yes

Valid UUID

128

userName

userName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

Example request body:

{
  "appstoreIp": "string",
  "appstoreName": "string",
  "appstorePort": "string",
  "producer": "string",
  "uri": "string",
  "userName": "string"
}

Example response:

200 OK
[
  {
    "Saved"
  }
]
Delete All Application Records

Deletes all application stores records

Resource URI: /inventory/v1/appstores
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Get Application Stores Record

Retrieves application store record

Resource URI: /inventory/v1/appstores/{appstore_ip}
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt token

appstore_ip

appstore IP

path

yes

Valid IP Address

15

Example response:

200 OK
  {
    "appstoreIp" : "string"
    "appstorePort" : "string"
    "uri" : "string"
    "userName" : "string"
    "appstoreName" : "string" 
    "producer" : "string"
  }
Add Application record

Adds a new application store record entry into the Inventory.

Resource URI: /inventory/v1/appstores
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appstoreIp

appstoreIp

body

yes

Valid IP Address

15

appstoreName

appstoreName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

appstorePort

appstorePort

body

yes

Valid Port

5

appstoreRepoName

appstoreRepoName

body

yes

Valid appstoreRepoName

128

appstoreRepo

appstoreRepo

body

yes

Valid appstoreRepo

128

appstoreRepoUserName

appstoreRepoUserName

body

yes

Valid appstoreRepoUserName

128

appstoreRepoPassword

appstoreRepoPassword

body

yes

Valid appstoreRepoPassword

15

producer

producer

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

Example request body:

  {
    "appstoreIp" : "string"
    "appstorePort" : "string"
    "appstoreName" : "string"
    "appstoreRepoName" : "string"
    "appstoreRepo" : "string"
    "appstoreRepoUserName" : "string"
    "appstoreRepoPassword" : "string"
    "producer" : "string"
  }

Example response:

200 OK
[
  {
    "Saved"
  }
]
Update Application record

Updates an exiting application store record in the Inventory matching the given tenant ID & application store IP

Resource URI: /inventory/v1/appstores/{appstore_ip}
Method: PUT

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appstoreIp

appstoreIp

body

yes

Valid IP Address

15

appstoreName

appstoreName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

appstorePort

appstorePort

body

yes

Valid Port

5

appstoreRepoName

appstoreRepoName

body

yes

Valid appstoreRepoName

128

appstoreRepo

appstoreRepo

body

yes

Valid appstoreRepo

128

appstoreRepoUserName

appstoreRepoUserName

body

yes

Valid appstoreRepoUserName

128

appstoreRepoPassword

appstoreRepoPassword

body

yes

Valid appstoreRepoPassword

15

producer

producer

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

Example request body:

  {
    "appstoreIp" : "string"
    "appstorePort" : "string"
    "appstoreName" : "string"
    "appstoreRepoName" : "string"
    "appstoreRepo" : "string"
    "appstoreRepoUserName" : "string"
    "appstoreRepoPassword" : "string"
    "producer" : "string"
  }

Example response:

200 OK
[
  {
    "Updated"
  }
]
Get App Stores Record

Retrieves all application store record

Resource URI: /inventory/v1/appstores
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt token

Example response:

200 OK
[
  {
    "appstoreIp" : "string"
    "appstorePort" : "string"
    "appstoreName" : "string"
    "appstoreRepoName" : "string"
    "appstoreRepo" : "string"
    "appstoreRepoUserName" : "string"
    "appstoreRepoPassword" : "string"
    "producer" : "string"
  },
  {
    "appstoreIp" : "string"
    "appstorePort" : "string"
    "appstoreName" : "string"
    "appstoreRepoName" : "string"
    "appstoreRepo" : "string"
    "appstoreRepoUserName" : "string"
    "appstoreRepoPassword" : "string"
    "producer" : "string"
  }
]
Delete App Stores Record

Deletes all application store records for a given tenant.

Resource URI: /inventory/v1/appstores/
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Get App Stores Record

Retrieves a specific application store record in the Inventory matching the given tenant ID & application store IP

Resource URI: /inventory/v1/appstores/{appstore_ip}
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access_token

header

yes

Jwt token

appstore_ip

appstore IP

path

yes

Valid IP Address

15

Example response:

200 OK
  {
    "appstoreIp" : "string"
    "appstorePort" : "string"
    "appstoreName" : "string"
    "appstoreRepoName" : "string"
    "appstoreRepo" : "string"
    "appstoreRepoUserName" : "string"
    "appstoreRepoPassword" : "string"
    "producer" : "string"
  }
Delete App Stores Record

Deletes a specific application store record in the Inventory matching the given tenant ID & application store IP

Resource URI: /inventory/v1/appstores/{appstore_ip}
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appstore_ip

appstore IP

path

yes

Valid IP Address

15

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Update App Store Record

Updates existing application store record

Resource URI: /inventory/v1/appstores/{appstore_ip}
Method: PUT

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appstore_ip

appstore IP

path

yes

Valid IP Address

15

appstoreIp

appstoreIp

body

yes

Valid IP Address

15

appstoreName

appstoreName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

appstorePort

appstorePort

body

yes

Valid Port

5

producer

producer

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

uri

uri

body

yes

Valid UUID

128

userName

userName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

Example request body:

{
  "appstoreIp": "string",
  "appstoreName": "string",
  "appstorePort": "string",
  "producer": "string",
  "uri": "string",
  "userName": "string"
}

Example response:

200 OK
[
  {
    "Updated"
  }
]
Deletes Application Record

Deletes application store record

Resource URI: /inventory/v1/appstores/{appstore_ip}
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appstore_ip

appstore IP

path

yes

Valid IP address

15

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Get All MEC Host Records

Retrieves all MEC host records

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

Example response:

200 OK
[
 {
       "mechostIp": "string",
       "mechostName": "string",
       "zipCode": "string",
       "city": "string",
       "address": "string",
       "affinity": "string",
       "userName": "string",
       "edgerepoName": null,
       "edgerepoIp": "string",
       "edgerepoPort": "string",
       "edgerepoUsername": "string",
       "applcmIp": "string",
       "hwcapabilities": [
           {
               "hwType": "string",
               "hwVendor": "string",
               "hwModel": "string"
           },
           {
               "hwType": "string",
               "hwVendor": "string",
               "hwModel": "string"
           }
       ]
   }
]
Add MEC Host Record

Adds new MEC host record

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

mechost_ip

mechost IP

path

yes

Valid IP address

15

address

address

body

yes

Valid IP address

255

affinity

affinity

body

yes

AlphaNumeric, special characters allowed are hypen,underscore and comma

128

applcmIp

applcmIp

body

yes

Valid IP address

15

city

city

body

yes

AlphaNumeric, special characters allowed are slash and space

128

edgeName

edgeName

body

yes

AlphaNumeric, special characters allowed are slash and space

128

edgerepoIp

edgerepoIp

body

yes

Valid IP address

255

edgerepoUsername

edgerepoUsername

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

mechostIp

mechostIp

body

yes

Valid IP address

15

mechostName

mechostName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

userName

userName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

zipCode

zipCode

body

yes

Alpha, special characters allowed are hypen and underscore

128

hwcapabilities

hardwareCapabilities

body

No

AlphaNumeric characters allowed

128

hwType

hardwareType

body

No

AlphaNumeric characters allowed

128

hwVendor

hardwareVendor

body

No

AlphaNumeric characters allowed

128

hwModel

hardwareModel

body

No

AlphaNumeric characters allowed

128

Example request body:

[
  {
      "mechostIp": "string",
      "mechostName": "string",
      "zipCode": "string",
      "city": "string",
      "address": "string",
      "affinity": "string",
      "userName": "string",
      "edgerepoName": null,
      "edgerepoIp": "string",
      "edgerepoPort": "string",
      "edgerepoUsername": "string",
      "applcmIp": "string",
      "hwcapabilities": [
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          },
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          }
      ]
  }
]

Example response:

200 OK
[
  {
    "Saved"
  }
]
Delete All MEC Host Records

Deletes all application stores records

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Get MEC Host Record

Retrieves MEC host records

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

mechost_ip

mechost_ip

path

yes

Valid IP address

15

200 OK
{
      "mechostIp": "string",
      "mechostName": "string",
      "zipCode": "string",
      "city": "string",
      "address": "string",
      "affinity": "string",
      "userName": "string",
      "edgerepoName": null,
      "edgerepoIp": "string",
      "edgerepoPort": "string",
      "edgerepoUsername": "string",
      "applcmIp": "string",
      "hwcapabilities": [
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          },
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          }
      ]
  }
Update MEC Host Record

Updates existing MEC host record

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}
Method: PUT

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

mechost_ip

mechost IP

path

yes

Valid IP address

15

address

address

body

yes

Valid IP address

255

affinity

affinity

body

yes

AlphaNumeric, special characters allowed are hypen,underscore and comma

128

applcmIp

applcmIp

body

yes

Valid IP address

15

city

city

body

yes

AlphaNumeric, special characters allowed are slash and space

128

edgeName

edgeName

body

yes

AlphaNumeric, special characters allowed are slash and space

128

edgerepoIp

edgerepoIp

body

yes

Valid IP address

255

edgerepoUsername

edgerepoUsername

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

mechostIp

mechostIp

body

yes

Valid IP address

15

mechostName

mechostName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

userName

userName

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

zipCode

zipCode

body

yes

Alpha, special characters allowed are hypen and underscore

128

hwcapabilities

hardwareCapabilities

body

No

AlphaNumeric characters allowed

128

hwType

hardwareType

body

No

AlphaNumeric characters allowed

128

hwVendor

hardwareVendor

body

No

AlphaNumeric characters allowed

128

hwModel

hardwareModel

body

No

AlphaNumeric characters allowed

128

Example request body:

{
      "mechostIp": "string",
      "mechostName": "string",
      "zipCode": "string",
      "city": "string",
      "address": "string",
      "affinity": "string",
      "userName": "string",
      "edgerepoName": null,
      "edgerepoIp": "string",
      "edgerepoPort": "string",
      "edgerepoUsername": "string",
      "applcmIp": "string",
      "hwcapabilities": [
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          },
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          }
      ]
  }

Example response:

200 OK
[
  {
    "Updated"
  }
]
Delete MEC Host Record

Deletes application stores record

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

mechost_ip

mechost IP

path

yes

Valid IP Address

15

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Add Application record

Adds new application record.

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/apps
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appInstanceId

appInstance id

body

yes

Valid UUID

64

mechost_ip

mechost ip

path

yes

Valid IP Address

15

appName

appName

body

yes

AlphaNumeric,special characters allowed are hypen and underscore

128

capabilities

capabilities

body

yes

capabilities

10

packageId

packageId

body

yes

AlphaNumeric,special characters allowed are hypen and underscore

64

status

status

body

yes

AlphaNumeric,special characters allowed are hypen and underscore

128

Example request body:

{
  "appInstanceId": "string",
  "appName": "string",
  "capabilities": [
    "string"
  ],
  "packageId": "string",
  "status": "string"
}

Example response:

200 OK
[
  {
    "Saved"
  }
]
Update Application record

Updates Application record.

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/apps/{app_id}
Method: PUT

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

appInstanceId

appInstance id

body

yes

Valid UUID

64

tenant_id

tenant identifier

path

yes

Valid UUID

64

mechost_ip

mechost ip

path

yes

Valid IP Address

15

appName

appName

body

yes

AlphaNumeric,special characters allowed are hypen and underscore

128

capabilities

capabilities

body

yes

capabilities

10

packageId

packageId

body

yes

AlphaNumeric,special characters allowed are hypen and underscore

64

status

status

body

yes

AlphaNumeric,special characters allowed are hypen and underscore

128

Example request body:

{
  "appInstanceId": "string",
  "appName": "string",
  "capabilities": [
    "string"
  ],
  "packageId": "string",
  "status": "string"
}

Example response:

200 OK
[
  {
    "Updated"
  }
]
Delete Application record

Delete application record

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/apps/{app_id}
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mechost_ip

mechost_ip

path

yes

Valid IP address

15

tenant_id

tenant identifier

path

yes

Valid UUID

64

app_id

application id

path

yes

Valid UUID

64

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Retrieves MEC host record

Retrieves MEC host record for specific capabilities

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/capabilities
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mechost_ip

mechost_ip

path

yes

Valid IP address

15

tenant_id

tenant identifier

path

yes

Valid UUID

64

capabilities

capabilities

path

yes

capabilities

10

Example response:

200 OK
{
      "hwcapabilities": [
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          },
          {
              "hwType": "string",
              "hwVendor": "string",
              "hwModel": "string"
          }
      ]
  }
Retrieves MEC application record

Retrieves applications matching capability in a specific MEC host record.

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/capabilities/{capability_type}/applications
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mechost_ip

mechost_ip

path

yes

Valid IP address

15

tenant_id

tenant identifier

path

yes

Valid UUID

64

capabilities

capabilities

path

yes

capabilities

10

capabilityType

capability type

path

yes

AlphaNumeric,special characters allowed are hypen and underscore

128

Example response:

200 OK
{
      "apps": [
          {
              "appInstanceId": "string",
              "appName": "string",
              "packageId": "string"
              "capabilities": [
                  "string"
              ],
              "status": "Created"
      ]
  }
Upload K8s Configuration File

Upload K8s configuration file to applcm

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/k8sconfig
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

file

file

formData

yes

tenant_id

tenant identifier

path

yes

Valid UUID

64

mechost_ip

mechost IP

path

yes

Valid IP Address

15

Example response:

200 OK
  [
    "response": {}
  ]
Delete K8s Configuration File

Deletes K8s configuration file from applcm

Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/k8sconfig
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

mechost_ip

mechost IP

path

yes

Valid IP Address

15

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Queries liveness & readiness

Retrieves data for liveness & readiness

Resource URI: /inventory/v1/health
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

Example response:

200 OK
Add APPDRule record to Inventory.

Adds a new APPDRule record entry into the Inventory.

Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

appInstanceIds

application instance id

path

yes

Valid UUID

64

Example request body:

{
  "appTrafficRule": [
    {
      "trafficRuleId": "string",
      "filterType": "string",
      "priority": int,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "qCI": int,
          "dSCP": int,
          "tC": int
        }
      ],
      "action": "string",
      "state": "string"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": int,
      "state": "string"
    }
  ],
  "appSupportMp1": true,
  "appName": "abcd"
}

Example response:

200 OK
{
    "Saved"
}
Update APPDRule record to Inventory.

Updates a existing APPDRule record entry into the Inventory matching the given tenant ID & app instance ID.

Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration
Method: PUT

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

appInstanceIds

application instance id

path

yes

Valid UUID

64

Example request body:

{
  "appTrafficRule": [
    {
      "trafficRuleId": "string",
      "filterType": "string",
      "priority": int,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "qCI": int,
          "dSCP": int,
          "tC": int
        }
      ],
      "action": "string",
      "state": "string"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": int,
      "state": "string"
    }
  ],
  "appSupportMp1": true,
  "appName": "abcd"
}

Example response:

200 OK
{
    "Updated"
}
Get APPDRule record to Inventory.

Retrieves appDRule records for given tenant ID and app instance ID.

Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

appInstanceIds

application instance id

path

yes

Valid UUID

64

Example response body:

200 OK
{
  "appTrafficRule": [
    {
      "trafficRuleId": "string",
      "filterType": "string",
      "priority": int,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "qCI": int,
          "dSCP": int,
          "tC": int
        }
      ],
      "action": "string",
      "state": "string"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": int,
      "state": "string"
    }
  ],
  "appSupportMp1": true,
  "appName": "abcd"
}
Delete APPDRule record .

Deletes appDRule records for a given tenant and app instance.

Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

appInstanceIds

application instance id

path

yes

Valid UUID

64

Example response body:

200 OK
{
"DELETED"
}
Synchronizes mec host info from edge

Synchronizes mec host info from edge.

Resource URI: /mepms/{mepm_ip}/mechost/sync
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mepm_ip

mepm_ip

path

yes

Valid IP Address

15

Example response body:

200 OK
{
    "mecHostUpdatedRecs": [
        {
            "mechostIp": "127.0.0.2",
            "mechostName": "edgegallery3",
            "zipCode": "560038",
            "city": "bangalore",
            "address": "anadapura",
            "affinity": "karanataka",
            "userName": "ramasubbareddy",
            "configUploadStatus": "false",
            "coordinates": "1,2",
            "vim": "openstack",
            "origin": "MEPM",
            "hwcapabilities": [
                {
                    "hwType": "type6",
                    "hwVendor": "vendor1",
                    "hwModel": "model"
                }
            ]
        }
    ]
}
Synchronizes mec host info from edge

Synchronizes mec host info from edge.

Resource URI: /tenants/{tenant_id}/mepms/{mepm_ip}/apprule/sync
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

tenant_id

tenant identifier

path

yes

Valid UUID

64

mepm_ip

mepm_ip

path

yes

Valid IP Address

15

Example response body:

200 OK
{
    "appdRuleUpdatedRecs": [
        {
            "appdRuleId": "e921ce54-82c8-4532-b5c6-8516cf75f7a771ea862b-5806-4196-bce3-434bf9c95b18",
            "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a7",
            "appInstanceId": "71ea862b-5806-4196-bce3-434bf9c95b18",
            "appName": "abcd",
            "appSupportMp1": true,
            "appTrafficRule": [
                {
                    "trafficRuleId": "TrafficRule1",
                    "filterType": "FLOW",
                    "priority": 1,
                    "action": "DROP",
                    "trafficFilter": [
                        {
                            "trafficFilterId": "7e302be6-253b-4d09-8d1d-ef6630db7b88",
                            "srcAddress": [
                                "192.168.1.1/28",
                                "192.168.1.2/28"
                            ],
                            "srcPort": null,
                            "dstAddress": [
                                "192.168.1.1/28"
                            ],
                            "dstPort": [
                                "6666666666"
                            ],
                            "protocol": [
                                "TCP"
                            ],
                            "qCI": 1,
                            "dSCP": 0,
                            "tC": 1,
                            "tag": [
                                "1"
                            ],
                            "srcTunnelAddress": [
                                "1.1.1.1/24"
                            ],
                            "dstTunnelAddress": null,
                            "srcTunnelPort": [
                                "65536"
                            ],
                            "dstTunnelPort": [
                                "65537"
                            ]
                        }
                    ],
                    "dstInterface": [
                        {
                            "dstInterfaceId": "cf053d4c-250b-450f-a657-a30328a3b27a",
                            "interfaceType": "",
                            "srcMacAddress": "",
                            "dstMacAddress": "",
                            "dstIpAddress": "",
                            "TunnelInfo": {
                                "tunnelInfoId": "be36d5e2-41db-4270-b6cf-ba9e7b7a89aa",
                                "tunnelType": "",
                                "tunnelDstAddress": "",
                                "tunnelSrcAddress": "",
                                "tunnelSpecificData": ""
                            }
                        }
                    ]
                }
            ],
            "appDnsRule": [
                {
                    "dnsRuleId": "dnsRule4",
                    "domainName": "www.example.com",
                    "ipAddressType": "IP_V4",
                    "ipAddress": "192.0.2.0",
                    "ttl": 30
                }
            ],
            "Origin": "MEPM"
        }
    ]
}
Get MEPM Record

Retrieves all MEPM records

Resource URI: /inventory/v1/mepms
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

200 OK
[
    {
      "mepmIp": "string",
      "mepmName": "string",
      "mepmPort": "string",
      "userName": "string"
    }
]
Add MEPM Record

Adds new MEPM record

Resource URI: /inventory/v1/mepms
Method: POST

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mepmIp

mepm Ip

body

yes

Valid IP address

15

mepmName

mepm Name

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

mepmPort

mepm Port

body

yes

Vaild Port

5

userName

user Name

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

Example request body:

{
    "mepmIp": "string",
    "mepmName": "string",
    "mepmPort": "string",
    "userName": "string"
}

Example response:

200 OK
[
  {
    "Saved"
  }
]
Delete All MEPM Records

Deletes all mepm records

Resource URI: /inventory/v1/mepms
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Get MEPM Record

Retrieves mepm records

Resource URI: /inventory/v1/mepms/{mepm_ip}
Method: GET

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mepm_ip

mepm IP

path

yes

Valid IP address

15

200 OK
{
    "mepmIp": "string",
    "mepmName": "string",
    "mepmPort": "string",
    "userName": "string"
}
Update MEPM Record

Updates existing mepm record

Resource URI: /inventory/v1/mepms/{mepm_ip}
Method: PUT

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mepm_ip

mepm IP

path

yes

Valid IP address

15

mepmIp

mepm Ip

body

yes

Vaild IP address

15

mepmName

mepm Name

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

mepmPort

mepm Port

body

yes

Vaild Port

5

userName

user Name

body

yes

AlphaNumeric, special characters allowed are hypen and underscore

128

Example request body:

{
    "mepmIp": "string",
    "mepmName": "string",
    "mepmPort": "string",
    "userName": "string"
}

Example response:

200 OK
[
  {
    "Updated"
  }
]
Delete MEPM Record

Deletes mepm record

Resource URI: /inventory/v1/mepms/{mepm_ip}
Method: DELETE

Name

Definition

Type

Required

Allowed

Max Length

access_token

access token

header

yes

Jwt token

mepm_ip

mepm IP

path

yes

Valid IP Address

15

Example response:

200 OK
[
  {
    "Deleted"
  }
]
Inventory Open Api Swagger

MECM App Rule Manager Interfaces

The document is for the MECM App Rule Manager Interfaces project .

Queries liveness & readiness

Retrieves data for liveness & readiness

Resource URI: /apprulemgr/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:  /apprulemgr/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,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "qCI": int,
          "dSCP": int,
          "tC": int
        }
      ],
      "action": "string",
      "state": "string"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": int,
      "state": "string"
    }
  ],
  "appSupportMp1": bool,
  "appName": "string"

Example response:

200 OK
{
  "taskId":"string",
  "appInstanceId":"string",
  "configResult":"string",
  "configPhase":"string",
  "detailed":"string"
}
Update AppRule Config

Updates the existing app rule

Resource URI: /apprulemgr/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,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "qCI": int,
          "dSCP": int,
          "tC": int
        }
      ],
      "action": "string",
      "state": "string"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": int,
      "state": "string"
    }
  ],
  "appSupportMp1": bool,
  "appName": "string"

Example response:

200 OK
{
  "taskId":"string",
  "appInstanceId":"string",
  "configResult":"string",
  "configPhase":"string",
  "detailed":"string"
}
Get AppRule Config

Queries the existing app rule

Resource URI: /apprulemgr/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration
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 

 "appTrafficRule": [
    {
      "trafficRuleId": "string",
      "filterType": "string",
      "priority": int,
      "trafficFilter": [
        {
          "srcAddress": [
            "string"
          ],
          "dstAddress": [
            "string"
          ],
          "srcPort": [
            "string"
          ],
          "dstPort": [
            "string"
          ],
          "protocol": [
            "string"
          ],
          "qCI": int,
          "dSCP": int,
          "tC": int
        }
      ],
      "action": "string",
      "state": "string"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "string",
      "domainName": "string",
      "ipAddressType": "string",
      "ipAddress": "string",
      "ttl": int,
      "state": "string"
    }
  ],
  "appSupportMp1": bool,
  "appName": "string"

Delete AppRule Config

Delete the existing app rule

Resource URI: /apprulemgr/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 Response body:

200 OK 
{
 "response" :
  {
   "apprule_task_id" : "string"
  }
}

K8s plugin Interfaces

The document is for the K8s plugin project.

InstantiateRequest

Application instantiated

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

appInstanceId

string

required

Valid UUID

hostIp

string

required

Valid IP

package

bytes

required

Valid UUID without hypen

parameters

key value pair

No

Instantiation parameters, key-value pairs

InstantiateResponse

Represents the InstantiateRequest status.

Field

Type

Label

Description

status

string

required

Status of the instantiate request

TerminateRequest

Terminates application instance id

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

appInstanceId

string

required

Valid UUID

hostIp

string

required

Valid IP

TerminateResponse

Represents the TerminateRequest status.

Field

Type

Label

Description

status

string

required

Status of the terminate request

QueryRequest

Get statistics information

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

appInstanceId

string

required

Valid UUID

hostIp

string

required

Valid IP

QueryResponse

Represents the QueryRequest status.

Field

Type

Label

Description

status

string

required

Status of the Query request

UploadCfgRequest

Upload Config File

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

hostIp

string

required

Valid IP

configFile

formData

required

Provide valid config file

UploadCfgResponse

Represents the UploadCfgRequest status.

Field

Type

Label

Description

status

string

required

Status of the UploadCfgRequest

RemoveCfgRequest

Removes the config file

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

hostIp

string

required

Valid IP

RemoveCfgResponse

Field

Type

Label

Description

status

string

required

Status of the RemoveCfgRequest

CreateVmImageRequest

Create VM image request

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

appInstanceId

string

required

Valid UUID

hostIp

string

required

Valid IP

vmId

string

required

Valid UUID

CreateVmImageResponse

Field

Type

Label

Description

response

string

required

response of the CreateVmImageResponse

QueryVmImageRequest

Query VM image request

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

appInstanceId

string

required

Valid UUID

hostIp

string

required

Valid IP

imageId

string

required

Valid UUID

QueryVmImageResponse

Field

Type

Label

Description

response

string

required

response of the QueryVmImageResponse

DeleteVmImageRequest

Delete VM image request

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

appInstanceId

string

required

Valid UUID

hostIp

string

required

Valid IP

imageId

string

required

Valid UUID

DeleteVmImageResponse

Field

Type

Label

Description

response

string

required

response of the DeleteVmImageResponse

DownloadVmImageRequest

Download VM image request

Field

Type

Label

Description

accessToken

string

required

Provide the required access token

appInstanceId

string

required

Valid UUID

hostIp

string

required

Valid IP

imageId

string

required

Valid UUID

chunkNum

int32

required

Valid integer

DownloadVmImageResponse

Field

Type

Label

Description

content

byte

required

response of the DownloadVmImageResponse

AppLCM Service

Service for handling requests.

Method Name

Request Type

Response Type

Description

instantiate

InstantiateRequest

InstantiateResponse

Instantiate application

terminate

TerminateRequest

TerminateResponse

Terminate application

query

QueryRequest

QueryResponse

Query application

uploadConfig

UploadCfgRequest

UploadCfgResponse

Upload file configuration

removeConfig

RemoveCfgRequest

RemoveCfgResponse

Remove file configuration

Database Design

Apm Database Design

The APM database uses an open source PostgreSQL database, and the recommended version is 12.3.

  • apppackage: Store application package information, such as app_pkg_id, app_pkg_path and tenant_id.

    create table apppackage (
        id varchar(255) not null,
        app_pkg_id  varchar(255) not null,
        app_pkg_name varchar(255) not null,
        app_pkg_version varchar(255) not null,
        app_pkg_path varchar(255) not null,
        app_provider varchar(200),
        app_pkg_desc varchar(500),
        app_pkg_affinity varchar(200),
        app_icon_url varchar(255),
        app_id varchar(255) not null,
        tenant_id varchar(255) not null,
        local_file_path varchar(2000),
        created_time timestamp default current_timestamp,
        modified_time timestamp default current_timestamp,
        primary key (id)
    );
  • apppackagehost: Store application package distribution information, such as app_pkg_id, distribution_status , tenant_id.

    create table apppackagehost (
        id INT GENERATED BY DEFAULT AS IDENTITY,
        pkg_host_key varchar(255) not null,
        host_ip varchar(255) not null,
        app_pkg_id varchar(255) not null,
        distribution_status varchar(200) not null,
        tenant_id varchar(200) not null,
        error varchar(2000),
        primary key (id)
    );
  • apmtenant: Store tenant information, such as tenant.

    create table apmtenant (
        tenant  varchar(255) not null,
        primary key (tenant)
    );

Lcm Controller Database Design

The LcmController database uses an open source PostgreSQL database, and the recommended version is 12.2. Two database tables currently designed and applied:

  • app_info_record: Store app information, such as appInsId, hostIp, deployType, appPackageId, appName, Origin, SyncStatus and tenantId.

CREATE TABLE app_info_record (
    	APPINSID               VARCHAR(200)       NOT NULL,
    	MECHOST                VARCHAR(200)       NULL,
    	DEPLOYTYPE             VARCHAR(200)       NULL,
    	TENANTID               VARCHAR(200)       NULL,
    	CONSTRAINT app_info_record_pkey PRIMARY KEY (APPINSID),
        APPPACKAGEID           VARCHAR(200)      NULL,
        APPNAME                VARCHAR(200)      NULL,
        ORIGIN                 VARCHAR(200)      NULL,
        SYNCSTATUS             VARCHAR(200)      NULL
    );
  • tenant_info_record: Store tenant information, such as tenantId.

CREATE TABLE tenant_info_record (
    	TENANTID               VARCHAR(200)       NOT NULL,
    	CONSTRAINT tenant_info_record_pkey PRIMARY KEY (TENANTID)
    );
  • mec_host: Store mec host information, such as mecHostId, mecHostIp, mecHostName, zipCode, city, address, affinity UserName, configUploadStatus, coordinates, vim, origin and syncStatus

CREATE TABLE mec_host (
	MECHOSTID               VARCHAR(200)       NOT NULL,
	MECHOSTIP               VARCHAR(200)       NULL,
	MECHOSTNAME             VARCHAR(200)       NULL,
	ZIPCODE                 VARCHAR(200)       NULL,
	CITY                    VARCHAR(200)       NULL,
	ADDRESS                 VARCHAR(200)       NULL,
	AFFINITY                VARCHAR(200)       NULL,
	USERNAME                VARCHAR(200)       NULL,
	CONFIGUPLOADSTATUS      VARCHAR(200)       NULL,
	COORDINATES             VARCHAR(200)       NULL,
	VIM                     VARCHAR(200)       NULL,
	ORIGIN                  VARCHAR(200)       NULL,
	SYNCSTATUS              VARCHAR(200)       NULL,
    CONSTRAINT mec_host_pkey PRIMARY KEY (MECHOSTID)	
);
  • mec_hw_capability: Store mec hardware capability information, such as MecCapabilityId, hwType, hwVendor and hwModel

CREATE TABLE mec_hw_capability (
	MECCAPABILITYID VARCHAR(200)       NOT NULL,
	HWTYPE          VARCHAR(200)       NULL,
	HWVENDOR        VARCHAR(200)       NULL,
	HWMODEL         VARCHAR(200)       NULL
);
  • app_instance_stale_rec: Store app instance stale record information, such as appInstanceId and tenantId

CREATE TABLE app_instance_stale_rec (
	APPINSTANCEID VARCHAR(200)       NOT NULL,
	TENANTID      VARCHAR(200)       NULL
);
  • mec_host_stale_rec: Store mec host stale record information, such as mecHostId

CREATE TABLE mec_host_stale_rec (
	MECHOSTID VARCHAR(200)       NOT NULL,
);
  • app_package_record: Store app package record information, such as appPkgId, appPkgName, appPkgVersion, appPkgPath, appPkgProvider, appPkgDesc, appPkgAffinity, appIconUrl, appId, tenantId, packageId, origin and syncStatus

CREATE TABLE app_package_record (
	APPPKGID       VARCHAR(200)       NOT NULL,
	APPPKGNAME     VARCHAR(200)       NULL,
	APPPKGVERSION  VARCHAR(200)       NULL,
	APPPKGPATH     VARCHAR(200)       NULL,
	APPPROVIDER    VARCHAR(200)       NULL,
	APPPKGDESC     VARCHAR(200)       NULL,
	APPPKGAFFINITY VARCHAR(200)       NULL,
	APPICONURL     VARCHAR(200)       NULL,
	APPID          VARCHAR(200)       NULL,
	TENANTID       VARCHAR(200)       NULL,
	PACKAGEID      VARCHAR(200)       NULL,
	ORIGIN         VARCHAR(200)       NULL,
	SYNCSTATUS     VARCHAR(200)       NULL
	);
  • app_package_host_record: Store app package host record information, such as pkgHostKey, hostIp, appPkgId, status, tenantId, error, origin and syncStatus

CREATE TABLE app_package_host_record  {
	PKGHOSTKEY VARCHAR(200)       NOT NULL,
	HOSTIP     VARCHAR(200)       NULL,
	APPPKGID   VARCHAR(200)       NULL,
	STATUS     VARCHAR(200)       NULL,
	TENANTID   VARCHAR(200)       NULL,
	ERROR      VARCHAR(200)       NULL,
	ORIGIN     VARCHAR(200)       NULL,
	SYNCSTATUS VARCHAR(200)       NULL
    );
  • app_package_stale_rec: Store app package stale record information, such as appPkgId and tenantId

CREATE TABLE app_package_stale_rec (
	APPKGID      VARCHAR(200)       NOT NULL,
	TENANTID     VARCHAR(200)       NULL
   );
  • app_package_host_stale_rec: Store app package stale record information, such as pacakgeId, tenantId and hostIp

CREATE TABLE app_package_host_stale_rec (
	PACKAGEID      VARCHAR(200)       NOT NULL,
	TENANTID       VARCHAR(200)       NULL,
	HOSTIP         VARCHAR(200)       NULL
    );
  • edge_authenticate_rec: Store edge authenticate record information, such as authenticateId, name and key

CREATE TABLE edge_authenticate_rec (
	AUTHENTICATEID  VARCHAR(200)       NOT NULL,
	NAME            VARCHAR(200)       NULL,
	KEY             VARCHAR(200)       NULL
   );

K8s Plugin Database Design

The K8sPlugin database uses an open source PostegreSQL database, and the recommended version is 12.2. One database table currently designed and applied:

  • app_instance_info_record: MECM LcmController Database Design.mdStore app information, such as appInsId, hostIp and workloadId.

CREATE TABLE app_instance_info_record (
    	APPINSID               VARCHAR(200)       NOT NULL,
    	HOSTIP                 VARCHAR(200)       NULL,
    	WORKLOADID             VARCHAR(200)       NULL,
    	CONSTRAINT app_info_record_pkey PRIMARY KEY (APPINSID)
    );

Appo Database Design

The APPO database uses an open source PostgreSQL database, and the recommended version is 12.3.

  • appinstanceinfo: Store app instance information, such as app_instance_id, applcm_host and tenant.

    create table appinstanceinfo (
       app_instance_id  varchar(64) not null,
        app_package_id varchar(64) not null,
        app_id varchar(64) not null,
        tenant varchar(64) not null,
        app_name varchar(128) not null,
        app_descriptor varchar(256) not null,
        mec_host varchar(15) not null,
        applcm_host varchar(15),
        operational_status varchar(128) not null,
        operation_info varchar(256),
        create_time timestamp default current_timestamp,
        update_time timestamp default current_timestamp,
        primary key (app_instance_id)
    );
  • appotenant: Store tenant information, such as tenant.

    create table appotenant (
        tenant  varchar(255) not null,
        primary key (tenant)
    );

Inventory Database Design

The Inventory database uses an open source PostgreSQL database, and the recommended version is 12.3.

  • applcminventory: Store applcm information, such as applcm_id, tenant_id, applcm_ip and applcm_port.

    create table applcminventory (
        applcm_id varchar(255) not null,
        tenant_id  varchar(255) not null,
        applcm_ip varchar(255) not null,
        applcm_port varchar(255) not null,
        user_name varchar(255),
        created_time varchar(200),
        modified_time varchar(200),
        primary key (applcm_id)
    );
  • appstoreinventory: Store app store distribution information, such as appstore_id, appstore_ip , appstore_port.

    create table appstoreinventory (
        appstore_id varchar(255) not null,
        appstore_ip varchar(255) not null,
        appstore_port varchar(255) not null,
        uri varchar(255) not null,
        tenant_id varchar(200) not null,
        user_name varchar(255),
        appstore_name varchar(255),
        producer varchar(255),
        created_time varchar(200),
        modified_time varchar(200),
        primary key (appstore_id)
    );
  • mechostinventory: Store MEC host information, such as mechost_id, mechost_ip, applcm_ip, zip_code, city.

    create table mechostinventory (
        mechost_id varchar(255) not null,
        tenant_id varchar(255) not null,
        mechost_ip varchar(255) not null,
        applcm_ip varchar(255) not null,
        mechost_name varchar(255) not null,
        zip_code varchar(200),
        city varchar(255) not null,
        address varchar(255) not null,
        affinity varchar(255),
        user_name varchar(255),
        edge_name varchar(255),
        edgerepo_ip varchar(255),
        edgerepo_port varchar(255),
        edgerepo_username varchar(255),
        config_upload_status varchar(255),
        -- config_file_path varchar(2000),
        created_time varchar(200),
        modified_time varchar(200),
        primary key (mechost_id)
    );
  • tenantinventory: Store tenant information, such as tenant_id.

    create table tenantinventory (
        tenant_id  varchar(255) not null,
        applcm_count int,
        appstore_count int,
        mechost_count int,
        primary key (tenant_id)
    );

User Guidance

MECM Product Document

MECM Management Face
The MECM management side mainly provides edge nodes, APPLCM registration, and application distribution deployment capabilities.
The V1.1 release features are as follows:

1.Add visitors, tenant, and administrator roles, the administrator can register and delete, the tenant can apply sync, distribute, deploy operations, visitors only browse rights 2. Add application store registration function, support administrator add register application store 3. Add application sync feature, support application from app store to APM sync

User Guide

! ! ! Note: Due to client and service-side protocol issues, user access may present a certificate exception, e.g. if there is a data acquisition exception, it is recommended that the browser visit https://mecm.edgegallery.org:30202 and then proceed to the MECM interface refresh to resolve the problem in the next version.

1.Overview: Map Area & Details Demo (Node and KPIs, MEP Capacity and Hardware Capacity), MEP Details
1.1 Map & Details: Click nodes on the map, display nodes and KPIs, MEP capabilities, and details of hardware

1.2 MEP Details: Hit Management button, Jump to MEP Details interface
2.Application management: application package management, application instance management
2.1 Application package management

Integrated application synchronization, distribution and deployment function.

2.2 Application Instance Management

Integrated application instance list, here you can view the deployment status and details of the current instance, and perform rule configuration, as well as the failure reason view and other functions Rule configuration->DNS rule configuration Rule configuration->Distribution rule configuration Rule configuration->Diversion rule configuration->Filter rule configuration Rule configuration-Diversion rule configuration-interface information configuration

3.Edge nodes: edge node list, edge node registration, upload k8s config documentation

4.System Management: APPLCM Registration, APP Rule MGR Registration, Application Warehouse Registration
4.1 MEPM registration
4.4 Application Warehouse Registration

The new features of V1.5 version are as follows:

OpenStackNode resource management function,Registered edge nodes can be checked through the resource management interface(OpenStack)Perform basic management operations

MECM User Interface Document

  1. Register new account for the EdgeGallery in case of first time user, or else you can login with existing account, below is the example.

.

  1. Upon successful login the home page is visible with map and nodes in the region.

.

  1. For new applcm registration, click on the tab ie. Systems -> External System Manager -> Applcm. Then select New Registration. Enter the Applcm, IP, Port number.

.

  1. Need to add Edge node deatils by navigating to Systems -> External System Manager -> EdgeNode. Then click on New Registration.

.

  1. Config file of the edge node should be uploaded, by selecting the upload config file under Operation.

.

  1. Now, need to login to the appstore portal and upload the package

.

  1. Nextly, Redirecting to the edge gallery mecm from appstore navigate to AppManagement -> Package Management

.

  1. Choose the appropriate package and select the Distribute and select required Edge Node.

.

  1. Once Distribution is successfull, then the deploy the application.

.

How to Contribute

Contribution to APM

This section provides details on how to participate/contribute to the APM(Application package manager) project.

Build local development environment

This section will guide developers to build APM module locally and help developers to quickly understand and develop code

The local startup of APM depends on:

- DataBase

In order to build a local environment, the final startup sequence is Mecm-Prerequisite-> DataBase -> APM

DataBase
  1. Download and install postgres 12.3 database

  2. Set login name and password, such as apm

  3. Create a database named apmdb

Application package manager
  1. Download APM Code

  2. Configure the runtime environment variables (using IDEA as an example)

  1. Update key-store and trust-store path in application.yaml

  1. Run ApmApplication to start APM

Contribution to Lcm Controller and K8s Plugin (Applcm)

This section provides details on how to participate/contribute to the LCM controller project.

Build local development environment

This section will guide developers to build LCM controller module locally and help developers to quickly understand and develop code

The local startup of LCM controller depends on:

- DataBase

In order to build a local environment, the final startup sequence is DataBase -> LCMController

DataBase
  1. Download and install postgres 12.3 database

  2. Set login name and password, such as lcmcontroller

  3. Create a database named lcmcontrollerdb

LCM contorller
  1. Download LCM Controller Code

  2. Configure the runtime environment variables (using GO Land as an example)

  1. Update certificates path in app.conf

  1. Run main to start LCM controller

K8s plugin
  1. Download K8s plugin code

  2. Configure the runtime environment variables (using GO Land as an example)

  1. Update certificates path in config.yaml

  1. Run main to start K8s plugin.

How to generate swagger documentation for Lcm Controller

Download LCM Controller Code

Prerequisites

Step 1 - Install go lang

cd ~

curl -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

tar xvf go1.10.3.linux-amd64.tar.gz

sudo chown -R root:root ./go

sudo mv go /usr/local

sudo nano ~/.profile

export GOPATH=$HOME/mecm-applcm

export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

export GOROOT=$HOME/go

export GOPATH=$HOME/mecm-applcm

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

source ~/.profile

Step 2 - Install bee

You will need to install or upgrade Beego and the Bee dev tool:

go get -u github.com/beego/beego/v2

go get -u github.com/beego/bee/v2

bee 

Change runmode configuration to dev from prod in app.conf file

Now coming to the auto-generation of documentation, end the server’s session and use this command:

bee run -gendoc=true -downdoc=true

Now, go to the browser and type: 

https://localhost:8094/swagger/

Contribution to Appo

This section provides details on how to participate/contribute to the application orchestrator project.

Build local development environment

This section will guide developers to build Appo module locally and help developers to quickly understand and develop code

The local startup of Appo depends on:

- DataBase

In order to build a local environment, the final startup sequence is Mecm-Prerequisite -> DataBase -> Appo

DataBase
  1. Download and install postgres 12.3 database

  2. Set login name and password, such as appo

  3. Create a database named appodb

Application orchestrator
  1. Download Appo(application orchestrator) code

  2. Configure the runtime environment variables (using IDEA as an example)

  1. Update key-store and trust-store path in application.yaml

  1. Run AppOrchestratorApplication to start application orchestrator

Contribution to Inventory

This section provides details on how to participate/contribute to the inventory project.

Build local development environment

This section will guide developers to build Inventory module locally and help developers to quickly understand and develop code

The local startup of Inventory depends on:

- DataBase

In order to build a local environment, the final startup sequence is Mecm-Prerequisite -> DataBase -> Inventory

DataBase
  1. Download and install postgres 12.3 database

  2. Set login name and password, such as inventory

  3. Create a database named inventorydb

Inventory
  1. Download Inventory Code

  2. Configure the runtime environment variables (using IDEA as an example)

  1. Update key-store and trust-store path in application.yaml

  1. Run InventoryApplication to start inventory

Contribution to App Rule Manager

This section provides details on how to participate/contribute to the App Rule Manager project.

Build local development environment

This section will guide developers to build App Rule Manager module locally and help developers to quickly understand and develop code

  1. Download App Rule Manager Code

  2. Update certificates path in app.conf

  1. Run main to start App Rule Manager

Port Matrix

MECM port matrix

module

port number

External port number

Role Description

APPO

8091

30201

Service ports for externally providing application life cycle management

APM

8092

30202

Service port for externally providing application package management

Inventory

8093

30203

Service ports for inventory management

North

8103

30303

The service port that provides the northbound interface to the outside world

applcm controller

8094

30204

Service port for externally providing application life cycle management in applcm

Resource controller

8098

31952

Provides external service ports for OpenStack resource management

aplcm k8splugin

8095

30205

The k8s plug-in in the applcm provides the service port of k8s externally

FE

8443

30093

Opening port of front desk module

AppRuleManager

8096

30206

Provides an external service port for application rule management

MEP

Overview

Overall Introduction to MEP Projects

With the Internet of Things, artificial intelligence, cloud computing, mobile Internet, big data, and big video, as well as the maturity of network resources and computing power of the ICT-open ecosystem, the evolution of resource concentration and marginalization is gradual.

MEC (Multi-access Edge Computing) is a typical resource marginalisation mode, providing IT service environments and cloud computing capabilities on the edge of the mobile network to complete business processing of mobile network edges in real time. The MEC will continue to develop rapidly with the convergence of CT and IT depth, the rise of the Internet of Things, the development of artificial intelligence technology, and the safety and real-time nature of the enterprise’s production data.

Under the MEC scenario, big applications will operate on the edge of the network for business processing, and the application can use the network’s open ability, and it can also provide and consume each other.

The EdgeGallery MEP project aims to create an open source and open reference MEP platform on the edge side, and MEP projects currently include both MEP and MEP-Agent components.

MEC platform is a network element defined by the ETSI MEC standard. The deployment location is on the edge side, mainly covering the following functions:

  • Provides service governance capabilities for ME APP (registration, discovery, subscription, notification).

  • Receives a flow rule (Traffice Rules) configuration issued by MEPM.

  • Receives DNS Rules (DNS Rules) configurations issued by MEPM.

  • Provides MEC public services such as DNS for the MEC APP.

The MEP component runs with the following microservices:

  • Mepauth: Provides the authentication authentication for the application while taking part in the configuration management capability.

  • Mep: Provides functions related to service governance, app subscription notification management.

  • Kong: Using open-source gateway software kong, it is responsible for the relevant route forwarding and plugin configuration.

  • Postgres: Postgres provides data storage capabilities for kong and mepauth.

MEP-Agent Assembly: The application of an integrated adapter, which the application developer can use as part of the application. The invention realizes the related basic functions of the instance configuration information leading-in, service registration and so on, which can simplify the integration of the application and the platform.

MEP Overall Framework

The main MEP related interfaces involved in the figure are:

  • Mp1: Between APP and MEP, it provides APP service registration discovery, APP status notification subscription and other capabilities.

  • Mp2: Between MEP and UPF, it provides data plane configuration capabilities.

  • Mm3: Provides package management and APP life cycle management capabilities between MEO and MEPM.

  • Mm5: Between MEPM and MEP, MEP platform can perform configuration management, configure APP rules and other capabilities.

For the application APP, Mp1 is the most important interface between APP and MEP, and APP can register its own services to MEP via Mp1, while the MEP can be found to be called MEP services by service.

Feature Design

MEP-Auth Module Related Features

MEP-auth provides APP authentication

The MEP-auth provides an authentication function for APP, provides a token application interface, and the APP may provide the correct signature to MEP-auth based on the AK/SK signature algorithm, obtain the token, and access the MEP-server related interface via the token.

The application of the APP through the MEP-auth request token is shown in the following figure:

  1. Application uses Service Authentication Interface for token.

  2. MEP-auth signs and issues token for ak/sk.

  3. MEP-auth returns token.

  4. The application carrying token is used for calling the service interface. You can call Application Service Management Related Interface, Available Event Subscription Related Interface, Termination Event Subscription Related Interface.

  5. MEP-based-based jwt plugin checks token and route related requests to MEP-server.

For the token request interface, see the section “MEP features”.

MEP-auth provides configuration capabilities for API gateways

The MEP-auth module initializes the API gateway (kong):

  1. Add a consumer in kong.

  2. Configuring service and route for MEP-auth itself.

  3. Configuring servcie and route for MEP-server.

  4. Configure and enable the kong plugin for MEP-auth and MEP-server.

The plugins that MEP-auth opened in the initialization kong process include:

  • JWT plugin Provides token verification capability for the corresponding interface.

  • Appid-header plugin Insert X-AppinstanceID header in interface request for MEP-server check. Check request token’s client ip is consistent with client ip of calling interface.

  • Rate Limiting Plugin Provides flow control capability for MEP-auth and MEP-server interfaces.

  • IP Restriction Plugin Provides client IP white list function support for MEP-auth.

  • response-transformer plugin Provides the server header capability in clear response.

  • Pre-function plugin providing modified interface request x_forwarded_for capability.

MEP Sever Feature

MEP Service Governance Functions

Definition

The service management function refers to the ability of the MEP to register, update, delete, and query services.

Design principles

MEP provides service registration, updates, deletion, query related API interfaces. The application is able to register, update, delete, query through the LDVS-MEP service.

service registration, deleting

Application service status subscription/notification function

Definition

The application service status subscription/notification function is the ability to subscribe, update, delete, notify the LDVS for service status.

Design principles

MEP manages the status of application services, and applications register for services through MEP. When service consumers expect to use the services of the service provider, they need to subscribe to the service status of the service provider through MEP. Through the subscription interface, MEP can identify the service that the service consumer pays attention to, and when the service status changes, it can notify the service consumer of the related service status.

Applications can subscribe, update, delete, and query service status through LDVS-MEP.

MEP Service hearbeat

Each MEC service instance that has previously registered in MEC platform and is configured for heartbeat shall send heartbeat message to the MEC platform periodically in order to show that the MEC service instance is still operational. When the MEC platform has not received the heartbeat for a configurable amount of time, the MEC platform considers that the service instance can no longer be discovered and The service state will change to SUSPEND if it was ACTIVE before.

How to configure hearbeat for a service

Service register message will carry the livenessinterval field in it. It is an option field. If it is configured that indicate this service want to send heartbeat message. MEP platform support livenessinterval value is 60s. It will overwrite any value set by the service. Note: For details of service register message please check the interface doc.

How to send heartbeat message

Services which already has set livenessinterval in its register message should send hearbeat message to MEP. When service registers, its response message will carry the URL (liveness), using which service should send the heartbeat to MEP. Note: For details of hearbeat message please check the interface document.

EG-LDVS application integrated plugin mep-agent

Definition

LDVS MEP-Agent, as a rapid integration application adapter, realizes the functions of service configuration import and service registration.

Design principles

LDVS MEP manages the service of the application. The application needs to register its service in the MEP. The MEP-Agent acts as an adapter to import service information (including the application instance ID) to the application, and at the same time provides a configuration method to register the application’s service in the MEP.

MEP-Agent Get token API

MEP-Agent will run as sidecar along with application. If Apllication need to obtain token from mep for communication with services, it can query mep-agent api.

GET /mep-agent/v1/token

{
  "header": [
    {
      "key": "Content-Type",
      "value": "application/json"
    }
  ]
}

Return example

HTTP/1.1 200 OK
{
	"access_token":"xxxx",
	"token_type":"Bearer",
	"expires_in":"3600"
}

Capabilities(Service) query support

Definition

Once capabilities(services) registered to the mep, other applications can consume it. MEP support the listing of these capabilities(services) over Mm5 interface.

Design principles

The capability query interface is exposed over Mm5 interface to MECM module and it can be queried together or independently. Each capability consists of a list of the present consumers to it.

Query flow

DNS server features

The MEP platform provides the domain name resolution services to the applications deployed in the EdgeGallery MEC, which can be utilized by the device applications in UE. MEC platform receives the DNS configurations from the MEC management, which includes the FQDN(Fully Qualified Domain Name), IP address and related entries. MEC applications can later query or modify the state of these configurations.

The three major operations for DNS are:

  1. DNS management operations.

  2. Query configuration and Activation/Deactivation by the MEC applications.

  3. DNS query by the device applications.

We will see each of these features in the below section.

DNS management operations

DNS configurations are created either by MECM modules during start-up or from the OSS directly. DNS management supports both create, update, query and delete operations.

Rule creation at start-up

DNS configurations are embedded in the application descriptor and MEO(Multi-access Edge Orchestrator) will get these information during the start-up of the application. Once MEO receives the application descriptor, it searches for the DNS related configurations and pass this information to the MEPM(MEC Platform Manager) module in the edge along with the start-up request on Mm3 interface.

Upon receiving the DNS configurations from MEO, MEPM send this request to the MEP server on Mm5 interface after deploying the MEC application.

Rule creation from OSS

DNS configurations can be updated from OSS directly over Mm2 interface through MEPM.

DNS configurations from MEC applications

MEC applications can query the DNS configurations created for it and can activate or deactivate the same. Activation or deactivation can be performed by modifying the state of the DNS configuration.

DNS query

Device application in the UE can query the DNS server for the domain name resolution. By default the DNS server will listen on the 53 port.

How to configure the DNS server?

The dns server in MEP runs inside a container and can be configured using few command line parameters.

Command

dnsserver [OPTION]...

Detailed list of the optional parameters are stated below.

Parameter

Type

Range/Length

Default

Description

-db

string

1~256

dbEgDns

Backend store db name

-port

number

1~65535

53

DNS server listening port

-managementPort

number

1~65535

8080

Management interface listening port

-connectionTimeout

number

2~50

2

Connection timeout

-ipAdd

string

Ipv4/Ipv6

0.0.0.0

DNS listening ip address

-managementIpAdd

string

Ipv4/Ipv6

0.0.0.0

Management interface listening ip address

-forwarder

string

Ipv4/Ipv6

DNS proxy server IP

-loadBalance

bool

true/false

false

For domain names with multiple ip address, enabling this option will perform loadbalancing by shuffling the response IP list

Example

$ dnsserver -port=8053 -managementPort=8080 -loadBalance -forwarder <some-dns-server>

HealthCheck

Source of demand

*EdgeGallery version planning

Requirement Description

*Support mec-m check its edge healthy condition

Usecase

  1. MECM calls the center-side service HealthCheck-M to start the overall health check service

  2. HealthCheck-M on the center side checks the edge nodes under its jurisdiction based on the mec list in the body when the MECM is called

  3. Each edge node HealthCheck receives the check information from HealthCheck-M on the center side, and first self-checks the health of the internal mep/lcm. When the mep/lcm on the edge side is healthy, the edge node considers the edge node to be healthy

  4. After the self-check is completed, the mutual check mechanism is started between the edge nodes, and the visited nodes mep/lcm are all healthy, the node is considered healthy

  5. Each edge node feeds back the results of the mutual check after communication to HealthCheck-M, and HealthCheck-M starts the voting mechanism

  6. The HealthCheck-M vote on the center side is that when a node receives more than half of the total number of mec lists, the center side considers this node to be healthy.

  7. HealthCheck-M feeds back the voting results to MECM or the caller

Involving modules&&EPIC&&Story

*MECM

<200b> *The caller starts HealthCheck-M, and HealthCheck-M accesses MECM-inventory to obtain mec list

*MEP

<200b> *The edge side health checks the MEP condition of the node, and the node is considered healthy only when both MEP and LCM are healthy

*LCM

<200b> *The edge side health checks the MEP condition of the node, and the node is considered healthy only when both MEP and LCM are healthy

Business Process

Interface definition
Method URL Body
center GET /health-check/v1/center/action/start
center GET /health-check/v1/center/health {["checked ip" : string, "condition" : bool]}
edge POST /health-check/v1/edge/action/start {"checker ip" : string, "edgeCheckInfo" : ["checked ip" : string, "condition" : bool]}
edge GET /health-check/v1/edge/health

Interface Design

Introduction to MEP interface

MEP majorly consists of two main functional modules, MEP-server and MEP-auth. The MEP server interface is divided into two categories, one is the Mp1 interface that follows the ETSI MEC 011 v2.1.1 standard, which mainly provides functions such as service registration discovery, App status notification subscription, and Dns rule acquisition; the other is the Mm5 interface, mainly provides configuration management functions for MECM/MEPM. MEP auth is currently mainly used as an authentication module to provide App with the function of token application and issuance. URL is the service’s own URL, and PORT is the service’s own PORT. If it passes through KONG, PORT becomes KONG’s PORT, and the URL needs to add the corresponding route. Mepauth directly adds {KONG_MEPAUTH_ROUTE} (the current value is /mepauth), and mepserver replaces /mep with {KONG_MEPSERVER_ROUTE} (the current value is /mepserver).

MEP-auth module interface

Service Authentication Interface

The application authenticates to LDVS through AK/SK, and returns the token after passing the authentication. Each token has a validity period (1 hour). The token distributor will withdraw the token after the validity period ends. When the HTTP request with expired token arrives, it will be returned with status code 401. At this time, the token carrier needs to re-acquire the token. When the token is still valid, the bearer of the token will return the token that is still valid when the same user obtains the token again.

URL

POST /mep/token

Request Parameters

Name

Type

Description

IN

Required

Content-Type

String

MIME type, fill “application/json”

header

Yes

Authorization

String

Certification information

header

Yes

x-sdk-date

String

Signature time (current time stamp, format: YYYYMMDDTHHMMSSZ)

header

Yes

Host

String

It is consistent with the host field used for generating the authentication information signature.

header

Yes

Body parameters

No

Example Request

POST /mep/token

{
  "header": [
    {
      "key": "Content-Type",
      "value": "application/json"
    },
    {
      "key": "Authorization",
      "value": "SDK-HMAC-SHA256 Access= QVUJMSUMgS0VZLS0tLS0=,
      SignedHeaders=content-type;host;x-sdk-date,
      Signature=142b0dc3feaeb3662b2033a8e6425596546e08a231aa39179b4060867dd15d3d"
    },
    {
      "key": "x-sdk-date",
      "value": "20060102T150405Z"
    },
    {
      "key":"Host",
      "value":"xxx"
    }
  ]
}

Return parameter

Return code: 200

OK

Name

Type

Description

Required

access_token

String

Token

Yes

token_type

String

Token Type (Bearer)

Yes

expires_in

int

Invalidate Time

Yes

Return Example

HTTP/1.1 200 OK
{
	"access_token":"xxxx",
	"token_type":"Bearer",
	"expires_in":"3600"
}

Note: When testing, ensure that the AK/SK used when starting the EG-LDVS is the same AAK/SK used for the token acquisition.For authentication based on AK/SK, EG-LDVS fails three authentication failures within 5 minutes of the same AK, and the corresponding AK will be locked for 15 minutes.

AK/SK configuration interface

URL

PUT /mep/appMng/v1/applications/{appInstanceId}/confs

Request Parameters

Name

Type

Description

IN

Required

Content-Type

String

MIME type, fill “application/json”

header

Yes

appInstanceId

String

APP Instance ID (UUID)

path

Yes

Body parameters

Name

Type

Description

Required

authInfo

Object

User information

Yes

>credentials

Object

Certificate information

Yes

>>accessKeyId

String

AK

Yes

>>secretKey

String

SK

Yes

appInfo

Object

app information

Yes

>appName

String

app name

Yes

>requiredServices

Array[String]

List of service dependent services

Yes

Example Request

PUT /mep/appMng/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/confs
{
    "header": [
        {
            "key": "Content-Type",
            "value": "application/json"
        }
    ],
    "body": {
        "authInfo": {
            "credentials": {
                "accessKeyId": "QVUJMSUMgS0VZLS0tLS0",
                "secretKey": "DXPb4sqElKhcHe07Kw5uorayETwId1JOjjOIRomRs5wyszoCR5R7AtVa28KT3lSc"
            }
        },
        "appInfo": {
            "appName": "name1",
            "requiredServices": [
                "serviceA",
                "serviceB"
            ]
        }
    }
}

Return parameter

Return code: 200

Name

Type

Description

Required

authInfo

Object

User information

Yes

>credentials

Object

Certificate information

Yes

>>accessKeyId

String

AK

Yes

>>secretKey

String

SK

Yes

appInfo

Object

app information

Yes

>appName

String

app name

Yes

>requiredServices

Array[String]

app-dependent services

Yes

Return Example

HTTP/1.1 200 OK
{
    "header": [
        {
            "key": "Content-Type",
            "value": "application/json"
        }
    ],
    "body": {
        "authInfo": {
            "credentials": {
                "accessKeyId": "QVUJMSUMgS0VZLS0tLS0",
                "secretKey": "DXPb4sqElKhcHe07Kw5uorayETwId1JOjjOIRomRs5wyszoCR5R7AtVa28KT3lSc"
            }
        },
        "appInfo": {
            "appName": "name1",
            "requiredServices": [
                "serviceA",
                "serviceB"
            ]
        }
    }
}

MEP-server interface

Service
1. Query availability services list

This method retrieves information about a list of mecService resources. This method is typically used in “service availability query” procedure

URL

GET /mep/mec_service_mgmt/v1/services

Request Parameters

Name

Type

Description

IN

Required

Authorization

String

Token information, format: Bearer token information

header

Yes

X-AppInstanceId

String

App instance id

header

Yes

ser_name

String

service name

query

No

Body parameters

No

Example Request

GET /mep/mec_service_mgmt/v1/services?ser_name=xxx
{
  "header": [
    {
      "key": "Authorization",
      "value": "Bearer xxx"
    },
    {
      "key": "X-AppInstanceId",
      "value": "xxx"
    }
  ]
}

Return parameter

Return code: 200

OK

Name

Type

Description

Required

serInstanceId

String

Service Instance ID

Yes

serName

String

Service Name

Yes

serCategory

Object

Service Class

No

>href

String

Directory reference

No

>id

String

Class ID

No

>name

String

Class name

No

>version

String

class version number

No

version

String

Service version number

Yes

state

String

Service Status (ACTIVE/INACTIVE)

Yes

transportInfo

Object

Service information

No

>id

String

ID

No

>name

String

Name

No

> description

String

Description

No

> type

String

Type (REST_HTTP/MB_TOPIC_BASED/MB_ROUTING/MB_PUBSUB/RPC/RPC_STREAMING/WEBSOCKET)

No

> protocol

String

Agreement Name

No

> version

String

version number

No

> endpoint

Ojbect

Endpoint, one of the three messages (uris/addresses/alternative)

No

>>uris

Array[String]

List of service portals in URI format

No

>>addresses

Array[Object]

List of service entrance information addresses (IP address + port number)

No

>>>host

String

IP Address

No

>>>port

String

port number

No

>>alternative

String

Service entrance information for the format or external specification definition

No

> security

Object

Security information

No

>> oAuth2Info

Object

OAuth2.0 parameter

No

>>> grantTypes

Array[String]

granted type (OAUTH2_AUTHORIZATION_CODE/OAUTH2_IMPLICIT_GRANT/OAUTH2_RESOURCE_OWNER/OAUTH2_CLIENT_CREDENTIALS)

No

>>> tokenEndpoint

String

Token endpoint

No

> implSpecificInfo

String

Other realized information

No

serializer

String

Serialization Type (JSON/XML/PROTOBUF3)

Yes

scopeOfLocality

String

Geographical range (MEC_SYSTEM/MEC_HOST/NFVI_POP/ZONE/ZONE_GROUP/NFVI_NODE), default value MEC_HOST

No

consumedLocalOnly

boolean

Is it only consumed by local APP (true/false)

No

isLocal

boolean

Is Local Domain (true/false)

No

livenessInterval

integer

Interval (in seconds) between two consecutive heartbeat messages

No

_links

Object

Links to resources related to this resource. Shall be absent in HTTP requests.

No

>self

object

Link to this resource. Shall be present in HTTP responses.

No

>>liveness

string

Link to the resource where the MEC platform expects the service instance to send the liveness information.

No

Return Example

HTTP/1.1 200 OK
[
  {
    "serInstanceId": "0bc92b06cc213d2ad8beda71bd0e1460",
    "serName": "ExampleService",
    "serCategory": {
      "href": "/example/catalogue1",
      "id": "id12345",
      "name": "RNI",
      "version": "version1"
    },
    "version": "ServiceVersion1",
    "state": "ACTIVE",
    "transportInfo": {
      "id": "TransId12345",
      "name": "REST",
      "description": "REST API",
      "type": "REST_HTTP",
      "protocol": "HTTP",
      "version": "2.0",
      "endpoint": {},
      "security": {
        "oAuth2Info": {
          "grantTypes": [
            "OAUTH2_CLIENT_CREDENTIALS"
          ],
          "tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint"
        }
      },
      "implSpecificInfo": {}
    },
    "serializer": "JSON",
    "scopeOfLocality": "MEC_SYSTEM",
    "consumedLocalOnly": false,
    "isLocal": true,
    "livenessInterval": 60,
    "_links": {
      "self": {
        "liveness" : "/mec_service_mgmt/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/service/0bc92b06cc213d2ad8beda71bd0e1460/liveness"
      }
    }
  }
]

2. Query availability individual service

This method retrieves information about a mecService resource. This method is typically used in “service availability query” procedure

URL

GET /mep/mec_service_mgmt/v1/services/{serviceId}

Request Parameters

Name

Type

Description

IN

Required

serviceId

String

service id

path

Yes

Authorization

String

Token information, format: Bearer token information

header

Yes

ser_name

String

service name

query

No

Body parameters

No

Example Request

GET /mep/mec_service_mgmt/v1/services?ser_name=xxx
{
  "header": [
    {
      "key": "Authorization",
      "value": "Bearer xxx"
    }
  ]
}

Return parameter

Return code: 200

OK

Name

Type

Description

Required

serInstanceId

String

Service Instance ID

Yes

serName

String

Service Name

Yes

serCategory

Object

Service Class

No

>href

String

Directory reference

No

>id

String

Class ID

No

>name

String

Class name

No

>version

String

class version number

No

version

String

Service version number

Yes

state

String

Service Status (ACTIVE/INACTIVE)

Yes

transportInfo

Object

Service information

No

>id

String

ID

No

>name

String

Name

No

> description

String

Description

No

> type

String

Type (REST_HTTP/MB_TOPIC_BASED/MB_ROUTING/MB_PUBSUB/RPC/RPC_STREAMING/WEBSOCKET)

No

> protocol

String

Agreement Name

No

> version

String

version number

No

> endpoint

Ojbect

Endpoint, one of the three messages (uris/addresses/alternative)

No

>>uris

Array[String]

List of service portals in URI format

No

>>addresses

Array[Object]

List of service entrance information addresses (IP address + port number)

No

>>>host

String

IP Address

No

>>>port

String

port number

No

>>alternative

String

Service entrance information for the format or external specification definition

No

> security

Object

Security information

No

>> oAuth2Info

Object

OAuth2.0 parameter

No

>>> grantTypes

Array[String]

granted type (OAUTH2_AUTHORIZATION_CODE/OAUTH2_IMPLICIT_GRANT/OAUTH2_RESOURCE_OWNER/OAUTH2_CLIENT_CREDENTIALS)

No

>>> tokenEndpoint

String

Token endpoint

No

> implSpecificInfo

String

Other realized information

No

serializer

String

Serialization Type (JSON/XML/PROTOBUF3)

Yes

scopeOfLocality

String

Geographical range (MEC_SYSTEM/MEC_HOST/NFVI_POP/ZONE/ZONE_GROUP/NFVI_NODE), default value MEC_HOST

No

consumedLocalOnly

boolean

Is it only consumed by local APP (true/false)

No

isLocal

boolean

Is Local Domain (true/false)

No

livenessInterval

integer

Interval (in seconds) between two consecutive heartbeat messages

No

_links

Object

Links to resources related to this resource. Shall be absent in HTTP requests.

No

>self

object

Link to this resource. Shall be present in HTTP responses.

No

>>liveness

string

Link to the resource where the MEC platform expects the service instance to send the liveness information.

No

Return Example

HTTP/1.1 200 OK
{
    "serInstanceId": "0bc92b06cc213d2ad8beda71bd0e1460",
    "serName": "ExampleService",
    "serCategory": {
      "href": "/example/catalogue1",
      "id": "id12345",
      "name": "RNI",
      "version": "version1"
    },
    "version": "ServiceVersion1",
    "state": "ACTIVE",
    "transportInfo": {
      "id": "TransId12345",
      "name": "REST",
      "description": "REST API",
      "type": "REST_HTTP",
      "protocol": "HTTP",
      "version": "2.0",
      "endpoint": {},
      "security": {
        "oAuth2Info": {
          "grantTypes": [
            "OAUTH2_CLIENT_CREDENTIALS"
          ],
          "tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint"
        }
      },
      "implSpecificInfo": {}
    },
    "serializer": "JSON",
    "scopeOfLocality": "MEC_SYSTEM",
    "consumedLocalOnly": false,
    "isLocal": true,
    "livenessInterval": 60,
    "_links": {
      "self": {
        "liveness" : "/mec_service_mgmt/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/service/0bc92b06cc213d2ad8beda71bd0e1460/liveness"
      }
    }
  }

3. Query transport information

Transport information query provides a standardized means to the MEC applications to discover the available transports supported in MEP.

URL

GET mep/mec_service_mgmt/v1/transports

Request parameters

None

Body Parameters

None

Example Request

GET mep/mec_service_mgmt/v1/transports

Return Parameters

Name Type Description Required
id string Transport ID. Yes
name string Transport name. Yes
description string Description about the transport. No
type TransportType Transport type. Yes
protocol string Name of the protocol used. Yes
version string Version of the protocol used. Yes
endpoint EndPointInfo Information about the endpoint to access the transport. Yes
security SecurityInfo Information about the security used by the transport. Yes
implSpecificInfo Object Any other implementation specific information. No

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
[
  {
    "id": "TransId12345",
    "name": "REST",
    "description": "REST API",
    "type": "REST_HTTP",
    "protocol": "HTTP",
    "version": "2.0",
    "endpoint": {},
    "security": {
      "oAuth2Info": {
        "grantTypes": [
          "OAUTH2_CLIENT_CREDENTIALS"
        ],
        "tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint"
      }
    },
    "implSpecificInfo": {}
  }
]

Exception status code

HTTP Status Code Description
400 Bad request, used to indicate that the requested parameters are incorrect.
403 The current operation is forbidden.
404 The requested resource was not found.
DNS rule configuration interfaces

Using the Mp1 interfaces mec apps can query and activate/deactivate dns rules associated to it. Implementation of this interface are as per the ETSI GS MEC 011 V2.1.1 document.

1. Query all dns rules

Query all DNS rules associated with an application.

URL

GET /mep/mec_app_support/v1/applications/{appInstanceId}/dns_rules

Request parameters

Name

Type

Description

IN

Required

Authorization

String

Token information, format: Bearer token information

header

Yes

appInstanceId

String

APP Instance ID (UUID)

path

Yes

Body Parameters

None

Example Request

GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/dns_rules

Return Parameters

Name

Type

Description

dnsRuleId

string

Rule Id

domainName

string

MEC app domain name

ipAddressType

enum {IP_V4, IP_V6}

MEC app ip address type

ipAddress

string

MEC app ip address

ttl

int (non-zero value)

TTL value

state

enum {ACTIVE, INACTIVE}

State

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
[
    {
        "dnsRuleId": "20a19292-384c-4d44-ba64-a8e8269f0f25",
        "domainName": "voicerecgservice.com",
        "ipAddressType": "IP_V4",
        "ipAddress": "192.168.27.48",
        "ttl": 30,
        "state": "ACTIVE"
    },
    {
        "dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
        "domainName": "facerecgservice.com",
        "ipAddressType": "IP_V4",
        "ipAddress": "192.168.147.240",
        "ttl": 30,
        "state": "INACTIVE"
    }
]
2. Query a specific dns rule

Query single DNS rule associated with an application.

URL

GET /mep/mec_app_support/v1/applications/{appInstanceId}/dns_rules/{dnsRuleId}

Request parameters

Name

Type

Description

IN

Required

Authorization

String

Token information, format: Bearer token information

header

Yes

appInstanceId

String

APP Instance ID(UUID)

path

Yes

dnsRuleId

String

DNS rule identifier(UUID)

path

Yes

Body Parameters

None

Example Request

GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/dns_rules/bbc14ed1-92f4-457f-95e8-93aa723a9f12

Return Parameters

Name

Type

Description

dnsRuleId

string

Rule Id

domainName

string

MEC app domain name

ipAddressType

enum {IP_V4, IP_V6}

MEC app ip address type

ipAddress

string

MEC app ip address

ttl

int (non-zero value)

TTL value

state

enum {ACTIVE, INACTIVE}

State

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
    "dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
    "domainName": "facerecgservice.com",
    "ipAddressType": "IP_V4",
    "ipAddress": "192.168.147.240",
    "ttl": 30,
    "state": "INACTIVE"
}
3. Update a specific dns rule

Modify the state of a rule associated with an application. This interface can modify the state from ACTIVE to INACTIVE or vice versa. No other field can be modified using this interface.

URL

PUT /mep/mec_app_support/v1/applications/{appInstanceId}/dns_rules/{dnsRuleId}

Request parameters

Name

Type

Description

IN

Required

Authorization

String

Token information, format: Bearer token information

header

Yes

appInstanceId

String

APP Instance ID(UUID)

path

Yes

dnsRuleId

String

DNS rule identifier(UUID)

path

Yes

Body Parameters

Name

Type

Description

Required

dnsRuleId

string

Rule Id

No, if present must be same with actual

domainName

string

MEC app domain name

No, if present must be same with actual

ipAddressType

enum {IP_V4, IP_V6}

MEC app ip address type

No, if present must be same with actual

ipAddress

string

MEC app ip address

No, if present must be same with actual

ttl

int (non-zero value)

TTL value

No, if present must be same with actual

state

enum {ACTIVE, INACTIVE}

State

Yes

Example Request

PUT /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/dns_rules/bbc14ed1-92f4-457f-95e8-93aa723a9f12
{
    "dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
    "domainName": "facerecgservice.com",
    "ipAddressType": "IP_V4",
    "ipAddress": "192.168.147.240",
    "ttl": 30,
    "state": "ACTIVE"
}

Return Parameters

Name

Type

Description

dnsRuleId

string

Rule Id

domainName

string

MEC app domain name

ipAddressType

enum {IP_V4, IP_V6}

MEC app ip address type

ipAddress

string

MEC app ip address

ttl

int (non-zero value)

TTL value

state

enum {ACTIVE, INACTIVE}

State

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
    "dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
    "domainName": "facerecgservice.com",
    "ipAddressType": "IP_V4",
    "ipAddress": "192.168.147.240",
    "ttl": 30,
    "state": "ACTIVE"
}
Traffic rule configuration interfaces

Using the Mp1 interfaces mec apps can query and modify the traffic rules associated to it. Implementation of this interface are as per the ETSI GS MEC 011 V2.1.1 document.

1. Query all traffic rules

Query all traffic rules associated with an application.

URL

GET /mep/mec_app_support/v1/applications/{appInstanceId}/traffic_rules

Request parameters

Name

Type

Description

IN

Required

Authorization

String

Token information, format: Bearer token information

header

Yes

appInstanceId

String

APP Instance ID (UUID)

path

Yes

Body Parameters

None

Example Request

GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/traffic_rules

Return Parameters

Name

Type

Description

trafficRuleId

string

Traffic rule ID.

filterType

enum {FLOW, PACKET}

Filter type.

priority

number (1 ~ 256)

Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence.

trafficFilter

list

List of traffic filters.

> srcAddress

list

List of source ip address.

> dstAddress

list

List of destination ip address.

> srcPort

list

List of source port address.

> dstPort

list

List of destination port address.

> protocol

list

List of protocols.

> tag

list

List of tags.

> srcTunnelAddress

list

List of source tunnel address.

> tgtTunnelAddress

list

List of target tunnel address.

> srcTunnelPort

list

List of source tunnel ports.

> dstTunnelPort

list

List of destination tunnel ports.

> qCI

number

Match packets with same QCI.

> dSCP

number

Match packets with same DSCP.

> tC

number

Match packets with same TC.

action

enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS}

Action when traffic rule matches.

dstInterface

list

Destination interface parameters.

> interfaceType

enum {TUNNEL, MAC, IP}

Match packets with same TC.

> tunnelInfo

object

Tunnel parameters.

>> tunnelType

enum {GTP_U, GRE}

Tunnel type.

>> tunnelDstAddress

string

Destination IP address.

>> tunnelSrcAddress

string

Source IP address.

> srcMacAddress

string

Source MAC address

> dstMacAddress

string

Destination MAC address.

> dstIpAddress

string

Destination IP address.

state

enum {ACTIVE, INACTIVE}

State of the rule.

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
[
  {
    "trafficRuleId": "TrafficRule1",
    "filterType": "FLOW",
    "priority": 1,
    "trafficFilter": [
      {
        "srcAddress": [
          "192.158.1.1/28"
        ],
        "dstAddress": [
          "192.168.1.1/28"
        ],
        "srcPort": [
          "8080"
        ],
        "dstPort": [
          "8080"
        ],
        "protocol": [
          "TCP"
        ],
        "tag": null,
        "srcTunnelAddress": null,
        "tgtTunnelAddress": null,
        "srcTunnelPort": null,
        "dstTunnelPort": null,
        "qCI": 2,
        "dSCP": 0,
        "tC": 1
      }
    ],
    "action": "DROP",
    "dstInterface": [],
    "state": "ACTIVE"
  }
]
2. Query a specific traffic rule

Query single traffic rule associated with an application.

URL

GET /mep/mec_app_support/v1/applications/{appInstanceId}/traffic_rules/{trafficRuleId}

Request parameters

Name

Type

Description

IN

Required

Authorization

String

Token information, format: Bearer token information

header

Yes

appInstanceId

String

APP Instance ID(UUID)

path

Yes

trafficRuleId

String

Traffic rule identifier(UUID)

path

Yes

Body Parameters

None

Example Request

GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/traffic_rules/TrafficRule1

Return Parameters

Name

Type

Description

trafficRuleId

string

Traffic rule ID.

filterType

enum {FLOW, PACKET}

Filter type.

priority

number (1 ~ 256)

Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence.

trafficFilter

list

List of traffic filters.

> srcAddress

list

List of source ip address.

> dstAddress

list

List of destination ip address.

> srcPort

list

List of source port address.

> dstPort

list

List of destination port address.

> protocol

list

List of protocols.

> tag

list

List of tags.

> srcTunnelAddress

list

List of source tunnel address.

> tgtTunnelAddress

list

List of target tunnel address.

> srcTunnelPort

list

List of source tunnel ports.

> dstTunnelPort

list

List of destination tunnel ports.

> qCI

number

Match packets with same QCI.

> dSCP

number

Match packets with same DSCP.

> tC

number

Match packets with same TC.

action

enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS}

Action when traffic rule matches.

dstInterface

list

Destination interface parameters.

> interfaceType

enum {TUNNEL, MAC, IP}

Match packets with same TC.

> tunnelInfo

object

Tunnel parameters.

>> tunnelType

enum {GTP_U, GRE}

Tunnel type.

>> tunnelDstAddress

string

Destination IP address.

>> tunnelSrcAddress

string

Source IP address.

> srcMacAddress

string

Source MAC address

> dstMacAddress

string

Destination MAC address.

> dstIpAddress

string

Destination IP address.

state

enum {ACTIVE, INACTIVE}

State of the rule.

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
  "trafficRuleId": "TrafficRule1",
  "filterType": "FLOW",
  "priority": 1,
  "trafficFilter": [
    {
      "srcAddress": [
        "192.158.1.1/28"
      ],
      "dstAddress": [
        "192.168.1.1/28"
      ],
      "srcPort": [
        "8080"
      ],
      "dstPort": [
        "8080"
      ],
      "protocol": [
        "TCP"
      ],
      "tag": null,
      "srcTunnelAddress": null,
      "tgtTunnelAddress": null,
      "srcTunnelPort": null,
      "dstTunnelPort": null,
      "qCI": 2,
      "dSCP": 0,
      "tC": 1
    }
  ],
  "action": "DROP",
  "dstInterface": [],
  "state": "ACTIVE"
}
3. Update a specific traffic rule

Modify the traffic rule associated with an application.

URL

PUT /mep/mec_app_support/v1/applications/{appInstanceId}/traffic_rules/{trafficRuleId}

Request parameters

Name

Type

Description

IN

Required

Authorization

String

Token information, format: Bearer token information

header

Yes

appInstanceId

String

APP Instance ID(UUID)

path

Yes

trafficRuleId

String

Traffic rule identifier(UUID)

path

Yes

Body Parameters

Name

Type

Description

trafficRuleId

string

Traffic rule ID.

filterType

enum {FLOW, PACKET}

Filter type.

priority

number (1 ~ 256)

Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence.

trafficFilter

list

List of traffic filters.

> srcAddress

list

List of source ip address.

> dstAddress

list

List of destination ip address.

> srcPort

list

List of source port address.

> dstPort

list

List of destination port address.

> protocol

list

List of protocols.

> tag

list

List of tags.

> srcTunnelAddress

list

List of source tunnel address.

> tgtTunnelAddress

list

List of target tunnel address.

> srcTunnelPort

list

List of source tunnel ports.

> dstTunnelPort

list

List of destination tunnel ports.

> qCI

number

Match packets with same QCI.

> dSCP

number

Match packets with same DSCP.

> tC

number

Match packets with same TC.

action

enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS}

Action when traffic rule matches.

dstInterface

list

Destination interface parameters.

> interfaceType

enum {TUNNEL, MAC, IP}

Match packets with same TC.

> tunnelInfo

object

Tunnel parameters.

>> tunnelType

enum {GTP_U, GRE}

Tunnel type.

>> tunnelDstAddress

string

Destination IP address.

>> tunnelSrcAddress

string

Source IP address.

> srcMacAddress

string

Source MAC address

> dstMacAddress

string

Destination MAC address.

> dstIpAddress

string

Destination IP address.

state

enum {ACTIVE, INACTIVE}

State of the rule.

Example Request

PUT /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/traffic_rules/TrafficRule1
{
  "trafficRuleId": "TrafficRule1",
  "filterType": "FLOW",
  "priority": 1,
  "trafficFilter": [
    {
      "srcAddress": [
        "192.158.1.1/28"
      ],
      "dstAddress": [
        "192.168.1.1/28"
      ],
      "srcPort": [
        "8080"
      ],
      "dstPort": [
        "8080"
      ],
      "protocol": [
        "TCP"
      ],
      "tag": null,
      "srcTunnelAddress": null,
      "tgtTunnelAddress": null,
      "srcTunnelPort": null,
      "dstTunnelPort": null,
      "qCI": 2,
      "dSCP": 0,
      "tC": 1
    }
  ],
  "action": "DROP",
  "dstInterface": [],
  "state": "ACTIVE"
}

Return Parameters

Name

Type

Description

trafficRuleId

string

Traffic rule ID.

filterType

enum {FLOW, PACKET}

Filter type.

priority

number (1 ~ 256)

Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence.

trafficFilter

list

List of traffic filters.

> srcAddress

list

List of source ip address.

> dstAddress

list

List of destination ip address.

> srcPort

list

List of source port address.

> dstPort

list

List of destination port address.

> protocol

list

List of protocols.

> tag

list

List of tags.

> srcTunnelAddress

list

List of source tunnel address.

> tgtTunnelAddress

list

List of target tunnel address.

> srcTunnelPort

list

List of source tunnel ports.

> dstTunnelPort

list

List of destination tunnel ports.

> qCI

number

Match packets with same QCI.

> dSCP

number

Match packets with same DSCP.

> tC

number

Match packets with same TC.

action

enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS}

Action when traffic rule matches.

dstInterface

list

Destination interface parameters.

> interfaceType

enum {TUNNEL, MAC, IP}

Match packets with same TC.

> tunnelInfo

object

Tunnel parameters.

>> tunnelType

enum {GTP_U, GRE}

Tunnel type.

>> tunnelDstAddress

string

Destination IP address.

>> tunnelSrcAddress

string

Source IP address.

> srcMacAddress

string

Source MAC address

> dstMacAddress

string

Destination MAC address.

> dstIpAddress

string

Destination IP address.

state

enum {ACTIVE, INACTIVE}

State of the rule.

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
  "trafficRuleId": "TrafficRule1",
  "filterType": "FLOW",
  "priority": 1,
  "trafficFilter": [
    {
      "srcAddress": [
        "192.158.1.1/28"
      ],
      "dstAddress": [
        "192.168.1.1/28"
      ],
      "srcPort": [
        "8080"
      ],
      "dstPort": [
        "8080"
      ],
      "protocol": [
        "TCP"
      ],
      "tag": null,
      "srcTunnelAddress": null,
      "tgtTunnelAddress": null,
      "srcTunnelPort": null,
      "dstTunnelPort": null,
      "qCI": 2,
      "dSCP": 0,
      "tC": 1
    }
  ],
  "action": "DROP",
  "dstInterface": [],
  "state": "ACTIVE"
}
Mm5 Interface for appd configurations

Using the Mm5 interfaces MECM can create, query, update or delete the appd configurations which includes multiple dns and traffic rules associated to an application. Implementation of this interface are specified in ETSI GS MEC 010-1 V1.1.1 and ETSI GS MEC 010-2 V2.1.1 documents.

1. Create a new appd configurations

Create a new appd configuration and associate it with a MEC application. Each configuration can have thirty-two DNS rules and sixteen Traffic rules. There can be only one appd configuration per application at a time and the appd configuration is an asynchronous in nature. Once the request is received in the mep, after validation mep will start a task to handle multiple dns and traffic rules and return a task id to the caller of the API. Using the task-id the caller can check the status of the operation at any time.

URL

POST /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration

Request parameters

Name

Type

Description

IN

Required

appInstanceId

String

APP Instance ID(UUID)

path

Yes

Body Parameters

Name

Type

Description

Required

appTrafficRule

list

List of traffic rules. Max 16.

No

> trafficRuleId

string

Traffic rule ID.

Yes

> filterType

enum {FLOW, PACKET}

Filter type.

Yes

> priority

number (1 ~ 256)

Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence.

Yes

> trafficFilter

list

List of traffic filters. Max 16.

No

>> srcAddress

list

List of source ip address. Max 64.

No

>> dstAddress

list

List of destination ip address. Max 64.

No

>> srcPort

list

List of source port address.

No

>> dstPort

list

List of destination port address.

No

>> protocol

list

List of protocols. Max 8.

Yes

>> tag

list

List of tags. Max 8.

Yes

>> srcTunnelAddress

list

List of source tunnel address.

No

>> tgtTunnelAddress

list

List of target tunnel address.

No

>> srcTunnelPort

list

List of source tunnel ports.

No

>> dstTunnelPort

list

List of destination tunnel ports.

No

>> qCI

number

Match packets with same QCI.

No

>> dSCP

number

Match packets with same DSCP.

No

>> tC

number

Match packets with same TC.

No

> action

enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS}

Action when traffic rule matches.

Yes

> dstInterface

list

Destination interface parameters. Max 2.

No

>> interfaceType

enum {TUNNEL, MAC, IP}

Match packets with same TC.

Yes

>> tunnelInfo

object

Tunnel parameters.

No

>>> tunnelType

enum {GTP_U, GRE}

Tunnel type.

Yes

>>> tunnelDstAddress

string

Destination IP address.

No

>>> tunnelSrcAddress

string

Source IP address.

No

>> srcMacAddress

string

Source MAC address

No

>> dstMacAddress

string

Destination MAC address.

No

>> dstIpAddress

string

Destination IP address.

No

> state

enum {ACTIVE, INACTIVE}

State of the rule.

No

appDNSRule

list

List of DNS rules. Max 32.

No

> dnsRuleId

string

DNS rule ID.

Yes

> domainName

string

Domain name.

Yes

> ipAddressType

enum {IPv4, IPv6}

IP address type.

Yes

> ipAddress

string

IP address.

Yes

> ttl

number

Time To Live value.

Yes

> state

enum {ACTIVE, INACTIVE}

Rule state.

Yes

appSupportMp1

bool

Whether Mp1 interface is supported.

No

appName

string

Application name.

Yes

Example Request

POST /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration
{
  "appTrafficRule": [
    {
      "trafficRuleId": "TrafficRule1",
      "filterType": "FLOW",
      "priority": 1,
      "trafficFilter": [
        {
          "srcAddress": [
            "192.158.1.1/28"
          ],
          "dstAddress": [
            "192.168.1.1/28"
          ],
          "srcPort": [
            "8080"
          ],
          "dstPort": [
            "8080"
          ],
          "protocol": [
            "TCP"
          ],
          "qCI": 1,
          "dSCP": 0,
          "tC": 1
        }
      ],
      "action": "DROP",
      "state": "ACTIVE"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "dnsRule1",
      "domainName": "facerecgservice.com",
      "ipAddressType": "IP_V4",
      "ipAddress": "192.168.147.240",
      "ttl": 30,
      "state": "ACTIVE"
    }
  ],
  "appSupportMp1": true,
  "appName": "abc1"
}

Return Parameters

Name

Type

Description

taskId

string

Task ID

appInstanceId

string

Application instance ID

configResult

string

Configuration result

configPhase

string

Progress percentage

Detailed

string

Detailed reason

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
  "taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
  "appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
  "configResult": "PROCESSING",
  "configPhase": "0",
  "Detailed": "Operation In progress"
}
2. Query appd configuration

Query appd configuration associated with an application.

URL

GET /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration

Request parameters

Name

Type

Description

IN

Required

appInstanceId

String

APP Instance ID(UUID)

path

Yes

Body Parameters

None

Example Request

GET /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration

Return Parameters

Name

Type

Description

appTrafficRule

list

List of traffic rules.

> trafficRuleId

string

Traffic rule ID.

> filterType

enum {FLOW, PACKET}

Filter type.

> priority

number (1 ~ 256)

Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence.

> trafficFilter

list

List of traffic filters.

>> srcAddress

list

List of source ip address.

>> dstAddress

list

List of destination ip address.

>> srcPort

list

List of source port address.

>> dstPort

list

List of destination port address.

>> protocol

list

List of protocols.

>> tag

list

List of tags.

>> srcTunnelAddress

list

List of source tunnel address.

>> tgtTunnelAddress

list

List of target tunnel address.

>> srcTunnelPort

list

List of source tunnel ports.

>> dstTunnelPort

list

List of destination tunnel ports.

>> qCI

number

Match packets with same QCI.

>> dSCP

number

Match packets with same DSCP.

>> tC

number

Match packets with same TC.

> action

enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS}

Action when traffic rule matches.

> dstInterface

list

Destination interface parameters.

>> interfaceType

enum {TUNNEL, MAC, IP}

Match packets with same TC.

>> tunnelInfo

object

Tunnel parameters.

>>> tunnelType

enum {GTP_U, GRE}

Tunnel type.

>>> tunnelDstAddress

string

Destination IP address.

>>> tunnelSrcAddress

string

Source IP address.

>> srcMacAddress

string

Source MAC address

>> dstMacAddress

string

Destination MAC address.

>> dstIpAddress

string

Destination IP address.

> state

enum {ACTIVE, INACTIVE}

State of the rule.

appDNSRule

list

List of DNS rules.

> dnsRuleId

string

DNS rule ID.

> domainName

string

Domain name.

> ipAddressType

enum {IPv4, IPv6}

IP address type.

> ipAddress

string

IP address.

> ttl

number

Time To Live value.

> state

enum {ACTIVE, INACTIVE}

Rule state.

appSupportMp1

bool

Whether Mp1 interface is supported.

appName

string

Application name.

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
  "appTrafficRule": [
    {
      "trafficRuleId": "TrafficRule1",
      "filterType": "FLOW",
      "priority": 1,
      "trafficFilter": [
        {
          "srcAddress": [
            "192.158.1.1/28"
          ],
          "dstAddress": [
            "192.168.1.1/28"
          ],
          "srcPort": [
            "8080"
          ],
          "dstPort": [
            "8080"
          ],
          "protocol": [
            "TCP"
          ],
          "tag": null,
          "srcTunnelAddress": null,
          "tgtTunnelAddress": null,
          "srcTunnelPort": null,
          "dstTunnelPort": null,
          "qCI": 2,
          "dSCP": 0,
          "tC": 1
        }
      ],
      "action": "DROP",
      "dstInterface": [],
      "state": "ACTIVE"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "dnsRule1",
      "domainName": "facerecgservice.com",
      "ipAddressType": "IP_V4",
      "ipAddress": "192.168.147.240",
      "ttl": 30,
      "state": "ACTIVE"
    }
  ],
  "appSupportMp1": true,
  "appName": "abc1"
}
3. Modify appd configuration

Appd configuration for each applications can be configured using this interface. MEP will take the difference of existing configuration and the new modification input and then act on create/modify/delete of dns and/or traffic rules.

URL

PUT /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration

Request parameters

Name

Type

Description

IN

Required

appInstanceId

String

APP Instance ID(UUID)

path

Yes

Body Parameters

Name

Type

Description

Required

appTrafficRule

list

List of traffic rules. Max 16.

No

> trafficRuleId

string

Traffic rule ID.

Yes

> filterType

enum {FLOW, PACKET}

Filter type.

Yes

> priority

number (1 ~ 256)

Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence.

Yes

> trafficFilter

list

List of traffic filters. Max 16.

No

>> srcAddress

list

List of source ip address. Max 64.

No

>> dstAddress

list

List of destination ip address. Max 64.

No

>> srcPort

list

List of source port address.

No

>> dstPort

list

List of destination port address.

No

>> protocol

list

List of protocols. Max 8.

Yes

>> tag

list

List of tags. Max 8.

Yes

>> srcTunnelAddress

list

List of source tunnel address.

No

>> tgtTunnelAddress

list

List of target tunnel address.

No

>> srcTunnelPort

list

List of source tunnel ports.

No

>> dstTunnelPort

list

List of destination tunnel ports.

No

>> qCI

number

Match packets with same QCI.

No

>> dSCP

number

Match packets with same DSCP.

No

>> tC

number

Match packets with same TC.

No

> action

enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS}

Action when traffic rule matches.

Yes

> dstInterface

list

Destination interface parameters. Max 2.

No

>> interfaceType

enum {TUNNEL, MAC, IP}

Match packets with same TC.

Yes

>> tunnelInfo

object

Tunnel parameters.

No

>>> tunnelType

enum {GTP_U, GRE}

Tunnel type.

Yes

>>> tunnelDstAddress

string

Destination IP address.

No

>>> tunnelSrcAddress

string

Source IP address.

No

>> srcMacAddress

string

Source MAC address

No

>> dstMacAddress

string

Destination MAC address.

No

>> dstIpAddress

string

Destination IP address.

No

> state

enum {ACTIVE, INACTIVE}

State of the rule.

No

appDNSRule

list

List of DNS rules. Max 32.

No

> dnsRuleId

string

DNS rule ID.

Yes

> domainName

string

Domain name.

Yes

> ipAddressType

enum {IPv4, IPv6}

IP address type.

Yes

> ipAddress

string

IP address.

Yes

> ttl

number

Time To Live value.

Yes

> state

enum {ACTIVE, INACTIVE}

Rule state.

Yes

appSupportMp1

bool

Whether Mp1 interface is supported.

No

appName

string

Application name.

Yes

Example Request

PUT /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration
{
  "appTrafficRule": [
    {
      "trafficRuleId": "TrafficRule1",
      "filterType": "FLOW",
      "priority": 1,
      "trafficFilter": [
        {
          "srcAddress": [
            "192.158.1.1/28"
          ],
          "dstAddress": [
            "192.168.1.1/28"
          ],
          "srcPort": [
            "8080"
          ],
          "dstPort": [
            "8080"
          ],
          "protocol": [
            "TCP"
          ],
          "qCI": 1,
          "dSCP": 0,
          "tC": 1
        }
      ],
      "action": "DROP",
      "state": "ACTIVE"
    }
  ],
  "appDNSRule": [
    {
      "dnsRuleId": "dnsRule1",
      "domainName": "facerecgservice.com",
      "ipAddressType": "IP_V4",
      "ipAddress": "192.168.147.240",
      "ttl": 30,
      "state": "ACTIVE"
    }
  ],
  "appSupportMp1": true,
  "appName": "abc1"
}

Return Parameters

Name

Type

Description

taskId

string

Task ID

appInstanceId

string

Application instance ID

configResult

string

Configuration result

configPhase

string

Progress percentage

Detailed

string

Detailed reason

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
  "taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
  "appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
  "configResult": "PROCESSING",
  "configPhase": "0",
  "Detailed": "Operation In progress"
}
4. Delete appd configuration

Delete appd configuration request.

URL

DELETE /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration

Request parameters

Name

Type

Description

IN

Required

appInstanceId

String

APP Instance ID(UUID)

path

Yes

Body Parameters

None

Example Request

DELETE /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration

Return Parameters

Name

Type

Description

taskId

string

Task ID

appInstanceId

string

Application instance ID

configResult

string

Configuration result

configPhase

string

Progress percentage

Detailed

string

Detailed reason

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
  "taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
  "appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
  "configResult": "PROCESSING",
  "configPhase": "0",
  "Detailed": "Operation In progress"
}
5. Query task status

Once the appd configuration create, modify or delete is submitted, mep will create a task and return a task id to the caller and the caller can periodically check the status of the task using this id. This interface calls the mep for the task status.

URL

GET /mepcfg/app_lcm/v1/tasks/{taskId}/appd_configuration

Request parameters

Name

Type

Description

IN

Required

taskId

String

Task ID(UUID)

path

Yes

Body Parameters

None

Example Request

GET /mepcfg/app_lcm/v1/tasks/d464dd0a-d927-4baf-bc2c-d902fb0b2c73/appd_configuration

Return Parameters

Name

Type

Description

taskId

string

Task ID

appInstanceId

string

Application instance ID

configResult

string

Configuration result

configPhase

string

Progress percentage

Detailed

string

Detailed reason

Return Code: 200 OK

Example Response

HTTP/1.1 200 OK
{
  "taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
  "appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
  "configResult": "SUCCESS",
  "configPhase": "100",
  "Detailed": ""
}
Application Termination

MEP support termination/stop of instance of an application after MEP receive the request from MECM.

1. App Instance Termination

Interface to remove the application’s ak/sk values, unregister the services and delete the DNS and traffic rule.

URL

DELETE /mep/mec_app_support/v1/applications/{appInstanceId}/AppInstanceTermination

Request parameters

Request parameters

Name

Type

Description

IN

Required

appInstanceId

String

APP Instance ID(UUID)

path

Yes

appInstanceId

String

APP Instance ID(UUID)

header

Yes

Example Request

DELETE /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/AppInstanceTermination

Body Parameters

None

Return Code: 200 OK

Example Response

""
2. App Instance Termination Confirmation

After the MEC platform receives a request to terminate or stop a MEC application instance, the MEC platform notifies the MEC application instance that it will be terminated or stopped soon incase if graceful termination/stop is subscribed.

URL

POST /mep/mec_app_support/v1/applications/{appInstanceId}/confirm_termination

Request parameters

Name

Type

Description

IN

Required

appInstanceId

String

APP Instance ID(UUID)

path

Yes

Example Request

POST /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/confirm_termination

Body Parameters

{
    "notificationType": "AppTerminationNotification",
    "operationAction": "STOPPING",
    "maxGracefulTimeout": "30",
    "_links": {
      "subscription": "mep/mec_app_support/v1/applications/6abe4782-2c70-4e47-9a4e-0ee3a1a0fd1e/subscriptions/6abe4782",
      "confirmTermination": "/mep/mec_app_support/v1/applications/6abe4782-2c70-4e47-9a4e-0ee3a1a0fd1e/confirm_termination",
    },
}

Return Code: 204 No Content

**Example Response**

POST /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/confirm_termination { “operationAction”: “TERMINATING” }


Exception status code

<table border="1" class="docutils">
<thead>
<tr>
<th><strong>Data type</strong></th>
<th><strong>Response codes</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>N/A</td>
<td>204 No Content</td>
<td>The request is acknowledged. The response body shall be empty.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>401 Unauthorized</td>
<td>It is used when the client did not submit the appropriate credentials. In the returned ProblemDetails structure, the "detail" attribute should convey more information about the error.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>403 Forbidden</td>
<td>The operation is not allowed given the current status of the resource. More information shall be provided in the "detail" attribute of the "ProblemDetails" structure.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>404 Not Found</td>
<td>It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the "detail" attribute should convey more information about the error.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>409 Conflict</td>
<td>The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is because the application instance resource is in NOT_INSTANTIATED state or because there is no termination ongoing. The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more information about the error.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>429 Too Many Requests</td>
<td>It is used when a rate limiter has triggered. In the returned ProblemDetails structure, the "detail" attribute should convey more information about the error.</td>
</tr>
</tbody>
</table>

### Query Platform Capabilities(Services)

MEP supports for querying the capabilities(services) registered with it. These capability information will be used by the MECM to display it to the user on its portal. MECM send the capability query to MEP over Mm5 interface.

#### 1. Query all capabilities

Interface to query all capabilities. This interface return the capability list registered to the queried MEP server along with the consumers of it.

**URL**

GET /mepcfg/mec_platform_config/v1/capabilities


**Request parameters**

None

**Body Parameters**

None

**Example Request**

GET /mepcfg/mec_platform_config/v1/capabilities


**Return Parameters**
| Name           | Type                        | Description              |
| -------------- | --------------------------- | ------------------------ |
| capabilityId   | String                      | Capability/Service id    |
| capabilityName | String                      | Capability/Service name  |
| status         | Enum **{ACTIVE, INACTIVE}** | Status                   |
| version        | String                      | Version info             |
| consumers      | Array[Object]               | Consumer object list     |
| &gt;applicationInstanceId | String           | Consumer application id  |

Return Code: 200 OK

**Example Response**

HTTP/1.1 200 OK [ { “capabilityId”: “16384563dca094183778a41ea7701d15”, “capabilityName”: “FaceRegService”, “status”: “ACTIVE”, “version”: “4.5.8”, “consumers”: [ { “applicationInstanceId”: “5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f” }, { “applicationInstanceId”: “f05a5591-d8f2-4f89-8c0b-8cea6d45712e” }, { “applicationInstanceId”: “86dfc97d-325e-4feb-ac4f-280a0ba42513” } ] }, { “capabilityId”: “f7e898d1c9ea9edd05e1181bc09afc5e”, “capabilityName”: “Location”, “status”: “ACTIVE”, “version”: “v1.19”, “consumers”: [ { “applicationInstanceId”: “88922760-861b-4578-aae5-77b8fcb06142” } ] } ]


#### 2. Query individual capability

Interface to query an individual capability from MEP. This interface return a capability along with the consumers of it.

**URL**

GET /mepcfg/mec_platform_config/v1/capabilities/{capabilityId}


**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| capabilityId  | String | Capability ID(UUID)  | path |  Yes   |

**Body Parameters**

None

**Example Request**

GET /mepcfg/mec_platform_config/v1/capabilities/16384563dca094183778a41ea7701d15


**Return Parameters**
| Name           | Type                        | Description              |
| -------------- | --------------------------- | ------------------------ |
| capabilityId   | String                      | Capability/Service id    |
| capabilityName | String                      | Capability/Service name  |
| status         | Enum **{ACTIVE, INACTIVE}** | Status                   |
| version        | String                      | Version info             |
| consumers      | Array[Object]               | Consumer object list     |
| &gt;applicationInstanceId | String           | Consumer application id  |

Return Code: 200 OK

**Example Response**

HTTP/1.1 200 OK { “capabilityId”: “16384563dca094183778a41ea7701d15”, “capabilityName”: “FaceRegService”, “status”: “ACTIVE”, “version”: “4.5.8”, “consumers”: [ { “applicationInstanceId”: “5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f” }, { “applicationInstanceId”: “f05a5591-d8f2-4f89-8c0b-8cea6d45712e” }, { “applicationInstanceId”: “86dfc97d-325e-4feb-ac4f-280a0ba42513” } ] }

### Timing interfaces

Interface to get platform time for MEP applications.

#### 1. Query platform time

Interface to get the current MEP platform time.

**URL**

GET mep/mec_app_support/v1/timing/current_time

**Request parameters**

None

<table border="1" class="docutils">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>seconds</td>
<td>integer</td>
<td>The seconds part of the time in unix time format.</td>
</tr>
<tr>
<td>nanoSeconds</td>
<td>integer</td>
<td>The nano-seconds part of the time in unix time format.</td>
</tr>
<tr>
<td>timeSourceStatus</td>
<td>enum{TRACEABLE, NONTRACEABLE}</td>
<td>1 = TRACEABLE - time source is locked to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the UTC time source</td>
</tr>
</tbody>
</table>

**Example Request**

GET mep/mec_app_support/v1/timing/current_time


**Body Parameters**

None

Return Code: 200 OK

**Example Response**

HTTP/1.1 200 OK { “seconds”: 1627971217, “nanoSeconds”: 869279458, “timeSourceStatus”: “TRACEABLE” }


#### 2. Query timing capability

Interface to get the timing capabilities. The information regarding available packet timing facilities.

**URL**

GET mep/mec_app_support/v1/timing/timing_caps

**Request parameters**

None

Return Parameters:

<table border="1" class="docutils">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td>timeStamp</td>
<td>Object</td>
<td>Time stamp information.</td>
<td>No</td>
</tr>
<tr>
<td>&gt;seconds</td>
<td>integer</td>
<td>The seconds part of the time in unix time format.</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;nanoSeconds</td>
<td>integer</td>
<td>The nano-seconds part of the time in unix time format.</td>
<td>Yes</td>
</tr>
<tr>
<td>ntpServers</td>
<td>Array[Object]</td>
<td>Details about all NTP server available in the platform.</td>
<td>No</td>
</tr>
<tr>
<td>&gt;ntpServerAddrType</td>
<td>enum{IP_ADDRESS, DNS_NAME}</td>
<td>Address type.</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;ntpServerAddr</td>
<td>string</td>
<td>NTP server address.</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;minPollingInterval</td>
<td>integer</td>
<td>Minimum poll interval for NTP messages, in seconds as a power of two Range: 3…17</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;maxPollingInterval</td>
<td>integer</td>
<td>Maximum poll interval for NTP messages, in seconds as a power of two Range: 3…17</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;localPriority</td>
<td>integer</td>
<td>Local priority value.</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;authenticationOption</td>
<td>enum{NONE, SYMMETRIC_KEY, AUTO_KEY}</td>
<td>Available authentication option.</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;authenticationKeyNum</td>
<td>integer</td>
<td>Authentication key number. This configuration is valid if selected authenticationOption is SymmetricKey</td>
<td>Yes</td>
</tr>
<tr>
<td>ptpMasters</td>
<td>Array[Object]</td>
<td>Details about all PTP server available in the platform.</td>
<td>No</td>
</tr>
<tr>
<td>&gt;ptpMasterIpAddress</td>
<td>string</td>
<td>PTP master IP address.</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;ptpMasterLocalPriority</td>
<td>integer</td>
<td>Local priority number.</td>
<td>Yes</td>
</tr>
<tr>
<td>&gt;delayReqMaxRate</td>
<td>integer</td>
<td>Acceptable maximum rate of the Delay_Req messages in packets per second</td>
<td>Yes</td>
</tr>
</tbody>
</table>

**Example Request**

GET mep/mec_app_support/v1/timing/timing_caps


**Body Parameters**

None

Return Code: 200 OK

**Example Response**

HTTP/1.1 200 OK { “timeStamp”: { “seconds”: 1627971264, “nanoSeconds”: 478959804 }, “ntpServers”: [ { “ntpServerAddrType”: “DNS_NAME”, “ntpServerAddr”: “mep-ntp”, “minPollingInterval”: 4, “maxPollingInterval”: 17, “localPriority”: 1, “authenticationOption”: “NONE”, “authenticationKeyNum”: 0 } ] }


### Abnormal status code
|**HTTP状态码**|**描述**|
|---|---|
|400|错误的请求,用来表示请求的参数不正确。|
|401|当前请求需要鉴权认证。|
|403|禁止当前操作。|
|404|请求的资源未被发现。|
|412|请求中的先决条件验证失败。|
|414|请求的URI超长,服务器拒绝处理请求。|
|500|内部服务器错误。|
|503|服务不可用。|

## Dns-Server

Mep has a programmable dns server which can perform the name resolution of the MEC applications. This management interface of the dns server is handled using a rest interface and this section cover the details of this interface.

### 1. Create new entry

DNS entry can be added using this interface. Once a record is added, the resource will be available for the device application to query. Using this interface multiple records for a zone can be submitted together.

**URL**

POST /mep/dns_server_mgmt/v1/rrecord


**Request parameters**

None

**Query parameters**
| Name          | Type                        | Description              | Required      |
| ------------- | --------------------------- | ------------------------ | ------------- |
| zone          | string                      | Zone name. Default is "." | Yes |

**Body Parameters**
| Name          | Type                        | Description              | Required      |
| ------------- | --------------------------- | ------------------------ | ------------- |
| name          | string                      | Domain name | Yes |
| type          | enum **{A, AAAA}**          | DNS resource type, A in case of Ipv4 and AAAA for Ipv6 | Yes |
| class         | enum **{IN}**               | Resource record class | Yes on create |
| ttl           | int (non-zero value)        | Record TTL value | Yes on create |
| rData         | list(string)                | IP Address list, Ip type must match with the **type** field | Yes on create |

**Example Request**

POST /mep/dns_server_mgmt/v1/rrecord?zone=”com.” [ { “name”: “www.example.com.”, “type”: “A”, “class”: “IN”, “ttl”: 30, “rData”: [ “172.168.15.101” ] } ]


**Return Parameters**

None

Return Code: 200 Success

**Example Response**

HTTP/1.1 200 Success


### 2. Modify the entry

DNS entry can be modified using this interface. Once a record is modified, the resource will be available for the device application to query. Using this interface multiple records for a zone can be submitted together.

**URL**

PUT /mep/dns_server_mgmt/v1/rrecord/{fqdn}/{rrtype}


**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| fqdn  | String | Fully Qualified Domain Name | path |  Yes   |
| rrtype      | String | Resource record type of the entry(A or AAAA). | path | Yes |

**Query parameters**
| Name          | Type                        | Description              | Required      |
| ------------- | --------------------------- | ------------------------ | ------------- |
| zone          | string                      | Zone name. Default is "." | Yes |

**Body Parameters**
| Name          | Type                        | Description              | Required      |
| ------------- | --------------------------- | ------------------------ | ------------- |
| name          | string                      | Domain name | Yes |
| type          | enum **{A, AAAA}**          | DNS resource type, A in case of Ipv4 and AAAA for Ipv6 | Yes |
| class         | enum **{IN}**               | Resource record class | Yes on create |
| ttl           | int (non-zero value)        | Record TTL value | Yes on create |
| rData         | list(string)                | IP Address list, Ip type must match with the **type** field | Yes on create |

**Example Request**

PUT /mep/dns_server_mgmt/v1/rrecord/www.example.com/A?zone=”com.” [ { “name”: “www.example.com.”, “type”: “A”, “class”: “IN”, “ttl”: 30, “rData”: [ “172.168.15.201” ] } ]


**Return Parameters**

None

Return Code: 200 Success

**Example Response**

HTTP/1.1 200 Success


### 2. Delete an entry

DNS entry can be deleted from the dns-server using this interface.

**URL**

DELETE /mep/dns_server_mgmt/v1/rrecord/{fqdn}/{rrtype}


**Query parameters**A
| Name          | Type                        | Description              | Required      |
| ------------- | --------------------------- | ------------------------ | ------------- |
| zone          | string                      | Zone name. Default is "." | Yes |

**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| fqdn  | String | Fully Qualified Domain Name | path |  Yes   |
| rrtype      | String | Resource record type of the entry(A or AAAA). | path | Yes |

**Body Parameters**

None

**Example Request**

DELETE /mep/dns_server_mgmt/v1/rrecord/www.example.com./A?zone=com.


**Return Parameters**

None

Return Code: 200 Success

**Example Response**

HTTP/1.1 200 Success

## MEP Agent
Mep agent is a component which run as side car with application. It helps to get authenticaion token, do service registration, send heartbeat on behalf of application.

#### 1. Get token
Applicaiontion can call this API to get authentication token from mepauth.
**URL**

GET /mep-agent/v1/token

**Request parameters**
 | **Name** | **Type** | **Description** | **IN** | **Required** |
 | --- | --- | --- | --- | --- |
 | Content-Type |   String  | MIME type, fill in "application/json"                        |               header  | Yes|

**Body Parameters**

None

**Example Request**

GET /mep-agent/v1/token

{ “header”: [ { “key”: “Content-Type”, “value”: “application/json” } ] }


**Return Parameters**

Return code: 200 OK
|Name     |       Type  |   Description   |               Required|
|---|---|---|---|
|access\_token |  String  | Token|                 Yes|
|token\_type     |String   |Token Type(Bearer)|   Yes|
|expires\_in    | int     | Expire time             | Yes|

**Example Response**:

HTTP/1.1 200 OK { “access_token”:”xxxx”, “token_type”:”Bearer”, “expires_in”:”3600” }


#### 2. Get producer endpoint by service name
Applicaiontion can call this API to get producer endpoint from mepserver.
**URL**

GET /mep-agent/v1/endpoint/:serName

**Request parameters**
 | **Name** | **Type** | **Description** | **IN** | **Required** |
 | --- | --- | --- | --- | --- |
 | Content-Type |  String  | MIME type, fill in "application/json"   | header  | Yes|
 | serName |  String  | service name   | path | Yes |

**Body Parameters**

None

**Example Request**

GET /mep-agent/v1/endpoint/serviceName

{ “header”: [ { “key”: “Content-Type”, “value”: “application/json” } ] }


**Return Parameters**

Return code: 200 OK
|Name     |       Type  |   Description   |  Required|
|---|---|---|---|
| endpoint |  Object  | endpoint | Yes|
|&gt;uris  | Array\[String\]|   URI格式的服务入口信息列表|  Yes|
|&gt;addresses | Array\[Object\] |  服务入口信息地址列表(IP地址+端口号)  | No|
|&gt;&gt;host   |         String      |      IP地址     |  No|
|&gt;&gt;port   |         String     |       端口号            |  No|
|&gt;alternative|        String     |       已实现格式或者外部规范定义的服务入口信息        | No|

**Example Response**

HTTP/1.1 200 OK { “endpoint”: { “uris”: [ “https://mep-api-gw.mep:8443/VideoService145da803354a611ebb15e” ], “addresses”: null, “alternative”: null } }


Dependency

MEP-auth third party usage list

Artifact

Version

github.com/agiledragon/gomonkey

v2.0.1

github.com/astaxie/beego

v1.12.0

github.com/dgrijalva/jwt-go/v4

v4.0.0-preview1

github.com/go-playground/validator/v10

v10.2.0

github.com/natefinch/lumberjack

v2.0.0

github.com/lib/pq

v1.7.0

github.com/sirupsen/logrus

v1.6.0

github.com/smartystreets/goconvey

v1.6.4

golang.org/x/crypto

v0.0.0-20200302210943-78000ba7a073

MEP-server third party usage list

Artifact

Version

github.com/agiledragon/gomonkey

v2.0.1

github.com/apache/servicecomb-service-center

v0.0.0-20191027084911-c2dc0caef706

github.com/astaxie/beego

v1.12.0

github.com/go-playground/validator/v10

v10.2.0

github.com/satori/go.uuid

v1.2.0

github.com/stretchr/testify

v1.6.1

golang.org/x/crypto

v0.0.0-20200302210943-78000ba7a073

golang.org/x/net

v0.0.0-20200301022130-244492dfa37a

Dns-server third party usage list

Artifact

Version

github.com/agiledragon/gomonkey

v2.0.1

github.com/labstack/echo/v4

v4.1.16

github.com/miekg/dns

v1.1.29

github.com/sirupsen/logrus

v1.6.0

github.com/stretchr/testify

v1.6.1

go.etcd.io/bbolt

v1.3.4

MEP-agent third party usage list

Artifact

Version

github.com/agiledragon/gomonkey

v2.0.1

github.com/astaxie/beego

v1.12.0

github.com/go-playground/validator/v10

v10.2.0

github.com/natefinch/lumberjack

v2.0.0

github.com/sirupsen/logrus

v1.6.0

github.com/smartystreets/goconvey

v1.6.4

github.com/stretchr/testify

v1.6.1

gopkg.in/yaml.v2

v2.2.8

Database Design

The MEP database uses an open source PostgreSQL database, only api gateway kong and mepauth use database, and the recommended version is 12.3.

  • AuthInfoRecord: Store Ak/Sk information.

    create table auth_info_record (
        app_ins_id  varchar(255) not null,
        ak  varchar(255) not null,
        sk  varchar(255) not null,
        nonce  varchar(255) not null,
        primary key (app_ins_id)
    );

How to Contribute Contribution

How to contribute

For more information, please refer to Code Warehouse

Contribution to mep-agent

This section provides details on how to participate/contribute to the mep-agent project.

Build local development environment

This section will guide developers to build mep-agent module locally and help developers to quickly under and develop code

  • Clone mep-agent code

  • Open folder by goland

  • Configure the runtime environment variables
    MEP_IP=192.168.100.177; MEP_APIGW_PORT=30443; AK=QVUJMSUMgS0VZLS0tLS0; SK=DXPb4sqElKhcHe07Kw5uorayETwId1JOjjOIRomRs5wyszoCR5R7AtVa28KT3lSc; APPINSTID=5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f; CA_CERT_DOMAIN_NAME=edgeegallery

  • Run main.go to start mep-agent

  • After start, can call the api by postman

User Management

User Overview

Introduction

User Management模块是为EdgeGallery项目提供用户管理的基本能力,包括用户注册/登录/权限认证等功能。为AppStore/开发者平台/MECM/ATP提供统一的用户鉴权和认证服务。

Deployment Relationship

The User-mgmt module consists primarily of four modules:

  • Portal: Provide an interface operation for login/logout

  • Auth-server: Provide JWT service for token generation for API interface access

  • User-mgmt: provides user account number management, including the ability to acquire/modify user information, password recovery, etc.

  • Mail: Provides a mailbox service

Relationship between User-mgmt and other modules

User-mgmt is a user management module for EdgeGallery:

  • Users first login to the EdgeGallery platform through User Management

  • User Management会给登录成功的用户签发AccessToken,用于后台API接口的访问,token默认超时时间12小时,token携带以下数据:

    • userId: Register the user ID

    • enableMail: Whether to open mailbox service

    • ssoSessionId: global SessionId, user single sign-on

    • userName: username

For detailed implementation of single sign-on, please refer to the section < Feature Design-Single sign-on >

Feature design

Feature Info

Feature Name

Feature description

Design constraints

User Registration

提供用户注册功能。注册时除提供必须的用户名外,还可以选择提供邮箱地址。建议填写邮箱地址,便于忘记密码后找回密码时进行验证。

注册时提供的用户名、邮箱地址必须是唯一的,如果已存在,则无法成功注册。为了方便用户注册,当前不对邮箱地址进行验证。

Single sign-on

可以通过用户名、邮箱地址登录各应用平台Portal。EdgeGallery采取单点登录方式(Single Sign On),即多个应用平台共用一个登录认证平台,一次登录就可以访问互相信任的其他应用系统。

目前单点登录系统适用于开发者平台(Developer Portal)、应用仓库(Application Store)、管理系统(MEC Manager)、应用测试认证平台(ATP Portal)。

User Center

After users log in to each application platform, they can enter the user center through “My Account”. You can view/modify personal information and modify passwords in the user center.

目前不支持修改用户名,只能修改邮箱地址。

Password recovery

如果用户注册时提供了真实有效的邮箱地址(或者在用户中心修改个人信息时提供),当忘记密码时可以通过邮箱地址重置密码以完成密码找回。通过邮箱地址找回密码时需要进行邮箱验证,验证通过后才可以重置密码。

只有当EdgeGallery平台开启了邮箱服务才可以通过邮箱地址找回密码

Guest Registration

The guest is a GUEST account built into the system, and it is automatically logged in when visiting the homepage. When a guest logs in, the user can view most of the functions of the system, but cannot create/delete/modify login operations in the system.

The default user name and password for the visitor is guest/gest. If you want to modify your password when deployed, please modify it by logging in to the database. If you want to disable the GUEST account, delete it directly from the database.

User List Management

The user management module defaults to a built-in admin user, who acts as the super administrator of the system. Provide the user with a unified user list management function, which can query users, enable/disable users, and set user role permissions.

When a user is disabled, the user cannot register; the role authority for the disabled user cannot be set.

Mailbox Verification

The system provides a service for sending verification code to a registered mailbox address, which is used for verifying the mailbox.

Only when the EdgeGallery platform opens the mailbox service to send the verification code to the mailbox

User Registration

用户注册时,除提供必须的用户名外,还可以选择提供邮箱地址。建议填写邮箱地址,便于忘记密码后找回密码时进行验证。

The system will be checked at the time of registration:

  1. The user name must be greater than 6 digits, and whether the username has been registered.

  2. if the mailbox address is provided, checking whether it meets the mailbox address of the format requirement, and checking whether the mailbox address has been registered.

  3. Graphic Digital Validation Code

User Registration Process Sequence Diagram

Single point entry

单点登录系统是基于ServiceComb、Spring Security、Oauth2、JWT、Vue等技术实现,采用OAuth2协议的授权码模式(authorization code)。MECM、AppStore、Developer、Atp应用平台作为客户端,与认证服务器user-mgmt-be进行交互,实现单点登陆与单点注销功能。使用Cookie+Session机制实现用户认证鉴权和超时退出功能,使用JWT存储用户基本信息,减轻认证服务器压力。

The processing time of single sign-on and single point cancellation is illustrated by the two application platforms of MECM and AppStore as an example.

Single sign-on sequence diagram

single sign-on time sequence diagram

User Center

After the user logs in to each application platform, it can enter the user centre through “My account number”.

In the user center, the user can check/modify personal information and modify the password.

目前不支持修改用户名,只能修改邮箱地址。

Password back.

Get the code back through the e-mail address.

The main interprocessing of the password is recovered by the email address after the user has forgotten the password:

  1. The user enters the mailbox address, completes the graphic digital verification, and then requests the verification code.The system determines whether the mailbox address is registered and, if it is registered, sends the verification code to the mailbox.If not registered, the prompt user mailbox address does not exist.

  2. The user inputs the received verification code and the new password, and returns to the login interface after the modification is successful.

recover the password processing time sequence diagram based on the mailbox address

Visitor Registration

Visitors are a GUEST account built in the system, which is automatically registered when the home page is accessed.

When logging in, the user can see most of the functions of the system, but cannot create/delete/modify the login operation in the system.

The default user name and password for the visitor is guest/gest. If you want to modify your password when deployed, please modify it by logging in to the database. If you want to disable the GUEST account, delete it directly from the database.

User list management

The user management module defaults to the built-in admin user as the super administrator of the system.

The system provides a uniform user list management function for the user, which can inquire the user, enable/disable the user and set the user role authority.

(1) When the user is disabled, the user will not be able to log in.
(2) The role permissions of disabled users cannot be set.

Mailbox Verification

It is necessary to send the verification code to the mailbox when validating the mailbox address, and it needs to open the mailbox service.

Opening the mailbox service requires modifying the configuration document application.properties under user-mgmt:

[mail.enabled=true] // mailbox service switch, default false

[spring.mail.host=] // mailbox server

[spring.mail.port=] // Mail server sends port of mail

[spring.mail.username=] // Mail sender

[spring.mail.mail.password=] // sender authorization code

interface design

User registration interface

User registration interface

Get the password back after you forget your password.

User Center Interface

(1) Main interface

(2) Modify Password

User list management interface

(1) Main interface

(2) setting up user roles

User Interfaces

1. AUTH

1.1 Registration

Registering a system

Before logging in, a graphical verification code is required to pass through the verifyCode parameter.

Resource URI: /login
Method: POST

Name

Definition

Type

Required

Describe

verifyCode

Graphics Validation Code

query

Yes.

username

用户名/邮箱

body

Yes.

password

Password.

body

Yes.

Example response:

response 200 OK
1.2 Access to current login user information

and obtaining the information of the current login user through the interface after the user login is successful.

Resource URI: /auth/login-info
Method: GET

Example response:

response 200 OK
{
  "username": "TestUser1",
  "mailAddress": "test@edgegallery.org",
  "createTime":"2021-02-24 04:39:23",
  "allowed": true,
  "userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
  "permissions": [
    {
      "platform": "APPSTORE",
      "role": "GUEST"
    }
  ]
}
1.3 Log out

Logout system

Resource URI: /auth/logout
Method: GET

Example response:

200 OK
Succeed
1.4 ObtainAccessToken

The northbound interface needs to be obtained through the interface before callingAccessToken。

Resource URI: /v1/accesstoken
Method: POST

Name

Definition

Type

Required

Describe

userFlag

用户名/邮箱

body

Yes.

password

Password.

body

Yes.

Example response:

response 200 OK.
{
  "userId": "xxxxx",
  "accessToken": "eyJhbGciOiJSUzI1NiIsInR5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

2 USER-MGMT

2.1 Registered users

registering the user interface, registering successfully returning 200 and returning the user information that has been registered successfully; the interface data is not fully returned to 400.

Before registration, a graphical verification code is required to pass through the verifyCode parameter.

Resource URI: /v1/users
Method: POST

Name

Definition

Type

Required

Describe

verifyCode

Graphics Validation Code

query

Yes.

username

User name

body

Yes.

Must be a combination of letters or letters and numbers, must start with a letter, between 6 and 30 characters in length

password

Password.

body

Yes.

Complexity requirements must be met, must be a combination of number/letter/t number characters, length between 6 and 18 characters

mailAddress

Mailbox Address

body

not

If completed, the format requirements of the mailbox address must be met

Example request:

{
  "username": "TestUser1",
  "mailAddress": "test@edgegallery.org",
  "password": "123.qwe"
}

Example response:

response 201 OK
{
  "username": "TestUser1",
  "mailAddress": "test@edgegallery.org",
  "userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
  "permissions": [
    {
      "platform": "APPSTORE",
      "role": "GUEST"
    }
  ]
}

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}

response 500 INTERNAL ERROR
{
  "code": 0,
  "message": "string"
}
2.2 Modify password (personal modification password & recover password)
  1. Personal password modification includes three scenarios:

the personal password is modified by the original password verification mode in the personal centre after the user is logged in.

(2) After the admin logs in for the first time, it is mandatory to change the personal default password

(3) The password of a non-guest user expires after more than 90 days, and it is mandatory to change the password after logging in

  1. 如果用户注册时提供了真实的邮箱地址(也可以在个人中心填写该信息),可以通过邮箱重置密码。需要开启邮件服务才能使用。

Resource URI: /v1/users/password
Method: PUT

Name

Definition

Type

Required

Describe

type

Modify the type of password

body

Yes.

1 – Password verification modification; 2 – password recovery

newPassword

New password after modification

body

Yes.

Complexity requirements must be met, must be a combination of number/letter/t number characters, length between 6 and 18 characters

oldPassword

original password

body

not

Required when type= 1

mailAddress

Mailbox Address

body

not

当type=2时,填写已经注册过的邮箱地址

verificationCode

Verification code

body

not

6 valid numbers.Required when type= 2

Example request:

{
  "type": 2,
  "newPassword": "123.qwe",
  "oldPassword": "",
  "mailAddress": "test@edgegallery.org",
  "verificationCode": "123456"
}

Example response:

response 200 OK

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}

response 500 INTERNAL ERROR
{
  "code": 0,
  "message": "string"
}
2.3 Check repeat user

判断用户名、邮箱地址是否已经注册过,不允许重复注册。

Resource URI: /v1/users/action/uniqueness
Method: POST

Name

Definition

Type

Required

Describe

username

User name

body

Yes.

Must be a combination of letters or letters and numbers, must start with a letter, between 6 and 30 characters in length

mailAddress

Mailbox Address

body

not

If completed, the format requirements of the mailbox address must be met

Example request:

{
  "username": "TestUser1",
  "mailAddress": "test@edgegallery.org"
}

Example response:

response 200 OK
{
    "username": true or false,
    "mailAddress": true or false
}
2.4 List of query users

List of user administrators

Resource URI: /v1/users/list
Method: POST
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin

Name

Definition

Type

Required

Describe

username

User name

body

not

User name keyword for fuzzy query conditions

mailAddress

Mailbox Address

body

not

Mailbox address keyword for fuzzy query conditions

role

characters

body

Yes.

ALL – All; ADMIN – Manager; TENANT – Tenant; GUEST – Visitors

status

state

body

Yes.

-1 – All; 0 – Disabled; 1 – Enable

createTimeBegin

Creation Time (i.e. Enrollment Time) Range – Initiation

body

not

From Time, Format: 2021-1-21

createTimeEnd

Creation Time (i.e. Enrollment Time) Range – Termination

body

not

Termination Time, Format: 2021-2-1

offset

Query starting position

body

Yes.

Paging control parameters, indicating the initial location of the query

limit

Query Records

body

Yes.

Paging control parameters that indicate the number of query records per page

sortBy

Sort field

body

not

Word name for sorting.USERNAME – Sort by username; CREATETIME – Sort by create (registration) time

sortOrder

Sort Order

body

not

Sort sequence.ASC – Ascending; DESC – Descending

Example request:

{
  "username": "",
  "mailAddress": "",
  "role": "",
  "status": -1,
  "createTimeBegin": "2021-1-21",
  "createTimeEnd": "2021-2-1",
  "queryCtrl": {
    "offset": 0,
    "limit": 10,
    "sortBy": "USERNAME",
    "sortOrder": "DESC"
  }
}

Example response:

response 200 OK
{
  "totalCount": 20,
  "userList": [
    {
      "username": "TestUser1",
      "mailAddress": "test@edgegallery.org",
      "userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
      "permissions": [
        {
          "platform": "APPSTORE",
          "role": "GUEST"
        }
      ],
      "allowed": true,
      "createTime": "2021-1-21 10:24:45"
    }
  ]
}

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}

response 500 INTERNAL SERVER ERROR
{
  "code": 0,
  "message": "string"
}
2.5 Delete user

The user administrator can delete any user based on the user ID

Resource URI: /v1/users/{userId}
Method: DELETE
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin

Name

Definition

Type

Required

Describe

userId

User ID

path

Yes.

uuid

Example request:


Example response:

response 200 OK

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}
2.6 Modifies user personal information

The user can modify the personal information and return the modified information.

Resource URI: /v1/users/{userId}
Method: PUT

Name

Definition

Type

Required

Describe

userId

User ID

path

Yes.

uuid

username

User name

body

Yes.

Must be a combination of letters or letters and numbers, must start with a letter, between 6 and 30 characters in length

mailAddress

Mailbox Address

body

not

If completed, the format requirements of the mailbox address must be met

Example request:

{
  "username": "TestUser1",
  "mailAddress": "test@edgegallery.org"
}

Example response:

response 200 OK
{
  "username": "TestUser1",
  "mailAddress": "test@edgegallery.org",
  "userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
  "permissions": [
    {
      "platform": "APPSTORE",
      "role": "GUEST"
    }
  ]
}

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}
2.7 Disable user

The user administrator can disable the user according to the user ID, wherein the user ID is the user ID of the non-built-in user.The user will not be able to register after disabling.

Resource URI: /v1/users/status/{userId}/disallow
Method: PUT
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin

Name

Definition

type

Required

Describe

userId

User ID

path

Yes.

uuid

Example request:


Example response:

response 200 OK

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}
2.8 Enable users

The user administrator can enable the user according to the user ID, wherein the user ID is the user ID of the non-built-in user.

Resource URI: /v1/users/status/{userId}/disallow
Method: PUT
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin

Name

Definition

Type

Required

Describe

userId

User ID

path

Yes.

uuid

Example request:


Example response:

response 200 OK

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}
2.9 User roles are set

The user administrator can set the role and the accessible platform thereof according to the user ID.

Resource URI: /v1/users/settings/{userId}
Method: PUT
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin

Name

Definition

Type

Required

Describe

userId

User ID

path

Yes.

uuid

platform

Access platform

body

Yes.

User accessible platform

role

characters

body

Yes.

The role of the user

Example request:

{
  "permissions": [
    {
      "platform": "APPSTORE",
      "role": "GUEST"
    }
  ]
}

Example response:

response 200 OK

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 403 FORBIDDEN
{
  "code": 0,
  "message": "string"
}

3 IDENTITY

3.1 获取邮件验证码

Send the verification code to the designated mailbox, send a successful return 200, and send the failure back to 417.

It is necessary to obtain the graphical verification code before sending the message verification code, which is passed through the verifyCode parameter.

Resource URI: /v1/identity/mail
Method: POST

Name

Definition

Type

Required

Describe

verifyCode

Graphics Validation Code

query

Yes.

mailAddress

Mailbox Address

body

Yes.

Mailbox address to receive verification code

Example request:

{
  "mailAddress": "test@edgegallery.org"
}

Example response:

response 200 OK

response 400 Bad Request
{
  "code": 0,
  "message": "string"
}

response 417 Expectation Failed
{
  "code": 0,
  "message": "string"
}
3.2 获取图形验证码

Get picture data stream with verification code

Resource URI: /v1/identity/verifycode-image
Method: GET
  • The interface does not take any request parameters and returns the binary picture data stream

  • Validation is valid in 3 minutes

3.3 预校验图形验证码正确性

pre-checking if the verification code input by the user is correct

Resource URI: /v1/identity/verifycode-image/precheck
Method: GET

Name

Definition

Type

Required

Describe

verifyCode

Graphics Validation Code

query

Yes.

Example response:

response 200 OK
{
  "checkResult": true
}

Database design

tbl_tenant tenant table

Record all the tenant information.

Field

Type

Main key

Description

tenantid

string

key

Master Key

username

string

-

The user name at the time of registration requires uniqueness.[5-29] between characters

password

string

-

when registering, the password needs to satisfy the password complexity requirement, satisfying the combination of the number/letter/special character at least two or more, [6-18] characters.Password in database is stored after using PBKDF2 plus salt value

company

string

-

User Company Name

telephonenumber

string

-

the mobile phone number of the user is used for verifying the user identity when the password is recovered, and the 11-bit effective number must be satisfied

mailaddress

string

-

User email address, which is used to verify the user identity when the password is recovered and must be in a valid mailbox format

gender

string

-

User Gender

isallowed

boolean

-

Is the account allowed to be registered

createtime

timestamp

-

Creation time (i.e. registration time)

modifytime

timestamp

-

Modify Time

pweffecttime

timestamp

-

Password effective time

Initial value:

               tenantid               |    username    |                                     password                                     | company | telephonenumber | mailaddress | gender | isallowed | createtime | modifytime | pweffecttime
--------------------------------------+----------------+----------------------------------------------------------------------------------+---------+-----------------+--------+-----------
 de3565b1-a7c2-42b9-b281-3f032af29ff7 | guest          | 59756fda85ebddee6024d5cc0e6edcde3226693257a9c1eb662c56426b8a4f232b3d56c321adbd91 | company | 13800000000     | 13800000000@edgegallery.org | 1      | t | 初始数据入库时间(now函数值) | 初始数据入库时间(now函数值) | NULL
 39937079-99fe-4cd8-881f-04ca8c4fe09d | admin          | 472645ad1af0101adaa6769cc865fec3b29fedeba6dc912900a59b1364b7a6bb17bb9a0575854547 | company | 13800000001     | 13800000001@edgegallery.org | 1      | t | 初始数据入库时间(now函数值) | 初始数据入库时间(now函数值) | 初始数据入库时间(now函数值)往前推10年的时间

The default password for the guest account is:guest
The default password for the admin account is:Admin@321
对于admin用户,首次登录后会强制修改默认密码。
对于非guest用户,密码超过90天后过期,登录时会强制修改密码。

tbl_role user role table

configuration supported platform and user role, the table initializes at startup and does not support dynamic addition

field

type

Master Key

describe

id

string

key

Master Key

platform

string

-

Platform supported

role

string

-

Role definition supported

Initial value:

 id | platform  |  role
----+-----------+--------
  1 | APPSTORE  | GUEST
  2 | APPSTORE  | TENANT
  3 | APPSTORE  | ADMIN
  4 | DEVELOPER | GUEST
  5 | DEVELOPER | TENANT
  6 | DEVELOPER | ADMIN
  7 | MECM      | GUEST
  8 | MECM      | TENANT
  9 | MECM      | ADMIN
  10 | ATP      | GUEST
  11 | ATP      | TENANT
  12 | ATP      | ADMIN
  13 | LAB      | GUEST
  14 | LAB      | TENANT
  15 | LAB      | ADMIN

Description:

  • APPSTORE: Application of warehouse platform

  • DEVELOPER: Application development integration platform

  • MECM:MEC management platform

  • ATP: application authentication test platform

  • LAB: Laboratory Management Platform

tbl_tenant_role relationship table

Relationship to describe tenants and roles

field

type

Master Key

describe

tenantid

string

Tenant ID

roleid

string

Role Id

Initial value:

               tenantid               | roleid 
--------------------------------------+--------
 de3565b1-a7c2-42b9-b281-3f032af29ff7 |      1
 de3565b1-a7c2-42b9-b281-3f032af29ff7 |      4
 de3565b1-a7c2-42b9-b281-3f032af29ff7 |      7
 de3565b1-a7c2-42b9-b281-3f032af29ff7 |     10
 de3565b1-a7c2-42b9-b281-3f032af29ff7 |     13
 39937079-99fe-4cd8-881f-04ca8c4fe09d |      3
 39937079-99fe-4cd8-881f-04ca8c4fe09d |      6
 39937079-99fe-4cd8-881f-04ca8c4fe09d |      9
 39937079-99fe-4cd8-881f-04ca8c4fe09d |     12
 39937079-99fe-4cd8-881f-04ca8c4fe09d |     15

Contrast with the initialization data of tbl_tenant,
de3565b1-a7c2-42b9-b281-3f032af29ff7It is a guest user and has the GUEST role of each platform by default;
39937079-99fe-4cd8-881f-04ca8c4fe09dIt is an admin user and has the ADMIN role of each platform by default;

How to contribute

For more information, please refer to Code Warehouse

Kubernetes NodePort List

Component

Pod Name

Service Name

Node Port

Internal Port

appstore-be

appstore-be-0

appstore-be-svc

ClusterIP

8099

appstore-fe

appstore-fe

appstore-fe-svc

30091

8443

appstore-be-postgres

appstore-be-postgres-0

appstore-be-postgres-svc

ClusterIP

5432

developer-be

developer-be-0

N/A

N/A

N/A

developer-fe

developer-fe

developer-fe-svc

30092

8443

developer-be-postgres

developer-be-postgres-0

developer-be-postgres-svc

ClusterIP

5432

file-system

file-system

file-system-svc

30100

9500

user-mgmt-postgres

user-mgmt-postgres

user-mgmt-postgres

ClusterIP

5432

healthcheck

healthcheck

healthcheck-svc

6379

9527

healthcheck-m

healthcheck-m

healthcheck-m-svc

30205

9529

user-mgmt

user-mgmt

user-mgmt-svc

30067

8067

user-mgmt-postgres

user-mgmt-postgres-0

user-mgmt-postgres-svc

ClusterIP

5432

user-mgmt-redis

user-mgmt-redis-0

user-mgmt-redis-svc

ClusterIP

6379

service-center

service-center

service-center

ClusterIP

30100

mecm-fe

mecm-fe

mecm-fe-svc

30093

8443

mecm-appo

mecm-appo

mecm-appo-svc

30201

8091

mecm-apm

mecm-apm

mecm-apm-svc

30202

8092

mecm-inventory

mecm-inventory

mecm-inventory-svc

30203

8093

mecm-north

mecm-north

mecm-north-svc

30303

8102

mecm-applcm-controller

mecm-applcm-controller

mecm-applcm-controller-svc

30204

8094

mecm-resource-controller

mecm-resource-controller

mecm-resource-controller-svc

31952

8098

mecm-applcm-k8splugin

mecm-applcm-k8splugin

mecm-applcm-k8splugin-svc

30205

8095

mepserver

mepserver-deploy

mepserver-service

ClusterIP

8080

mepauth

mepaauth-deploy

mepaauth-service

ClusterIP

8088

kong-apigw

apigw-kongy

kong-service

30443

8443

mep-postgre-db

pg-deploy

pg-service

ClusterIP

5432

ServiceComb NodePort List

Component

Service Name

REST Port

Spring Server Port (default 8080)

appstore-be

mec-appstore

8099

8099

appstore-fe

appstore-fe

8080

8443

developer-be

mec-developer

9082

9082

developer-fe

developer-fe

8080

8443

user-mgmt

user-mgmt-be

8067

8067

user-mgmt-fe

user-mgmt-fe

8080

8443

All services registered to the service center