Global System for Mobile Communications Application API

Application and Application Instance Lice Cycle Management

Documentation

📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/CallForwardingSignal/r1.3/code/API_definitions/call-forwarding-signal.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/DeviceStatus/r1.3/code/API_definitions/device-roaming-status.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/KnowYourCustomer/r1.3/code/API_definitions/kyc-match.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/NumberVerification/r1.3/code/API_definitions/number-verification.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/OTPValidation/r1.2/code/API_definitions/one-time-password-sms.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/SimSwap/r1.3/code/API_definitions/sim-swap.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/DeviceLocation/r1.2/code/API_definitions/location-verification.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/DeviceLocation/r1.2/code/API_definitions/geofencing-subscriptions.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/DeviceLocation/r1.2/code/API_definitions/location-retrieval.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/PopulationDensityData/r1.2/code/API_definitions/population-density-data.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/QualityOnDemand/r1.2/code/API_definitions/quality-on-demand.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/ConnectivityInsights/r1.2/code/API_definitions/connectivity-insights.yaml&nocors
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/ConnectivityInsights/r1.2/code/API_definitions/connectivity-insights-subscriptions.yaml&nocors
📖
Documentation
https://github.com/camaraproject/ShortMessageService/blob/6fd0ff0e79a3e26244e5f026c8e40260b0a47494/documentation/API_documentation/Text_SMS_User_Story.md
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/HomeDevicesQoD/r1.2/code/API_definitions/home-devices-qod.yaml&nocors
📖
Documentation
https://github.com/camaraproject/SimpleEdgeDiscovery/blob/main/documentation/API_documentation/SimpleEdgeDiscovery_User_Story.md
📖
Documentation
https://github.com/camaraproject/EdgeCloud/blob/main/documentation/API_documentation/Simple_Edge_Discovery_API_Readiness_Checklist.md
📖
Documentation
https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/camaraproject/CarrierBillingCheckOut/r1.3/code/API_definitions/carrier-billing.yaml&nocors

Specifications

SDKs

Other Resources

🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Call Forwarding Signal API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/35240-bd9acd12-585e-4c28-ba61-6ee7a91f55d0
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Device Roaming Status/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/wgatuug/gsma-camara-project-device-roaming-status
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Know Your Customer Match/bruno.json
🔗
PostmanCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/none
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Number Verification/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/lvrdn91/gsma-camara-project-number-verification
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project One Time Password SMS/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/lm2bnug/gsma-camara-project-one-time-password-sms
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project SIM Swap API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/1ohhvf0/gsma-camara-project-sim-swap-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project SIM Swap Notification Subscription API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/t35i4sr/gsma-camara-project-sms-delivery-notification-subscription-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Device Location Verification API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/35240-23a17d7b-07a0-405e-896b-6c4f3f4cc8c6
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Device Geofencing Subscriptions API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/lddca5b/gsma-camara-project-device-geofencing-subscriptions-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Device Location Retrieval API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/2un0g1u/gsma-camara-project-device-location-retrieval-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Population Density Data/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/lwfh4b3/gsma-camara-project-population-density-data
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Quality on Demand API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/35240-a139bda5-4882-455b-83a2-2e3ea7bcb16f
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Connectivity Insights API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/0jyjgn6/gsma-camara-project-connectivity-insights-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Connectivity Insights Subscriptions API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/odjfucf/gsma-camara-project-connectivity-insights-subscriptions-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Application Profiles API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/ryw6hox/gsma-camara-project-application-profiles-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project SMS API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/im7p4j1/gsma-camara-project-sms-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project SMS Delivery Notification Subscription API/bruno.json
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Home Devices QoD/bruno.json
🔗
PostmanCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/nhttps://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/dedffqb/gsma-camara-project-home-devices-qodone
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Simple Edge Discovery/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/5ze8wkz/gsma-camara-project-simple-edge-discovery
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Traffic Influence API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/1tmj16r/gsma-camara-project-traffic-influence-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Application Endpoint Discovery API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/tomzja8/gsma-camara-project-application-endpoint-discovery-api
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Edge Application Management API/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/35240-981545ec-b150-47da-a448-59c92b127a05
🔗
BrunoCollection
https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/bruno/GSMA Camara Project Carrier Billing/bruno.json
🔗
PostmanCollection
https://www.postman.com/api-evangelist/global-system-for-mobile-communications-gsma/collection/0m2sok6/gsma-camara-project-carrier-billing

OpenAPI Specification

global-system-for-mobile-communications-application-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Global System for Mobile Communications GSMA Camara Project Endpoint Discovery Application API
  version: 0.1.0-wip
  description: The Application Discovery API extends beyond the capabilities of the Simple Edge Discovery API by not only locating the nearest Edge Cloud Zone but also directly linking to the application endpoints within those Edge Cloud Zones.
  contact:
    email: sp-edc@lists.camaraproject.org
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: '{apiRoot}/{basePath}'
  variables:
    apiRoot:
      default: https://localhost:443
      description: API root.
    basePath:
      default: application-endpoint-discovery/vwip
      description: Base path for the Application Endpoint Discovery.
tags:
- name: Application
  description: Application and Application Instance Lice Cycle Management
paths:
  /apps:
    post:
      security:
      - openId:
        - edge-application-management:apps:write
      tags:
      - Application
      summary: Global System for Mobile Communications Submit application metadata to the Edge Cloud Provider.
      description: 'Contains the information about the application to be

        instantiated in the Edge Cloud

        '
      operationId: submitApp
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      requestBody:
        description: 'The Application Provider request contains mandatory

          criteria (e.g. required CPU, memory, storage, bandwidth) and

          optional parameters.

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppManifest'
        required: true
      responses:
        '201':
          description: Application created successfully
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubmittedApp'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
              example:
                status: 409
                code: CONFLICT
                message: App already exists
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
    get:
      security:
      - openId:
        - edge-application-management:apps:read
      tags:
      - Application
      summary: Global System for Mobile Communications Retrieve a list of existing Applications
      description: 'Get the list of all existing Application definitions from the

        Edge Cloud Provider that the user has permission to view.

        '
      operationId: getApps
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      responses:
        '200':
          description: List of existing applications
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AppManifest'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /apps/{appId}:
    get:
      security:
      - openId:
        - edge-application-management:apps:read
      tags:
      - Application
      summary: Global System for Mobile Communications Retrieve the information of an Application
      description: 'Ask the Edge Cloud Provider the information for a given application

        '
      operationId: getApp
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      - name: appId
        description: 'A globally unique identifier associated with the

          application.

          Edge Cloud Provider generates this identifier when the application

          is submitted.

          '
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/AppId'
      responses:
        '200':
          description: Information of Application
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator'
          content:
            application/json:
              schema:
                type: object
                properties:
                  appManifest:
                    $ref: '#/components/schemas/AppManifest'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
    delete:
      security:
      - openId:
        - edge-application-management:apps:delete
      tags:
      - Application
      summary: Global System for Mobile Communications Delete an Application from an Edge Cloud Provider
      description: Delete all the information and content related to an Application
      operationId: deleteApp
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      - name: appId
        in: path
        description: 'Identificator of the application to be

          deleted provided by the Edge Cloud Provider

          once the submission was successful

          '
        required: true
        schema:
          $ref: '#/components/schemas/AppId'
      responses:
        '202':
          description: Request accepted
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator'
        '204':
          description: App deleted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
              example:
                status: 409
                code: CONFLICT
                message: App with a running application instance cannot be deleted
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /appinstances:
    post:
      security:
      - openId:
        - edge-application-management:instances:write
      tags:
      - Application
      summary: Global System for Mobile Communications Instantiation of an Application
      description: 'Ask the Edge Cloud Platform to instantiate an application to one

        or several Edge Cloud Zones with an Application as an input and an

        Application Instance as the output.

        '
      operationId: createAppInstance
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      requestBody:
        description: 'The Application ID and the array of Edge Cloud Zones to deploy

          it to.

          '
        content:
          application/json:
            schema:
              type: object
              required:
              - appId
              - appZones
              properties:
                appId:
                  $ref: '#/components/schemas/AppId'
                appZones:
                  $ref: '#/components/schemas/AppZones'
        required: true
      responses:
        '202':
          description: Application instantiation accepted
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator'
            Location:
              description: Contains the URI of the newly created application.
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  appInstances:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppInstanceInfo'
                minItems: 1
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInfo'
              example:
                status: 409
                code: CONFLICT
                message: Application already instantiated in the given Edge Cloud Zone or Edge Cloud Region
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
    get:
      security:
      - openId:
        - edge-application-management:instances:read
      tags:
      - Application
      summary: Global System for Mobile Communications Retrieve the information of Application Instances for a given App
      description: 'Ask the Edge Cloud Provider the information of the instances for a

        given application

        '
      operationId: getAppInstance
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      - name: appId
        description: 'A globally unique identifier associated with

          the application.

          Edge Cloud Provider generates this identifier when the

          application is submitted.

          '
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/AppId'
      - name: appInstanceId
        description: 'A globally unique identifier associated with a running

          instance of an application within an specific Edge Cloud Zone.

          Edge Cloud Provider generates this identifier.

          '
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/AppInstanceId'
      - name: region
        description: 'Human readable name of the geographical Edge Cloud Region of

          the Edge Cloud. Defined by the Edge Cloud Provider.

          '
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/EdgeCloudRegion'
      responses:
        '200':
          description: Information of Application Instances
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator'
          content:
            application/json:
              schema:
                type: object
                properties:
                  appInstanceInfo:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppInstanceInfo'
                minItems: 1
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /appinstances/{appInstanceId}:
    delete:
      security:
      - openId:
        - edge-application-management:instances:delete
      tags:
      - Application
      summary: Global System for Mobile Communications Terminate an Application Instance
      description: 'Terminate a running instance of an application within

        an Edge Cloud Zone

        '
      operationId: deleteAppInstance
      parameters:
      - $ref: '#/components/parameters/x-correlator'
      - name: appInstanceId
        in: path
        description: 'Identificator of the specific application instance

          that will be terminated

          '
        required: true
        schema:
          $ref: '#/components/schemas/AppInstanceId'
      responses:
        '202':
          description: 'Request accepted to be processed. It applies for async

            deletion process

            '
          headers:
            x-correlator:
              $ref: '#/components/headers/x-correlator'
        '204':
          description: Application Instance Deleted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
components:
  schemas:
    RequiredResources:
      description: 'Fundamental hardware requirements to be provisioned by the

        Application Provider.

        '
      oneOf:
      - $ref: '#/components/schemas/KubernetesResources'
      - $ref: '#/components/schemas/VmResources'
      - $ref: '#/components/schemas/ContainerResources'
      - $ref: '#/components/schemas/DockerComposeResources'
      discriminator:
        propertyName: infraKind
        mapping:
          kubernetes: '#/components/schemas/KubernetesResources'
          virtualMachine: '#/components/schemas/VmResources'
          container: '#/components/schemas/ContainerResources'
          dockerCompose: '#/components/schemas/DockerComposeResources'
    Uri:
      type: string
      example: https://charts.bitnami.com/bitnami/helm/example-chart:0.1.0
      description: 'A Uniform Resource Identifier (URI) as per RFC 3986,

        identifies the endpoint within an Edge Cloud Zone where the user

        equipment may connect to the selected application instance

        '
    EdgeCloudRegion:
      type: string
      description: 'Human readable name of the geographical Edge Cloud Region of

        the Edge Cloud. Defined by the Edge Cloud Provider.

        '
    EdgeCloudZoneId:
      type: string
      format: uuid
      description: 'Unique identifier created by the Edge Cloud Platform to identify an

        Edge Cloud Zone within an Edge Cloud.

        '
    EdgeCloudProvider:
      type: string
      description: Human readable name of the Edge Cloud Provider.
    Fqdn:
      type: string
      description: 'Full qualified domain name of an application instance

        '
    AppManifest:
      description: 'Application information and requirements provided by the

        Application Provider

        '
      properties:
        appId:
          $ref: '#/components/schemas/AppId'
        name:
          type: string
          pattern: ^[A-Za-z][A-Za-z0-9_]{1,63}$
          description: Name of the application.
        appProvider:
          $ref: '#/components/schemas/AppProvider'
        version:
          type: string
          description: Application version information
        packageType:
          description: Format of the application image package
          type: string
          enum:
          - QCOW2
          - OVA
          - CONTAINER
          - HELM
        operatingSystem:
          $ref: '#/components/schemas/OperatingSystem'
        appRepo:
          description: 'Repository where Application Provider stores the application image

            '
          type: object
          required:
          - type
          - imagePath
          properties:
            type:
              type: string
              enum:
              - PRIVATEREPO
              - PUBLICREPO
              description: 'Application repository and image URI information.

                PUBLICREPO is used of public urls like github, helm repo etc.

                PRIVATEREPO  is used for private repo managed by the application

                developer. Private repo can be accessed by using the app

                developer provided userName and password. Password is

                recommended to be the personal access token created by developer

                e.g. in Github repo.

                '
            imagePath:
              $ref: '#/components/schemas/Uri'
            userName:
              type: string
              description: 'Username to acces the Helm chart, docker-compose

                file or VM image repository

                '
            credentials:
              type: string
              maxLength: 128
              description: 'Password or personal access token created by

                developer to acces the app repository. API users can generate

                a personal access token e.g. docker clients to use them as

                password.

                '
            authType:
              type: string
              enum:
              - DOCKER
              - HTTP_BASIC
              - HTTP_BEARER
              - NONE
              description: 'The credentials can also be formatted as a Basic

                auth or Bearer auth in HTTP "Authorization" header.

                '
            checksum:
              type: string
              description: 'MD5 checksum for VM and file-based images, sha256

                digest for containers

                '
        requiredResources:
          $ref: '#/components/schemas/RequiredResources'
        componentSpec:
          description: 'Information defined in "appRepo" point to the application

            descriptor e.g. Helm chart, docker-compose yaml file etc.

            The descriptor may contain one or more containers and their

            associated meta-data. A component refers to additional details

            about these containers to expose the instances of the containers

            to external client applications. App provider can define one or

            more components (via the associated network port) in componentSpec

            corresponding to the containers in helm charts or docker-compose

            yaml file as part of app descriptors.

            '
          type: array
          items:
            type: object
            required:
            - componentName
            - networkInterfaces
            properties:
              componentName:
                type: string
                description: Component name must be unique with an application
              networkInterfaces:
                description: 'Each application component exposes some ports

                  either for external users or for inter component

                  communication.

                  Application provider is required to specify which ports are

                  to be exposed and the type of traffic that will flow through

                  these ports.The underlying platform may assign a dynamic port

                  against the "extPort" that the application clients will use

                  to connect with edge application instance.

                  '
                type: array
                items:
                  type: object
                  required:
                  - interfaceId
                  - protocol
                  - port
                  - visibilityType
                  properties:
                    interfaceId:
                      type: string
                      pattern: ^[A-Za-z][A-Za-z0-9_]{3,31}$
                      description: 'Each Port and corresponding traffic protocol

                        exposed by the component is identified by a name.

                        Application client on user device requires this to

                        uniquley idenify the interface.

                        '
                    protocol:
                      type: string
                      enum:
                      - TCP
                      - UDP
                      - ANY
                      description: 'Defines the IP transport communication

                        protocol i.e., TCP, UDP or ANY

                        '
                    port:
                      type: integer
                      format: int32
                      minimum: 1
                      maximum: 65535
                      description: 'Port number exposed by the component.

                        Edge Cloud Provider may generate a dynamic port

                        towards the component instance which forwards

                        external traffic to the component port.

                        '
                    visibilityType:
                      description: 'Defines whether the interface is exposed

                        to outer world or not i.e., external, or internal.

                        If this is set to "external", then it is  exposed

                        to external applications otherwise it is exposed

                        internally to edge application components within

                        edge cloud. When exposed to external world,

                        an external dynamic port is assigned for UC traffic

                        and mapped to the extPort

                        '
                      type: string
                      enum:
                      - VISIBILITY_EXTERNAL
                      - VISIBILITY_INTERNAL
                minItems: 1
      required:
      - name
      - version
      - appProvider
      - packageType
      - appRepo
      - requiredResources
      - componentSpec
    AppZones:
      description: 'Collection of Edge Cloud Zones and/or Kubernetes cluster reference

        where the Application Provider wants to instantiate the application.

        '
      type: array
      items:
        type: object
        properties:
          kubernetesClusterRef:
            $ref: '#/components/schemas/KubernetesClusterRef'
          EdgeCloudZone:
            $ref: '#/components/schemas/EdgeCloudZone'
      required:
      - EdgeCloudZone
      minItems: 1
      additionalProperties: false
    AppInstanceInfo:
      description: Information about the application instance.
      type: object
      properties:
        appInstanceId:
          $ref: '#/components/schemas/AppInstanceId'
        status:
          description: Status of the application instance (default is 'unknown')
          type: string
          enum:
          - ready
          - instantiating
          - failed
          - terminating
          - unknown
          default: unknown
        componentEndpointInfo:
          description: 'Information about the IP and Port exposed by the

            Edge Cloud Platform.

            Application Client shall use these access points to reach this

            application instance

            '
          type: array
          items:
            type: object
            required:
            - interfaceId
            - accessPoints
            properties:
              interfaceId:
                type: string
                pattern: ^[A-Za-z0-9][A-Za-z0-9_]{6,30}[A-Za-z0-9]$
                description: 'This is the interface Identifier that Application Provider

                  defines when application is being submitted.

                  '
              accessPoints:
                $ref: '#/components/schemas/AccessEndpoint'
          minItems: 1
        kubernetesClusterRef:
          $ref: '#/components/schemas/KubernetesClusterRef'
        edgeCloudZone:
          $ref: '#/components/schemas/EdgeCloudZone'
    KubernetesClusterRef:
      description: 'A global unique identifier associated with a Kubernetes cluster

        infrastructure.

        '
      type: string
      format: uuid
      example: 642f6105-7015-4af1-a4d1-e1ecb8437abc
    AccessEndpoint:
      type: object
      description: 'Application Endpoint for an especific instance that is

        running in an specific Edge Cloud Zone.

        '
      required:
      - port
      anyOf:
      - required:
        - fqdn
      - required:
        - ipv4Addresses
      - required:
        - ipv6Addresses
      properties:
        port:
          $ref: '#/components/schemas/Port'
        fqdn:
          $ref: '#/components/schemas/Fqdn'
        ipv4Addresses:
          description: IP version 4 of an application instance
          type: array
          items:
            $ref: '#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6Addresses:
          description: IP version 6 of an application instance.
          type: array
          items:
            $ref: '#/components/schemas/Ipv6Addr'
          minItems: 1
    EdgeCloudZoneStatus:
      description: Status of the Edge Cloud Zone (default is 'unknown')
      type: string
      enum:
      - active
      - inactive
      - unknown
      default: unknown
    Vcpu:
      type: string
      pattern: ^\d+((\.\d{1,3})|(m))?$
      description: 'Number of vcpus in whole (i.e 1), decimal (i.e 0.500) up to

        millivcpu, or millivcpu (i.e 500m) format.

        '
      example: 500m
    K8sNetworking:
      description: 'Kubernetes networking definition

        '
      type: object
      properties:
        primaryNetwork:
          description: Definition of Kubernetes primary Network
          type: object
          properties:
            provider:
              description: CNI provider name
              type: string
              example: cilium
            version:
              description: CNI provider version
              type: string
              example: '1.13'
        additionalNetworks:
          description: Additional Networks for the Kubernetes cluster.
          type: array
          items:
            type: object
            description: Additional network interface definition
            properties:
              name:
                description: Additional Network Name
                type: string
                example: net1
              interfaceType:
                description: "Type of additional Interface:\nnetdevice: (SR-IOV) A regular kernel network device in the\n           Network Namespace (netns) of the container\nvfio-pci: (SR-IOV) A PCI network interface directly mounted\n          in the container\ninterface: Additional interface to be used by cni plugins\n           such as macvlan, ipvlan\nNote: The use of SR-IOV interfaces automatically\nconfigure the required kernel parameters for the nodes.\n"
                type: string
                example: vfio-pci
                enum:
                - netdevice
                - vfio-pci
                - interface
    Ipv6Addr:
      type: string
      format: ipv6
      example: 2001:db8:85a3:8d3:1319:8a2e:370:7344
      description: 'IP of the device. A single IPv6 address, following IETF 5952

        format, may be specified like 2001:db8:85a3:8d3:1319:8a2e:370:7344

        '
    AdditionalStorage:
      description: Additional storage for the application.
      type: array
      items:
        type: object
        required:
        - storageSize
        - mountPoint
        properties:
          name:
            type: string
            description: Name of additional storage resource.
            example: logs
          storageSize:
            type: string
            description: Additional persistent volume for the application.
            example: 80GB
            pattern: ^\d+(GB|MB)$
          mountPoint:
            type: string
            description: Location of additional storage resource.
            example: /logs
    EdgeCloudZoneName:
      type: string
      description: 'Human readable name of the geographical zone of

        the Edge Cloud. Defined by the Edge Cloud Provider.

        '
    DockerComposeResources:
      description: Definition of Docker Compose Infrastructure
      type: object
      required:
      - infraKind
      - numCPU
      - memory
      properties:
        infraKind:
          description: Type of infrastructure for the application.
          type: string
          example: dockerCompose
          enum:
          - dockerCompose
        numCPU:
          type: integer
          description: 'Number of vcpus in whole (i.e 1)

            '
          example: 1
        memory:
          type: integer
          example: 1024
          description: Memory in mega bytes
        storage:
          $ref: '#/components/schemas/AdditionalStorage'
        gpu:
          $ref: '#/components/schemas/GpuInfo'
    Ipv4Addr:
      type: string
      format: ipv4
      example: 192.168.0.1
      description: 'IP of the device. A single IPv4 address may be specified in

        dotted-quad form 1.2.3.4. Only this exact IP number will match the flow

        control rule.

        '
    K8sAddons:
      description: 'Addons for the Kubernetes cluster.

        Additional addons should be defined in application the helm chart

        (Service Mesh, Serverless, AI).

        '
      type: object
      properties:
        monitoring:
          type: boolean
          example: true
          default: false
          description: Enable monitoring for Kubernetes cluster.
        ingress:
          type: boolean
          example: true
          default: false
          description: Enable ingress for Kubernetes cluster.
    ErrorInfo:
      type: object
      description: Information about the error
      properties:
        status:
          type: integer
          description: HTTP status code returned along with this error response
        code:
          type: string
          description: Code given to this error
        message:
          type: string
          description: Detailed error description
      required:
      - status
      - code
      - message
    AppId:
      type: string
      format: uuid
      description: 'A globally unique identifier associated with the application.

        Edge Cloud Platform generates this identifier when the

        Application is submitted.

        '
    AppInstanceId:
      type: string
      format: uuid
      description: 'A globally unique identifier associated with a running

        instance of an application.

        Edge Cloud Platform generates this identifier when the

        instantiation in the Edge Cloud Zone is successful.

        '
    GpuInfo:
      type: object
      description: Information about the supported GPUs
      required:
      - gpuMemory
      - numGPU
      properties:
        gpuMemory:
          type: integer
          description: GPU memory in mega bytes
        numGPU:
          type: integer
          description: Number of GPUs
    EdgeCloudZone:
      type: object
      description: 'An Edge Cloud Zone, uniquely identified by a

        combination of the value of the Edge Cloud Zone Id object

        and the value of the Edge Cloud Provider

        object. This value is used to identify an Edge Cloud zone

        between Edge Clouds from different Edge Cloud Providers.

        '
      required:
      - edgeCloudZoneId
      - edgeCloudZoneName
      - edgeCloudProvider
      properties:
        edgeCloudZoneId:
          $ref: '#/components/schemas/EdgeCloudZoneId'
        edgeCloudZoneName:
          $ref: '#/components/schemas/EdgeCloudZoneName'
        edgeCloudZoneStatus:
          $ref: '#/components/schemas/EdgeCloudZoneStatus'
        edgeCloudProvider:
          $ref: '#/components/schemas/EdgeCloudProvider'
        edgeCloudRegion:
          $ref: '#/components/schemas/EdgeCloudRegion'
      minItems: 1
    ContainerResources:
      description: Container Infrastructure Definition
      type: object
      required:
      - infraKind
      - numCPU
      - memory
      properties:
        infraKind:
          description: Type of infrastructure for the application.
          type: string
          example: container
          enum:
          - container
        numCPU:
          $ref: '#/components/schemas/Vcpu'
        memory:
          type: integer
          example: 1024
          description: Memory in mega bytes
        storage:
          $ref: '#/components/schemas/AdditionalStorage'
        gpu:
          $ref: '#/components/schemas/GpuInfo'
    SubmittedApp:
      description: Information about the submitted app
      type: object
      properties:
        appId:
          $ref: '#/components/schemas/AppId'
    Port:
      type: integer
      description: Port to stablish the connection
      minimum: 0
    KubernetesResources:
      description: Definition of Kubernetes Cluster 

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/global-system-for-mobile-communications/refs/heads/main/openapi/global-system-for-mobile-communications-application-api-openapi.yml