swagger: "2.0"
info:
  description: |

    [Differences versus the previous schema version](apidocs/aai_swagger_v13.diff)

    Copyright &copy; 2017 AT&amp;T Intellectual Property. All rights reserved.

    Licensed under the Creative Commons License, Attribution 4.0 Intl. (the &quot;License&quot;); you may not use this documentation except in compliance with the License.

    You may obtain a copy of the License at

    (https://creativecommons.org/licenses/by/4.0/)

    Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

    ECOMP and OpenECOMP are trademarks and service marks of AT&amp;T Intellectual Property.

    This document is best viewed with Firefox or Chrome. Nodes can be found by appending /#/definitions/node-type-to-find to the path to this document. Edge definitions can be found with the node definitions.
  version: "v13"
  title: Active and Available Inventory REST API
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    name:
    url:
    email:
host:
basePath: /aai/v13
schemes:
  - https
paths:
  /business/connectors/connector/{resource-instance-id}/metadata/metadatum/{metaname}:
    patch:
      tags:
        - Business
      summary: update an existing metadatum
      description: |
        Update an existing metadatum
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessConnectorsConnectorMetadataMetadatum
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: resource-instance-id
          in: path
          description: Unique id of resource instance.
          required: true
          type: string
          example: __RESOURCE-INSTANCE-ID__
        - name: metaname
          in: path
          required: true
          type: string
          example: __METANAME__
        - name: body
          in: body
          description: metadatum object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/metadatum"
  /business/connectors/connector/{resource-instance-id}:
    patch:
      tags:
        - Business
      summary: update an existing connector
      description: |
        Update an existing connector
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessConnectorsConnector
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: resource-instance-id
          in: path
          description: Unique id of resource instance.
          required: true
          type: string
          example: __RESOURCE-INSTANCE-ID__
        - name: body
          in: body
          description: connector object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/connector"
  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/metadata/metadatum/{metaname}:
    patch:
      tags:
        - Business
      summary: update an existing metadatum
      description: |
        Update an existing metadatum
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceMetadataMetadatum
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: global-customer-id
          in: path
          description: Global customer id used across ECOMP to uniquely identify customer.
          required: true
          type: string
          example: __GLOBAL-CUSTOMER-ID__
        - name: service-type
          in: path
          description: Value defined by orchestration to identify this service across ECOMP.
          required: true
          type: string
          example: __SERVICE-TYPE__
        - name: service-instance-id
          in: path
          description: Uniquely identifies this instance of a service
          required: true
          type: string
          example: __SERVICE-INSTANCE-ID__
        - name: metaname
          in: path
          required: true
          type: string
          example: __METANAME__
        - name: body
          in: body
          description: metadatum object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/metadatum"
  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources/allotted-resource/{id}/tunnel-xconnects/tunnel-xconnect/{id}:
    patch:
      tags:
        - Business
      summary: update an existing tunnel-xconnect
      description: |
        Update an existing tunnel-xconnect
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResourceTunnelXconnectsTunnelXconnect
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: global-customer-id
          in: path
          description: Global customer id used across ECOMP to uniquely identify customer.
          required: true
          type: string
          example: __GLOBAL-CUSTOMER-ID__
        - name: service-type
          in: path
          description: Value defined by orchestration to identify this service across ECOMP.
          required: true
          type: string
          example: __SERVICE-TYPE__
        - name: service-instance-id
          in: path
          description: Uniquely identifies this instance of a service
          required: true
          type: string
          example: __SERVICE-INSTANCE-ID__
        - name: id
          in: path
          description: Allotted Resource id UUID assigned to this instance.
          required: true
          type: string
          example: __ID__
        - name: id
          in: path
          description: Allotted Resource id UUID assigned to this instance.
          required: true
          type: string
          example: __ID__
        - name: body
          in: body
          description: tunnel-xconnect object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/tunnel-xconnect"
  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/allotted-resources/allotted-resource/{id}:
    patch:
      tags:
        - Business
      summary: update an existing allotted-resource
      description: |
        Update an existing allotted-resource
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstanceAllottedResourcesAllottedResource
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: global-customer-id
          in: path
          description: Global customer id used across ECOMP to uniquely identify customer.
          required: true
          type: string
          example: __GLOBAL-CUSTOMER-ID__
        - name: service-type
          in: path
          description: Value defined by orchestration to identify this service across ECOMP.
          required: true
          type: string
          example: __SERVICE-TYPE__
        - name: service-instance-id
          in: path
          description: Uniquely identifies this instance of a service
          required: true
          type: string
          example: __SERVICE-INSTANCE-ID__
        - name: id
          in: path
          description: Allotted Resource id UUID assigned to this instance.
          required: true
          type: string
          example: __ID__
        - name: body
          in: body
          description: allotted-resource object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/allotted-resource"
  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}:
    patch:
      tags:
        - Business
      summary: update an existing service-instance
      description: |
        Update an existing service-instance
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscriptionServiceInstancesServiceInstance
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: global-customer-id
          in: path
          description: Global customer id used across ECOMP to uniquely identify customer.
          required: true
          type: string
          example: __GLOBAL-CUSTOMER-ID__
        - name: service-type
          in: path
          description: Value defined by orchestration to identify this service across ECOMP.
          required: true
          type: string
          example: __SERVICE-TYPE__
        - name: service-instance-id
          in: path
          description: Uniquely identifies this instance of a service
          required: true
          type: string
          example: __SERVICE-INSTANCE-ID__
        - name: body
          in: body
          description: service-instance object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/service-instance"
  /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}:
    patch:
      tags:
        - Business
      summary: update an existing service-subscription
      description: |
        Update an existing service-subscription
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessCustomersCustomerServiceSubscriptionsServiceSubscription
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: global-customer-id
          in: path
          description: Global customer id used across ECOMP to uniquely identify customer.
          required: true
          type: string
          example: __GLOBAL-CUSTOMER-ID__
        - name: service-type
          in: path
          description: Value defined by orchestration to identify this service across ECOMP.
          required: true
          type: string
          example: __SERVICE-TYPE__
        - name: body
          in: body
          description: service-subscription object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/service-subscription"
  /business/customers/customer/{global-customer-id}:
    patch:
      tags:
        - Business
      summary: update an existing customer
      description: |
        Update an existing customer
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessCustomersCustomer
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: global-customer-id
          in: path
          description: Global customer id used across ECOMP to uniquely identify customer.
          required: true
          type: string
          example: __GLOBAL-CUSTOMER-ID__
        - name: body
          in: body
          description: customer object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/customer"
  /business/lines-of-business/line-of-business/{line-of-business-name}:
    patch:
      tags:
        - Business
      summary: update an existing line-of-business
      description: |
        Update an existing line-of-business
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessLinesOfBusinessLineOfBusiness
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: line-of-business-name
          in: path
          description: Name of the line-of-business (product)
          required: true
          type: string
          example: __LINE-OF-BUSINESS-NAME__
        - name: body
          in: body
          description: line-of-business object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/line-of-business"
  /business/owning-entities/owning-entity/{owning-entity-id}:
    patch:
      tags:
        - Business
      summary: update an existing owning-entity
      description: |
        Update an existing owning-entity
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessOwningEntitiesOwningEntity
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: owning-entity-id
          in: path
          description: UUID of an owning entity
          required: true
          type: string
          example: __OWNING-ENTITY-ID__
        - name: body
          in: body
          description: owning-entity object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/owning-entity"
  /business/platforms/platform/{platform-name}:
    patch:
      tags:
        - Business
      summary: update an existing platform
      description: |
        Update an existing platform
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessPlatformsPlatform
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: platform-name
          in: path
          description: Name of the platform
          required: true
          type: string
          example: __PLATFORM-NAME__
        - name: body
          in: body
          description: platform object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/platform"
  /business/projects/project/{project-name}:
    patch:
      tags:
        - Business
      summary: update an existing project
      description: |
        Update an existing project
        #
        Note:  Endpoints that are not devoted to object relationships support both PUT and PATCH operations.
        The PUT operation will entirely replace an existing object.
        The PATCH operation sends a "description of changes" for an existing object.  The entire set of changes must be applied.  An error result means no change occurs.
        #
        Other differences between PUT and PATCH are:
        #
        - For PATCH, you can send any of the values shown in sample REQUEST body.  There are no required values.
        - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.
        - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.
      operationId: UpdateBusinessProjectsProject
      consumes:
        - application/json
        - application/xml
      produces:
        - application/json
        - application/xml
      responses:
        "default":
          description: Response codes found in [response codes](https://wiki.web.att.com/pages/viewpage.action?pageId=607391054).
      parameters:
        - name: project-name
          in: path
          description: Name of the project deploying a service
          required: true
          type: string
          example: __PROJECT-NAME__
        - name: body
          in: body
          description: project object that needs to be updated.
          required: true
          schema:
            $ref: "#/definitions/project"
definitions:
  allotted-resource:
    description: |
      Represents a slice or partial piece of a resource that gets separately allotted
      ###### Related Nodes
      - TO allotted-resource( allotted-resource BindsTo allotted-resource, ONE2ONE, will delete target node)
      An edge comment
      - TO generic-vnf( allotted-resource PartOf generic-vnf, MANY2MANY, will delete target node)
      - TO instance-group( allotted-resource MemberOf instance-group, MANY2MANY, will delete target node)
      - TO l3-network( allotted-resource PartOf l3-network, MANY2MANY, will delete target node)
      - TO l-interface( allotted-resource Uses l-interface, ONE2MANY, will delete target node)
      - TO network-policy( allotted-resource Uses network-policy, ONE2ONE, will delete target node)
      - TO vlan( allotted-resource PartOf vlan, MANY2MANY, will delete target node)
      - TO vpn-binding( allotted-resource BelongsTo vpn-binding, MANY2MANY, will delete target node)
      - TO service-instance( allotted-resource BelongsTo service-instance, MANY2ONE, will delete target node)(4)
      - TO model-ver( allotted-resource IsA model-ver, Many2One, will delete target node)
      - FROM tunnel-xconnect( tunnel-xconnect BelongsTo allotted-resource, ONE2ONE, will delete target node)(1)
      - FROM configuration( configuration Uses allotted-resource, ONE2ONE, will delete target node)(3)
      - FROM service-instance( service-instance Uses allotted-resource, MANY2MANY, will delete target node)
      - FROM allotted-resource( allotted-resource BindsTo allotted-resource, ONE2ONE, will delete target node)
      An edge comment

      -(1) IF this ALLOTTED-RESOURCE node is deleted, this FROM node is DELETED also
      -(3) IF this FROM node is deleted, this ALLOTTED-RESOURCE is DELETED also
      -(4) IF this TO node is deleted, this ALLOTTED-RESOURCE is DELETED also
    required:
    - id
    properties:
      id:
        type: string
        description: Allotted Resource id UUID assigned to this instance.
      description:
        type: string
        description: The descriptive information assigned to this allotted resource instance
      selflink:
        type: string
        description: Link back to more information in the controller
      model-invariant-id:
        type: string
        description: the ASDC model id for this resource or service model.
      model-version-id:
        type: string
        description: the ASDC model version for this resource or service model.
      persona-model-version:
        type: string
        description: the ASDC model version for this resource or service model.
  allotted-resources:
    description: |
      This object is used to store slices of services being offered
    properties:
      allotted-resource:
        type: array
        items:          
          $ref: "#/definitions/allotted-resource"
  business:
    description: |
      Namespace for business related constructs
    properties:
      connectors:
        type: array
        items:
          $ref: "#/definitions/connector"
      customers:
        type: array
        items:
          $ref: "#/definitions/customer"
      lines-of-business:
        type: array
        items:
          $ref: "#/definitions/line-of-business"
      owning-entities:
        type: array
        items:
          $ref: "#/definitions/owning-entity"
      platforms:
        type: array
        items:
          $ref: "#/definitions/platform"
      projects:
        type: array
        items:
          $ref: "#/definitions/project"
  connector:
    description: |
      Collection of resource instances used to connect a variety of disparate inventory widgets
      ###### Related Nodes
      - TO virtual-data-center( connector LocatedIn virtual-data-center, MANY2MANY, will delete target node)
      - FROM metadatum( metadatum BelongsTo connector, MANY2ONE, will delete target node)(1)
      - FROM service-instance( service-instance Uses connector, MANY2MANY, will delete target node)

      -(1) IF this CONNECTOR node is deleted, this FROM node is DELETED also
    required:
    - resource-instance-id
    properties:
      resource-instance-id:
        type: string
        description: Unique id of resource instance.
  connectors:
    description: |
      Collection of resource instances used to connect a variety of disparate inventory widgets
    properties:
      connector:
        type: array
        items:          
          $ref: "#/definitions/connector"
  customer:
    description: |
      customer identifiers to provide linkage back to BSS information.
      ###### Related Nodes
      - FROM service-subscription( service-subscription BelongsTo customer, MANY2ONE, will delete target node)(1)
      - FROM vpn-binding( vpn-binding Uses customer, MANY2MANY, will delete target node)

      -(1) IF this CUSTOMER node is deleted, this FROM node is DELETED also
    required:
    - global-customer-id
    - subscriber-name
    - subscriber-type
    properties:
      global-customer-id:
        type: string
        description: Global customer id used across ECOMP to uniquely identify customer.
      subscriber-name:
        type: string
        description: Subscriber name, an alternate way to retrieve a customer.
      subscriber-type:
        type: string
        description: Subscriber type, a way to provide VID with only the INFRA customers.
  customers:
    description: |
      Collection of customer identifiers to provide linkage back to BSS information.
    properties:
      customer:
        type: array
        items:          
          $ref: "#/definitions/customer"
  line-of-business:
    description: |
      describes a line-of-business
      ###### Related Nodes
      - TO generic-vnf( line-of-business Uses generic-vnf, MANY2MANY, will delete target node)

    required:
    - line-of-business-name
    properties:
      line-of-business-name:
        type: string
        description: Name of the line-of-business (product)
  lines-of-business:
    description: |
      Collection of lines-of-business
    properties:
      line-of-business:
        type: array
        items:          
          $ref: "#/definitions/line-of-business"
  metadata:
    description: |
      Collection of metadatum (key/value pairs)
    properties:
      metadatum:
        type: array
        items:          
          $ref: "#/definitions/metadatum"
  metadatum:
    description: |
      Key/value pairs
      ###### Related Nodes
      - TO configuration( metadatum BelongsTo configuration, MANY2ONE, will delete target node)(4)
      - TO connector( metadatum BelongsTo connector, MANY2ONE, will delete target node)(4)
      - TO image( metadatum BelongsTo image, MANY2ONE, will delete target node)(4)
      - TO model-ver( metadatum BelongsTo model-ver, MANY2ONE, will delete target node)(4)
      - TO service-instance( metadatum BelongsTo service-instance, MANY2ONE, will delete target node)(4)

      -(4) IF this TO node is deleted, this METADATUM is DELETED also
    required:
    - metaname
    - metaval
    properties:
      metaname:
        type: string
      metaval:
        type: string
  owning-entities:
    description: |
      Collection of owning-entities
    properties:
      owning-entity:
        type: array
        items:          
          $ref: "#/definitions/owning-entity"
  owning-entity:
    description: |
      describes an owning-entity
      ###### Related Nodes
      - FROM service-instance( service-instance BelongsTo owning-entity, MANY2ONE, will delete target node)

    required:
    - owning-entity-id
    - owning-entity-name
    properties:
      owning-entity-id:
        type: string
        description: UUID of an owning entity
      owning-entity-name:
        type: string
        description: Owning entity name
  platform:
    description: |
      describes a platform
      ###### Related Nodes
      - TO generic-vnf( platform Uses generic-vnf, MANY2MANY, will delete target node)

    required:
    - platform-name
    properties:
      platform-name:
        type: string
        description: Name of the platform
  platforms:
    description: |
      Collection of platforms
    properties:
      platform:
        type: array
        items:          
          $ref: "#/definitions/platform"
  project:
    description: |
      describes the project
      ###### Related Nodes
      - TO service-instance( project Uses service-instance, ONE2MANY, will delete target node)

    required:
    - project-name
    properties:
      project-name:
        type: string
        description: Name of the project deploying a service
  projects:
    description: |
      Collection of projects
    properties:
      project:
        type: array
        items:          
          $ref: "#/definitions/project"
  related-to-property:
    properties:
      property-key:
        type: string
        description: Key part of a key/value pair
      property-value:
        type: string
        description: Value part of a key/value pair
  relationship:
    properties:
      related-to:
        type: string
        description: A keyword provided by A&AI to indicate type of node.
      relationship-label:
        type: string
        description: The edge label for this relationship.
      related-link:
        type: string
        description: URL to the object in A&AI.
      relationship-data:
        type: array
        items:          
          $ref: "#/definitions/relationship-data"
      related-to-property:
        type: array
        items:          
          $ref: "#/definitions/related-to-property"
  relationship-data:
    required:
    - relationship-key
    - relationship-value
    properties:
      relationship-key:
        type: string
        description: A keyword provided by A&AI to indicate an attribute.
      relationship-value:
        type: string
        description: Value of the attribute.
  service-instance:
    description: |
      Instance of a service
      ###### Related Nodes
      - TO generic-vnf( service-instance ComposedOf generic-vnf, ONE2MANY, will delete target node)
      - TO l3-network( service-instance ComposedOf l3-network, ONE2MANY, will delete target node)
      - TO owning-entity( service-instance BelongsTo owning-entity, MANY2ONE, will delete target node)
      - TO allotted-resource( service-instance Uses allotted-resource, MANY2MANY, will delete target node)
      - TO configuration( service-instance Uses configuration, ONE2MANY, will delete target node)
      - TO connector( service-instance Uses connector, MANY2MANY, will delete target node)
      - TO ctag-assignment( service-instance Uses ctag-assignment, ONE2MANY, will delete target node)
      - TO cvlan-tag( service-instance ComposedOf cvlan-tag, MANY2MANY, will delete target node)
      - TO instance-group( service-instance MemberOf instance-group, MANY2MANY, will delete target node)
      - TO logical-link( service-instance Uses logical-link, ONE2MANY, will delete target node)(2)
      - TO pnf( service-instance ComposedOf pnf, ONE2MANY, will delete target node)
      - TO service-instance( service-instance ComposedOf service-instance, ONE2MANY, will delete target node)
      - TO vlan( service-instance ComposedOf vlan, ONE2MANY, will delete target node)
      - TO zone( service-instance LocatedIn zone, MANY2ONE, will delete target node)
      - TO service-subscription( service-instance BelongsTo service-subscription, MANY2ONE, will delete target node)(4)
      - TO vce( service-instance ComposedOf vce, ONE2MANY, will delete target node)
      - TO model-ver( service-instance IsA model-ver, Many2One, will delete target node)
      - TO configuration( service-instance Uses configuration, MANY2MANY, will delete target node)
      - TO vpn-binding( service-instance Uses vpn-binding, MANY2ONE, will delete target node)
      - FROM project( project Uses service-instance, ONE2MANY, will delete target node)
      - FROM allotted-resource( allotted-resource BelongsTo service-instance, MANY2ONE, will delete target node)(1)
      - FROM metadatum( metadatum BelongsTo service-instance, MANY2ONE, will delete target node)(1)
      - FROM forwarding-path( forwarding-path AppliesTo service-instance, MANY2ONE, will delete target node)(1)
      - FROM configuration( configuration BelongsTo service-instance, MANY2ONE, will delete target node)(1)
      - FROM service-instance( service-instance ComposedOf service-instance, ONE2MANY, will delete target node)

      -(1) IF this SERVICE-INSTANCE node is deleted, this FROM node is DELETED also
      -(2) IF this SERVICE-INSTANCE node is deleted, this TO node is DELETED also
      -(4) IF this TO node is deleted, this SERVICE-INSTANCE is DELETED also
    required:
    - service-instance-id
    properties:
      service-instance-id:
        type: string
        description: Uniquely identifies this instance of a service
      service-instance-name:
        type: string
        description: This field will store a name assigned to the service-instance.
      service-type:
        type: string
        description: String capturing type of service.
      service-role:
        type: string
        description: String capturing the service role.
      environment-context:
        type: string
        description: This field will store the environment context assigned to the service-instance.
      workload-context:
        type: string
        description: This field will store the workload context assigned to the service-instance.
      model-invariant-id:
        type: string
        description: the ASDC model id for this resource or service model.
      model-version-id:
        type: string
        description: the ASDC model version for this resource or service model.
      persona-model-version:
        type: string
        description: the ASDC model version for this resource or service model.
      widget-model-id:
        type: string
        description: the ASDC data dictionary widget model. This maps directly to the A&AI widget.
      widget-model-version:
        type: string
        description: the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget.
      bandwidth-total:
        type: string
        description: Indicates the total bandwidth to be used for this service.
      bandwidth-up-wan1:
        type: string
        description: indicates the upstream bandwidth this service will use on the WAN1 port of the physical device.
      bandwidth-down-wan1:
        type: string
        description: indicates the downstream bandwidth this service will use on the WAN1 port of the physical device.
      bandwidth-up-wan2:
        type: string
        description: indicates the upstream bandwidth this service will use on the WAN2 port of the physical device.
      bandwidth-down-wan2:
        type: string
        description: indicates the downstream bandwidth this service will use on the WAN2 port of the physical device.
      vhn-portal-url:
        type: string
        description: URL customers will use to access the vHN Portal.
      service-instance-location-id:
        type: string
        description: An identifier that customers assign to the location where this service is being used.
  service-instances:
    description: |
      Collection of service instances
    properties:
      service-instance:
        type: array
        items:          
          $ref: "#/definitions/service-instance"
  service-subscription:
    description: |
      Object that group service instances.
      ###### Related Nodes
      - TO customer( service-subscription BelongsTo customer, MANY2ONE, will delete target node)(4)
      - TO tenant( service-subscription Uses tenant, MANY2MANY, will delete target node)
      - FROM service-instance( service-instance BelongsTo service-subscription, MANY2ONE, will delete target node)(1)

      -(1) IF this SERVICE-SUBSCRIPTION node is deleted, this FROM node is DELETED also
      -(4) IF this TO node is deleted, this SERVICE-SUBSCRIPTION is DELETED also
    required:
    - service-type
    properties:
      service-type:
        type: string
        description: Value defined by orchestration to identify this service across ECOMP.
      temp-ub-sub-account-id:
        type: string
        description: This property will be deleted from A&AI in the near future. Only stop gap solution.
  service-subscriptions:
    description: |
      Collection of objects that group service instances.
    properties:
      service-subscription:
        type: array
        items:          
          $ref: "#/definitions/service-subscription"
  tunnel-xconnect:
    description: |
      Represents the specifics of a tunnel cross connect piece of a resource that gets separately allotted
      ###### Related Nodes
      - TO allotted-resource( tunnel-xconnect BelongsTo allotted-resource, ONE2ONE, will delete target node)(4)

      -(4) IF this TO node is deleted, this TUNNEL-XCONNECT is DELETED also
    required:
    - id
    properties:
      id:
        type: string
        description: Allotted Resource id UUID assigned to this instance.
      bandwidth-up-wan1:
        type: string
        description: The WAN uplink bandwidth for WAN1
      bandwidth-down-wan1:
        type: string
        description: The WAN downlink bandwidth for WAN1
      bandwidth-up-wan2:
        type: string
        description: The WAN uplink bandwidth for WAN2
      bandwidth-down-wan2:
        type: string
        description: The WAN downlink bandwidth for WAN2
  tunnel-xconnects:
    description: |
      This object is used to store the specific tunnel cross connect aspects of an allotted resource
    properties:
      tunnel-xconnect:
        type: array
        items:          
          $ref: "#/definitions/tunnel-xconnect"
