openapi: 3.0.0
info:
  title: Telco Cloud Automation Partner Systems API
  description: Telco Cloud Automation Partner Systems API. Registers, modifies, lists
    and deletes Partner Systems.
  termsOfService: https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/product/vmware-product-guide.pdf
  contact:
    name: VMware
  license:
    name: Copyright (c) 2020-2021 VMware, Inc. All rights reserved.
  version: "1.0"
servers:
- url: /hybridity/api
tags:
- name: Extension
  description: Telco Cloud Automation Partner Systems API
paths:
  /extensions:
    get:
      tags:
      - Extension
      description: Get all Extension
      operationId: getExtensions
      responses:
        "200":
          description: get extensions response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extensions'
  /extensions/svnfms:
    get:
      tags:
      - Extension
      description: Get SVNFM extensionSubtype
      operationId: getExtensionSubtype
      parameters:
      - name: extensionSubtype
        in: query
        required: true
        style: form
        explode: true
        schema:
          type: string
      responses:
        "200":
          description: get extension subtype response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200'
    post:
      tags:
      - Extension
      description: Create SVNFM Extension
      operationId: createSvnfmExtension
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSvnfmExtension'
      responses:
        "200":
          description: create SVNFM Extension response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSvnfmExtensionResponse'
  /extensions/{extensionId}:
    get:
      tags:
      - Extension
      description: Get Extension with given extensionId
      operationId: getExtension
      parameters:
      - name: extensionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: get extension response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extension'
    post:
      tags:
      - Extension
      description: Modifies Extension
      operationId: editExtension
      parameters:
      - name: extensionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSvnfmExtension'
        required: true
      responses:
        "200":
          description: edit Extension response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSvnfmExtensionResponse'
    delete:
      tags:
      - Extension
      description: Delete Extension
      operationId: deleteExtension
      parameters:
      - name: extensionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: delete Extension response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSvnfmExtensionResponse'
  /extensions/svnfms/{extensionId}:
    post:
      tags:
      - Extension
      description: Modifies SVNFM Extension
      operationId: editSvnfmExtension
      parameters:
      - name: extensionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSvnfmExtension'
        required: true
      responses:
        "200":
          description: edit SVNFM Extension response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSvnfmExtensionResponse'
  /extensions/svnfms/{extensionId}/packages:
    get:
      tags:
      - Extension
      description: Get packages for SVNFM Extension
      operationId: getSvnfmPackages
      parameters:
      - name: extensionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: create SVNFM Extension response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SvnfmPackages'
    post:
      tags:
      - Extension
      description: Register package for SVNFM Extension
      operationId: registerSvnfmPackages
      parameters:
      - name: extensionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SvnfmPackages'
        required: true
      responses:
        "200":
          description: create SVNFM Extension response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterSvnfmPackagesResponse'
  /extensions/svnfms/{extensionId}/vnfInstances:
    get:
      tags:
      - Extension
      description: Get vnfInstances for SVNFM Extension
      operationId: getSvnfmVnfInstances
      parameters:
      - name: extensionId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: get Svnfm Vnf Instances response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_1'
  /extensions/types:
    get:
      tags:
      - Extension
      description: Get Extension types
      operationId: getExtensionsType
      responses:
        "200":
          description: get extension typesresponse
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_2'
components:
  schemas:
    VnfInstance:
      type: object
      properties:
        _id:
          $ref: '#/components/schemas/VnfInstance__id'
        id:
          type: string
        vnfInstanceName:
          type: string
        vnfdId:
          type: string
        vnfProvider:
          type: string
        vnfProductName:
          type: string
        vnfdVersion:
          type: string
        vnfPkgId:
          type: string
        vnfCatalogName:
          type: string
        instantiationState:
          type: string
        instantiatedVnfInfo:
          $ref: '#/components/schemas/VnfInstance_instantiatedVnfInfo'
        nfType:
          type: string
        managedBy:
          $ref: '#/components/schemas/VnfInstance_managedBy'
        lastUpdated:
          type: number
        creationDate:
          type: number
        creationUser:
          type: string
        lcmOperation:
          type: string
        lcmOperationState:
          type: string
        vimConnectionInfo:
          $ref: '#/components/schemas/VnfInstance_vimConnectionInfo'
    Extensions:
      type: object
      properties:
        extensions:
          type: array
          items:
            $ref: '#/components/schemas/Extension'
    Extension:
      type: object
      properties:
        extensionId:
          type: string
        name:
          type: string
        type:
          type: string
        extensionKey:
          type: string
        description:
          type: string
        interfaceInfo:
          $ref: '#/components/schemas/Extension_interfaceInfo'
        accessInfo:
          $ref: '#/components/schemas/Extension_accessInfo'
        additionalParameters:
          type: object
        state:
          type: string
        extensionSubtype:
          type: string
        products:
          type: array
          items: {}
        vimInfo:
          type: array
          items:
            $ref: '#/components/schemas/Extension_vimInfo'
        autoScaleEnabled:
          type: boolean
        autoHealEnabled:
          type: boolean
        version:
          type: string
        vnfCount:
          type: integer
        vnfCatalogCount:
          type: integer
    CreateSvnfmExtension:
      type: object
      properties:
        name:
          type: string
        version:
          type: string
        type:
          type: string
        extensionKey:
          type: string
        extensionSubtype:
          type: string
        products:
          type: array
          items: {}
        vimInfo:
          type: array
          items:
            $ref: '#/components/schemas/CreateSvnfmExtension_vimInfo'
        interfaceInfo:
          $ref: '#/components/schemas/Extension_interfaceInfo'
        accessInfo:
          $ref: '#/components/schemas/Extension_accessInfo'
        additionalParameters:
          type: object
        autoScaleEnabled:
          type: boolean
        autoHealEnabled:
          type: boolean
    CreateSvnfmExtensionResponse:
      type: object
      properties:
        extensionId:
          type: string
    SvnfmPackages:
      type: array
      items:
        $ref: '#/components/schemas/SvnfmPackages_inner'
    RegisterSvnfmPackagesResponse:
      type: object
      properties:
        catalogs:
          type: array
          items:
            $ref: '#/components/schemas/RegisterSvnfmPackagesResponse_catalogs'
    inline_response_200:
      type: object
      properties:
        extensionSubType:
          type: array
          items:
            type: string
    inline_response_200_1:
      type: object
      properties:
        vnfs:
          type: array
          items:
            $ref: '#/components/schemas/VnfInstance'
    inline_response_200_2:
      type: object
      properties:
        types:
          type: array
          items:
            $ref: '#/components/schemas/inline_response_200_2_types'
    VnfInstance__id:
      type: object
      properties:
        timestamp:
          type: number
        machineIdentifier:
          type: number
        processIdentifier:
          type: number
        counter:
          type: number
        time:
          type: number
        date:
          type: number
        timeSecond:
          type: number
    VnfInstance_instantiatedVnfInfo_resourceHandle:
      type: object
      properties:
        resourceId:
          type: string
        vimConnectionId:
          type: string
    VnfInstance_instantiatedVnfInfo_extVirtualLinkInfo:
      type: object
      properties:
        resourceHandle:
          $ref: '#/components/schemas/VnfInstance_instantiatedVnfInfo_resourceHandle'
    VnfInstance_instantiatedVnfInfo:
      type: object
      properties:
        flavourId:
          type: string
        vnfState:
          type: string
        scaleStatus:
          type: array
          items:
            type: object
        extCpInfo:
          type: array
          items:
            type: object
        extVirtualLinkInfo:
          type: array
          items:
            $ref: '#/components/schemas/VnfInstance_instantiatedVnfInfo_extVirtualLinkInfo'
        monitoringParameters:
          type: object
        vnfcResourceInfo:
          type: array
          items:
            type: object
        vnfVirtualLinkResourceInfo:
          type: array
          items:
            type: object
        virtualStorageResourceInfo:
          type: array
          items:
            type: object
    VnfInstance_managedBy:
      type: object
      properties:
        extensionSubtype:
          type: string
        extensionName:
          type: string
    VnfInstance_vimConnectionInfo:
      type: object
      properties:
        id:
          type: string
        vimName:
          type: string
    Extension_interfaceInfo:
      type: object
      properties:
        url:
          type: string
        description:
          type: string
        trustedCertificates:
          type: array
          items: {}
    Extension_accessInfo:
      type: object
      properties:
        clientId:
          type: string
        clientSecret:
          type: string
    Extension_vimInfo:
      type: object
      properties:
        vimName:
          type: string
        vimId:
          type: string
    CreateSvnfmExtension_vimInfo:
      properties:
        vimName:
          type: string
        vimId:
          type: string
    SvnfmPackages_inner:
      type: object
      properties:
        catalogName:
          type: string
        vnfdId:
          type: string
        vnfProductName:
          type: string
        vnfSoftwareVersion:
          type: string
        vnfdVersion:
          type: string
    RegisterSvnfmPackagesResponse_info_userDefinedData:
      type: object
      properties:
        vimType:
          type: string
        name:
          type: string
    RegisterSvnfmPackagesResponse_info_managedBy:
      type: object
      properties:
        extensionSubtype:
          type: string
        extensionId:
          type: string
        extensionName:
          type: string
        version:
          type: string
    RegisterSvnfmPackagesResponse_info:
      type: object
      properties:
        id:
          type: string
        vnfdId:
          type: string
        vnfProductName:
          type: string
        vnfSoftwareVersion:
          type: string
        vnfdVersion:
          type: string
        userDefinedData:
          $ref: '#/components/schemas/RegisterSvnfmPackagesResponse_info_userDefinedData'
        onboardingState:
          type: string
        operationalState:
          type: string
        managedBy:
          $ref: '#/components/schemas/RegisterSvnfmPackagesResponse_info_managedBy'
        vnfProvider:
          type: string
    RegisterSvnfmPackagesResponse_catalogs:
      type: object
      properties:
        id:
          type: string
        info:
          $ref: '#/components/schemas/RegisterSvnfmPackagesResponse_info'
    inline_response_200_2_types:
      type: object
      properties:
        subTypes:
          type: array
          items:
            type: string
        uri:
          type: string
        type:
          type: string
  securitySchemes:
    x-hm-authorization:
      type: apiKey
      description: Obtained from /hybridity/api/session
      name: x-hm-authorization
      in: header
