openapi: 3.0.0
info:
  description: >-
    The HL7 Health Services Platform Marketplace (HSPM or Marketplace)
    specification is a REST API for publication, cataloging, discovering, and
    deployment of products and executable knowledge into any compliant IT
    environment in an automated manner. It is similar to an app marketplace for
    health products in that it manages deployment to a users local
    infrastructural environment and data context. It is not a flat directory of
    SMART-on-FHIR and other UI-only applications, but MAY be used for this
    purpose. A Marketplace can be implemented by vendors, providers, standards
    developing organizations (SDOs), consortiums, and all manner of parties
    interested in interoperable products.
  version: 2.0.0
  title: Health Services Platform Marketplace Specification
  termsOfService: 'https://www.logicahealth.org'
  contact:
    - name: HSPC
    - url: https://www.hspconsortium.org/developers/marketplace/
    - email: membership@HSPConsortium.org
tags:
 
  - name: Product Services
    description: >-
      A Product is a structured declaration of capabilities for a package of
      executable or consumable content, with release managed in a discrete
      lifecycle. A CDS Hooks or FHIR Terminology service “ExampleService”
      developed by vendor “ExampleSoft”, for example, would be declared to a
      Marketplace instance prior to actual release of the software to establish
      descriptive text, create screenshots, set standards-related declarations,
      and other fields.

  
  - name: Product Operations

  - name: Product Build Services
  - name: Product Build Dependency Services
  - name: Product Build Configuration Services
  - name: Product Build Configuration Task Services
  - name: Product Build Exposure Services
  - name: Product License Services
  - name: Product Logo Services
  - name: Product Screenshot Services
  - name: Platform Services
  - name: Interface Services

    description: >-
      Marketplace-wide declaration of a standardized – or at least
      conventionalized – computational integration point. They are not
      constraints to HL7 standards.  
  - name: License Services
    description: >-
      Licenses are globally declared terms of use, and MAY or MAY NOT be useful
      in all contexts. As discussed in , this is expected to be customized to
      the local sales and business model. Implementors and operators only
      focused on F/OSS Services may be satisfied by the barebones model.
  - name: Identity Provider Services
    description: >-
      An IdentityProvider is a deployment-specific resource containing client
      configuration information for a resource OpenID Connect
      authentication/authorization server. This information changes very
      infrequently. Of special note is the “public_keys” field, which SHOULD be
      polled and updated automatically. Issuers typically cycle through keys
      pairs frequently and failing to update them will result in failed User
      authentication flows.      

  - name: User Services
    description: >-
      A distinct person or system with some degree of access or interest to a
      Marketplace instance.
  - name: Group Services
    description: A named collection of Users for purposes of batch Role assignment.
  - name: Role Services
    description: A named set of permissions.
  - name: Role Appointment Services
  - name: Entitlement Services
  - name: Entitlement Claim Services
  - name: Attempt Services
  
paths:
  /licenses:
    get:
      tags:
        - License Services
      summary: Returns the list of licenses available in the marketplace
      parameters:
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getLicenses
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/License'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/License'
     
        
            
    post:
      tags:
        - License Services
      summary: Adds a new license to the marketplace
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/License'
          application/xml:
            schema:
              $ref: '#/components/requestBodies/License'
        description: License to be added to the marketplace
        required: true
      operationId: createLicense
      responses:
        '200':
          description: Add License was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - License Services
      summary: Updates the license
      parameters:
        - in: path
          name: licenseId
          required: true
          description: Id of the license to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/License'
          application/xml:
            schema:
              $ref: '#/components/schemas/License'
        description: License to be added to the marketplace
        required: true
      operationId: updateLicense
      responses:
        '200':
          description: True for updated
     
        
            
                        
  '/licenses/{licenseId}':
    get:
      tags:
        - License Services
      summary: Retrieves the license based on license id
      parameters:
        - in: path
          name: licenseId
          required: true
          description: Id of the license to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getLicense
      responses:
        '200':
          description: License located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/License'

            application/json:
              schema:
                $ref: '#/components/schemas/License'
 
     
        
            

    delete:
      tags:
        - License Services
      summary: Deletes the license by Id
      parameters:
        - in: path
          name: licenseId
          required: true
          description: Id of the license to delete
          schema:
            type: string
      operationId: deleteLicense
      responses:
        '200':
          description: True if delete was successful
     
        
            
            
  /products:
    get:
      tags:
        - Product Services
      summary: Returns the list of products available in marketplace
      parameters:
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getProducts
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
     
        
            
    post:
      tags:
        - Product Services
      summary: Adds a new product to the marketplace
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Product'
 
          application/xml:
            schema:
              $ref: '#/components/schemas/Product'
  
      description: Adds a new product to the marketplace
      operationId: addProduct
      responses:
        '200':
          description: Add Product was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Product Services
      summary: Updates the product
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: Update a product to the marketplace
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Product'
 
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Product'
 
      operationId: updateService
      responses:
        '200':
          description: Update Product was successful
     
        
            
                        
  '/products/{productId}/licenses':
    get:
      tags:
        - Product License Services
      summary: Returns the list of licenses based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getProductLicenses
      responses:
        '200':
          description: Product located using id
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/License'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/License'
     
        
            
            
    post:
      tags:
        - Product License Services
      summary: Adds a new license based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to retrieve
          schema:
            type: string
        - in: query
          name: licenseId
          description: licenseId
          schema:
            type: string
            format: uuid
      description: Adds a new license to the product identified by id
      operationId: addProductlicense
      responses:
        '200':
          description: Add Product was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
  '/products/{productId}':
    get:
      tags:
        - Product Services
      summary: Retrieves the product based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getService
      responses:
        '200':
          description: Product located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Product'
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
     
        
            
            
 
    delete:
      tags:
        - Product Services
      summary: Deletes the product based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to delete
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteService
      responses:
        '200':
          description: Delete Succesful
     
        
            
            
  '/products/{productId}/publish':
    post:
      tags:
        - Product Operations
      summary: Publishes product based on product Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to publish
          schema:
            type: string
      description: Publishes product based on the product Id
      operationId: publishService
      responses:
        '200':
          description: Publish Succesful
     
        
            
            
  '/products/{productId}/unpublish':
    post:
      tags:
        - Product Operations
      summary: Unpublishes the product base on the product Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to unpublish
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: unpublishService
      responses:
        '200':
          description: Unpublish Succesful
     
        
            
            
  '/products/{productId}/builds':
    get:
      tags:
        - Product Build Services
      summary: Returns the list of builds based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getBuilds
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/License'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/License'
     
        
            
    post:
      tags:
        - Product Build Services
      summary: Adds a new build based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Build'
 
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Build'
  
      operationId: addBuild
      responses:
        '200':
          description: Add Build Succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            

    put:
      tags:
        - Product Build Services
      summary: Updates the build based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to update
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Build'
  
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Build'
 
      operationId: updateBuild
      responses:
        '200':
          description: Update Succesful
     
        
            
                        
            
  '/products/{productId}/builds/{buildId}':
    get:
      tags:
        - Product Build Services
      summary: Retrieves the build based on build and product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getBuild
      responses:
        '200':
          description: Build located using product Id and build Id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Build'
            application/json:
              schema:
                $ref: '#/components/schemas/Build'
     
        
            
            

    delete:
      tags:
        - Product Build Services
      summary: Deletes the product based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to delete
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteBuild
      responses:
        '200':
          description: Delete Succesful
     
        
            
            
  /interfaces:
    post:
      tags:
        - Interface Services
      summary: Adds a new interface to the marketplace
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        $ref: '#/components/requestBodies/Interface'
      description: Adds a new interface to the marketplace
      operationId: addInterface
      responses:
        '200':
          description: Add Interface was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
           
            
    put:
      tags:
        - Interface Services
      summary: Updates the interface
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        $ref: '#/components/requestBodies/Interface'
      description: ''
      operationId: updateInterface
      responses:
        '200':
          description: Update Succesful
     
        
            
                        
  '/interfaces/{interfaceId}':
    get:
      tags:
        - Interface Services
      summary: Retrieves the interface based on interface id
      parameters:
        - in: path
          name: interfaceId
          required: true
          description: Id of the interface to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getInterface
      responses:
        '200':
          description: Interface
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Interface'
            application/xml:
              schema:
                $ref: '#/components/schemas/Interface'
     
        
            
            

    delete:
      tags:
        - Interface Services
      summary: Deletes the interface based on interface id
      parameters:
        - in: path
          name: interfaceId
          required: true
          description: Id of the license to delete
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteInterface
      responses:
        '200':
          description: Delete Succesful
     
        
            
            
  /users:
    get:
      tags:
        - User Services
      summary: Returns the list of users
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getUsers
      responses:
        '200':
          description: User located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/User'
            application/json:
              schema:
                $ref: '#/components/schemas/User'
     
        
            
              
    post:
      tags:
        - User Services
      summary: Adds a new user
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        $ref: '#/components/requestBodies/User'
      description: Adds a new User
      operationId: addUser
      responses:
        '200':
          description: Add User was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - User Services
      summary: Updates the user
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the user to update
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: updateUser
      responses:
        '200':
          description: Update User was succesful
     
        
            
                        
  '/users/{userId}':
    get:
      tags:
        - User Services
      summary: Retrieves the user based on user id
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the user to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getUser
      responses:
        '200':
          description: User located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/User'
            application/json:
              schema:
                $ref: '#/components/schemas/User'
     
        
            
            
 
    delete:
      tags:
        - User Services
      summary: Deletes the license by Id
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the license to delete
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteUser
      responses:
        '200':
          description: Delete User was succesful
     
        
            
            
  '/users/{userId}/identities':
    get:
      tags:
        - User Services
      summary: Returns the list of identities based on user id
      parameters:
        - in: path
          name: userId
          required: true
          description: returns a list of user identities
          schema:
            type: string
      description: ''
      operationId: getUserIdentities
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Identity'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Identity'
     
        
            
            
  '/users/{userId}/platforms':
    get:
      tags:
        - Platform Services
      summary: Returns the list of platforms based on user id
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the user to update
          schema:
            type: string
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getPlatforms
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Platform'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Platform'
     
        
            
    post:
      tags:
        - Platform Services
      summary: Adds new platform based on user id
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the user to update
          schema:
            type: string
        - in: path
          name: platformId
          required: true
          description: Id of the platform to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: addUserPlatform
      responses:
        '200':
          description: Update User was succesful
     
        
            
            
    put:
      tags:
        - Platform Services
      summary: Updates the license
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the user to update
          schema:
            type: string
        - in: path
          name: platformId
          required: true
          description: Id of the platform to update
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: updateUserPlatform
      responses:
        '200':
          description: Update User was succesful
     
        
            
                        
  '/users/{userId}/platforms/{platformId}':
    get:
      tags:
        - Platform Services
      summary: Retrieves the platform based on user and platform id
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the user to retrieve
          schema:
            type: string
        - in: path
          name: platformId
          required: true
          description: Id of the platform to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getUserPlatform
      responses:
        '200':
          description: User located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Platform'
            application/json:
              schema:
                $ref: '#/components/schemas/Platform'
     
        
            
            

    delete:
      tags:
        - Platform Services
      summary: Deletes the license by Id
      parameters:
        - in: path
          name: userId
          required: true
          description: Id of the license to delete
          schema:
            type: string
        - in: path
          name: platformId
          required: true
          description: Id of the platform to retrieve
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteUserPlatform
      responses:
        '200':
          description: Delete User was succesful
     
        
            
            
  /identity_providers:
    get:
      tags:
        - Identity Provider Services
      summary: >-
        Returns the list of Identity Providers currently available in marketplace
        marketplace
      parameters:
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getIdentityProviders
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IdentityProvider'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IdentityProvider'
     
        
            
    post:
      tags:
        - Identity Provider Services
      summary: Adds a new Identity Provider to the marketplace
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        $ref: '#/components/requestBodies/IdentityProvider'
      description: Identity Provider
      operationId: addIdentityProvider
      responses:
        '200':
          description: Add Identity Provider was succesful
     
        
            
            
    put:
      tags:
        - Identity Provider Services
      summary: Updates license by Id
      parameters:
        - in: path
          name: identityProviderId
          required: true
          description: Id of the Identity Provider to update
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: updateIdentityProvider
      responses:
        '200':
          description: Update Identity Provider was succesful
     
        
            
                        
  '/identity_providers/{identityProviderId}':
    get:
      tags:
        - Identity Provider Services
      summary: Retrieves the identity provider based on identity provider id
      parameters:
        - in: path
          name: identityProviderId
          required: true
          description: Id of the Identity Provider to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getIdentityProvider
      responses:
        '200':
          description: Identity Provider located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/IdentityProvider'
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityProvider'
     
        
            
            

    delete:
      tags:
        - Identity Provider Services
      summary: Deletes the license by Id
      parameters:
        - in: path
          name: identityProviderId
          required: true
          description: Id of the Identity Provider to delete
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteIdentityProvider
      responses:
        '200':
          description: Delete Identity Provider was succesful
     
        
            
            
  /groups:
    get:
      tags:
        - Group Services
      summary: Returns the list of groups currently available in the marketplace
      parameters:
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getGroups
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Group'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Group'
     
        
            
    post:
      tags:
        - Group Services
      summary: Adds a new group to the marketplace
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        $ref: '#/components/requestBodies/Group'
      description: ''
      operationId: addGroup
      responses:
        '200':
          description: Add Group was succesful
     
        
            
            
    put:
      tags:
        - Group Services
      summary: Updates license by Id
      parameters:
        - in: path
          name: groupId
          required: true
          description: Id of the license to update
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: updateGroup
      responses:
        '200':
          description: Update Group was succesful
     
        
            
                        
  '/groups/{groupId}':
    get:
      tags:
        - Group Services
      summary: Retrieves the group based on group id
      parameters:
        - in: path
          name: groupId
          required: true
          description: Id of the group to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getGroup
      responses:
        '200':
          description: Group located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Group'
            application/json:
              schema:
                $ref: '#/components/schemas/Group'
     
        
            
            

    delete:
      tags:
        - Group Services
      summary: Deletes the license by Id
      parameters:
        - in: path
          name: groupId
          required: true
          description: Id of the license to delete
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteGroup
      responses:
        '200':
          description: Delete Group was succesful
     
        
            
            
  /roles:
    get:
      tags:
        - Role Services
      summary: Returns the list of roles currently available in the marketplace
      parameters:
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getRoles
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Role'
                xml:
                  name: licenses
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Role'
     
        
            
    post:
      tags:
        - Role Services
      summary: Adds a new Role to the marketplace
      parameters:
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        $ref: '#/components/requestBodies/Role'
      description: ''
      operationId: addRole
      responses:
        '200':
          description: Add Role was succesful
     
        
            
            
    put:
      tags:
        - Role Services
      summary: Updates license by Id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the license to update
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: updateRole
      responses:
        '200':
          description: Update Role was succesful
     
        
            
            
           
  '/roles/{roleId}':
    get:
      tags:
        - Role Services
      summary: Retrieves the role based on role id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the role to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getRole
      responses:
        '200':
          description: Role located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Role'
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
     
        
            
            
    delete:    
      tags:
        - Role Services
      summary: Deletes the license by Id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the license to delete
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteRole
      responses:
        '200':
          description: Delete Role was succesful
     
        
            
            
  '/products/{productId}/logos':
    get:
      tags:
        - Product Logo Services
      summary: Returns the list of logos based on the product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the license to retrieve
          schema:
            type: string
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getLogos
      responses:
        '200':
          description: Logo
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Logo'
                xml:
                  name: products
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Logo'
     
        
            
    post:
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the logo to retrieve
          schema:
            type: string
      tags:
        - Product Logo Services
      summary: Adds a new logo based on product id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Logo'
 
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Logo'
  
        description: Logo to be added to the marketplace
        required: true
      operationId: createLogo
      responses:
        '200':
          description: Add Logo was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Product Logo Services
      summary: Updates logo by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product
          schema:
            type: string
        - in: path
          name: logoId
          required: true
          description: Id of the logo to update
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Logo'
 
          application/xml:
            schema:
              $ref: '#/components/schemas/Logo'
 
        description: Logo to be added to the marketplace
        required: true
      operationId: updateLogo
      responses:
        '200':
          description: True for updated
     
        
            
                        
  '/products/{productId}/logos/{logoId}':
    get:
      tags:
        - Product Logo Services
      summary: Retrieves the logo based on product and logo id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to retrieve logos
          schema:
            type: string
        - in: path
          name: logoId
          required: true
          description: Id of the logo to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getLogo
      responses:
        '200':
          description: Logo located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Logo'
 
            application/json:
              schema:
                $ref: '#/components/schemas/Logo'
  
     
        
            

    delete:
      tags:
        - Product Logo Services
      summary: Deletes the logo by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product
          schema:
            type: string
        - in: path
          name: logoId
          required: true
          description: Id of the logo to delete
          schema:
            type: string
      operationId: deleteLogo
      responses:
        '200':
          description: True if delete was successful
     
        
            
            
  '/products/{productId}/screenshots':
    get:
      tags:
        - Product Screenshot Services
      summary: Returns the list of screenshots based on product id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to retrieve screenshots from
          schema:
            type: string
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getScreenshots
      responses:
        '200':
          description: Screenshot
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Screenshot'
                xml:
                  name: products
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Screenshot'
     
        
            
    post:
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to retrieve
          schema:
            type: string
      tags:
        - Product Screenshot Services
      summary: Adds a new screenshots based on product id
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Screenshot'
 
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Screenshot'
    
        description: Screenshot to be added to the marketplace
        required: true
      operationId: createScreenshot
      responses:
        '200':
          description: Add Screenshot was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Product Screenshot Services
      summary: Updates license by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the license to retrieve
          schema:
            type: string
        - in: path
          name: screenshotId
          required: true
          description: Id of the screenshot to retrieve
          schema:
            type: string            
        - in: path
          name: logoId
          required: true
          description: Id of the license to retrieve
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Screenshot'
          application/xml:
            schema:
              $ref: '#/components/schemas/Screenshot'
        description: Screenshot to be added to the marketplace
        required: true
      operationId: updateScreenshot
      responses:
        '200':
          description: True for updated
     
        
            
                        
  '/products/{productId}/screenshots/{screenshotId}':
    get:
      tags:
        - Product Screenshot Services
      summary: Retrieves the screenshot based on product and screenshot id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the license to retrieve
          schema:
            type: string
        - in: path
          name: screenshotId
          required: true
          description: Id of the screenshot to retrieve
          schema:
            type: string            
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getScreenshot
      responses:
        '200':
          description: Screenshot located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Screenshot'
  
  
            application/json:
              schema:
                $ref: '#/components/schemas/Screenshot'
     
 
     
        
            

    delete:
      tags:
        - Product Screenshot Services
      summary: Deletes the license by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the license to delete
          schema:
            type: string
        - in: path
          name: screenshotId
          required: true
          description: Id of the screenshot to retrieve
          schema:
            type: string            
        - in: path
          name: logoId
          required: true
          description: Id of the license to retrieve
          schema:
            type: string
      operationId: deleteScreenshot
      responses:
        '200':
          description: True if delete was successful
     
        
            
            
  '/products/{productId}/builds/{buildId}/configurations':
    get:
      tags:
        - Product Build Configuration Services
      summary: Returns the list of configurations based on product and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getConfigurations
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Configuration'
                xml:
                  name: configurations
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Configuration'
     
        
            
    post:
      tags:
        - Product Build Configuration Services
      summary: Adds a new configuration based on prodcut and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Configuration'
           
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Configuration'
      operationId: addConfiguration
      responses:
        '200':
          description: Add Configuration Succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Product Build Configuration Services
      summary: Updates product by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to update
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: Configuration
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Configuration'
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Configuration'
      operationId: updateConfiguration
      responses:
        '200':
          description: Update Succesful
     
        
            
                        
  '/products/{productId}/builds/{buildId}/configurations/{configurationId}':
    get:
      tags:
        - Product Build Configuration Services
      summary: Retrieves the configuration based on product, build, configuration id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getConfiguration
      responses:
        '200':
          description: Configuration located using product Id and build Id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Configuration'
            application/json:
              schema:
                $ref: '#/components/schemas/Configuration'
     
        
            
            

    delete:
      tags:
        - Product Build Configuration Services
      summary: Deletes the Configuration by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to delete
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteConfiguration
      responses:
        '200':
          description: Delete Succesful
     
        
            
            
  '/products/{productId}/builds/{buildId}/configurations/{configurationId}/tasks':
    get:
      tags:
        - Product Build Configuration Task Services
      summary: Returns the list of tasks based on product, build, configuration id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to add build to
          schema:
            type: string            
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getConfigurationTasks
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Task'
                xml:
                  name: configurations
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Task'
     
        
            
    post:
      tags:
        - Product Build Configuration Task Services
      summary: Adds a new task based on product, build, and configuration id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to add build to
          schema:
            type: string              
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Task'
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Task'
      operationId: addConfigurationTask
      responses:
        '200':
          description: Add Configuration Succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Product Build Configuration Task Services
      summary: Updates product by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to update
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: taskId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Task'
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Task'
      operationId: updateConfigurationTask
      responses:
        '200':
          description: Update Succesful
     
        
            
                        
  '/products/{productId}/builds/{buildId}/configurations/{configurationId}/task/{taskId}':
    get:
      tags:
        - Product Build Configuration Task Services
      summary: Retrieves the task based on product, build, configuration, task id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: taskId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getConfigurationTask
      responses:
        '200':
          description: Configuration located using product Id and build Id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Task'
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
     
        
            
            
 
    delete:
      tags:
        - Product Build Configuration Task Services
      summary: Deletes the Configuration by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to delete
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: configurationId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: taskId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteConfigurationTask
      responses:
        '200':
          description: Delete Succesful
     
        
            
            
  '/products/{productId}/builds/{buildId}/dependencies':
    get:
      tags:
        - Product Build Dependency Services
      summary: Returns the list of dependencies based on product and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add dependency
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the build to add dependency
          schema:
            type: string            
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getDependencies
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Dependency'
                xml:
                  name: dependencies
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Dependency'
     
        
            
    post:
      tags:
        - Product Build Dependency Services
      summary: Adds a new dependency based on product and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to update dependency
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the build to update dependency
          schema:
            type: string                        
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Dependency'
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Dependency'
      operationId: addDependency
      responses:
        '200':
          description: Add Dependency Succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Product Build Dependency Services
      summary: Updates dependency based on product and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to update dependency
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the build to update dependency
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Dependency'
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Dependency'
      operationId: updateDepenedency
      responses:
        '200':
          description: Update Succesful
     
        
            
                        
  '/products/{productId}/builds/{buildId}/dependencies/{dependencyId}':
    get:
      tags:
        - Product Build Dependency Services
      summary: Retrieves the dependency based on product, build and dependency id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: dependencyId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getDependency
      responses:
        '200':
          description: Dependency located using product Id and build Id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Dependency'
            application/json:
              schema:
                $ref: '#/components/schemas/Dependency'
     
        
            
            

    delete:
      tags:
        - Product Build Dependency Services
      summary: Deletes dependency based on product, build and dependency id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to delete
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: dependencyId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteDependency
      responses:
        '200':
          description: Delete Succesful
     
        
            
            
  '/products/{productId}/builds/{buildId}/exposures':
    get:
      tags:
        - Product Build Exposure Services
      summary: Returns the list of exposures based on product and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string            
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getExposures
      responses:
        '200':
          description: License
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Exposure'
                xml:
                  name: exposures
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Exposure'
     
        
            
    post:
      tags:
        - Product Build Exposure Services
      summary: Adds a new exposures based on product and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to add build to
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string            
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Exposure'
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Exposure'
 
      operationId: addExposure
      responses:
        '200':
          description: Add Dependency Succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Product Build Exposure Services
      summary: Updates product by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to update
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: exposureId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Exposure'
  
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Exposure'
           
      operationId: updateExposure
      responses:
        '200':
          description: Update Succesful
     
        
            
                        
  '/products/{productId}/builds/{buildId}/exposures/{exposureId}':
    get:
      tags:
        - Product Build Exposure Services
      summary: Retrieves the exposure based on product and build id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: exposureId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getExposure
      responses:
        '200':
          description: Dependency located using product Id and build Id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Exposure'
            application/json:
              schema:
                $ref: '#/components/schemas/Exposure'
     
        
            
            

    delete:
      tags:
        - Product Build Exposure Services
      summary: Deletes the Dependency by Id
      parameters:
        - in: path
          name: productId
          required: true
          description: Id of the product to delete
          schema:
            type: string
        - in: path
          name: buildId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: path
          name: exposureId
          required: true
          description: Id of the products to retrieve
          schema:
            type: string
        - in: query
          name: format
          required: false
          description: format
          schema:
            type: string
      description: ''
      operationId: deleteExposure
      responses:
        '200':
          description: Delete Succesful
     
        
            
            
  /entitlements:
    get:
      tags:
        - Entitlement Services
      summary: Returns the list of entitlements currently available by the marketplace
      parameters:
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getEntitlements
      responses:
        '200':
          description: Entitlement
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entitlement'
                xml:
                  name: entitlements
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Entitlement'
     
        
            
    post:
      tags:
        - Entitlement Services
      summary: Adds a new entitlement to the marketplace
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Entitlement'
     
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Entitlement'
     
        description: Entitlement to be added to the marketplace
        required: true
      operationId: createEntitlement
      responses:
        '200':
          description: Add Entitlement was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
  '/entitlements/{entitlementId}':
    get:
      tags:
        - Entitlement Services
      summary: Retrieves the entitlement based on entitlement id 
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the entitlement to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getEntitlement
      responses:
        '200':
          description: Entitlement located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Entitlement'
   
            application/json:
              schema:
                $ref: '#/components/schemas/Entitlement'
         
     
        
            
    put:
      tags:
        - Entitlement Services
      summary: Updates entitlement by Id
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the entitlement to retrieve
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Entitlement'
          
          application/xml:
            schema:
              $ref: '#/components/schemas/Entitlement'
           
        description: Entitlement to be added to the marketplace
        required: true
      operationId: updateEntitlement
      responses:
        '200':
          description: True for updated
     
        
            
            
    delete:
      tags:
        - Entitlement Services
      summary: Deletes the entitlement by Id
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the entitlement to delete
          schema:
            type: string
      operationId: deleteEntitlement
      responses:
        '200':
          description: True if delete was successful
     
        
            
            
  /attempts:
    get:
      tags:
        - Attempt Services
      summary: Returns the list of attempts currently available in the marketplace
      parameters:
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getAttempts
      responses:
        '200':
          description: Attempt
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Attempt'
                xml:
                  name: attempts
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Attempt'
     
        
          
    post:
      tags:
        - Attempt Services
      summary: Adds a new attempt to the marketplace
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Attempt'
           
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Attempt'
            
        description: Attempt to be added to the marketplace
        required: true
      operationId: createAttempt
      responses:
        '200':
          description: Add Attempt was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
          
    put:
      tags:
        - Attempt Services
      summary: Updates attempt by Id
      parameters:
        - in: path
          name: attemptId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Attempt'
            
          application/xml:
            schema:
              $ref: '#/components/schemas/Attempt'
             
        description: Attempt to be added to the marketplace
        required: true
      operationId: updateAttempt
      responses:
        '200':
          description: True for updated
     
        
            - 'write:attempts'
            - 'read:attempts'            
  '/attempts/{attemptId}':
    get:
      tags:
        - Attempt Services
      summary: Retrieves the attempt based on attempt id
      parameters:
        - in: path
          name: attemptId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getAttempt
      responses:
        '200':
          description: Attempt located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Attempt'
              
            application/json:
              schema:
                $ref: '#/components/schemas/Attempt'
              
     
        
            

    delete:
      tags:
        - Attempt Services
      summary: Deletes the attempt by Id
      parameters:
        - in: path
          name: attemptId
          required: true
          description: Id of the attempt to delete
          schema:
            type: string
      operationId: deleteAttempt
      responses:
        '200':
          description: True if delete was successful
     
        
            
            
  '/roles/{roleId}/appointments':
    get:
      tags:
        - Role Appointment Services
      summary: Returns the list of appointments based on role id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getAppointments
      responses:
        '200':
          description: Appointment
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Appointment'
                xml:
                  name: appointments
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Appointment'
     
        
            
    post:
      tags:
        - Role Appointment Services
      summary: Adds a new appointments based on role id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Appointment'
         
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Appointment'
           
        description: Appointment to be added to the marketplace
        required: true
      operationId: createAppointment
      responses:
        '200':
          description: Add Appointment was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Role Appointment Services
      summary: Updates appointment specified by role id and appointment id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
        - in: path
          name: appointmentId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Appointment'
       
          application/xml:
            schema:
              $ref: '#/components/schemas/Appointment'
           
        description: Appointment to be added to the marketplace
        required: true
      operationId: updateAppointment
      responses:
        '200':
          description: True for updated
     
        
            
                        
  '/roles/{roleId}/appointments/{appointmentId}':
    get:
      tags:
        - Role Appointment Services
      summary: Retrieves the appointment based on role and appointment id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
        - in: path
          name: appointmentId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getAppointment
      responses:
        '200':
          description: Appointment located using id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Appointment'
           
            application/json:
              schema:
                $ref: '#/components/schemas/Appointment'
             
     
        
            

    delete:
      tags:
        - Role Appointment Services
      summary: Deletes the appointment specified by role id and appointment id
      parameters:
        - in: path
          name: roleId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
        - in: path
          name: appointmentId
          required: true
          description: Id of the attempt to retrieve
          schema:
            type: string
      operationId: deleteAppointment
      responses:
        '200':
          description: True if delete was successful
     
        
            
            
  '/entitlements/{entitlementId}/claims':
    get:
      tags:
        - Entitlement Claim Services
      summary: Returns the list of claims based on entitlement id
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
        - in: query
          name: format
          schema:
            type: string
            enum:
              - xml
              - json
      operationId: getClaims
      responses:
        '200':
          description: Claim
          content:
            application/xml:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Appointment'
                xml:
                  name: claims
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Appointment'
     
        
            
    post:
      tags:
        - Entitlement Claim Services
      summary: Adds a new claim based on entitlement id
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/requestBodies/Claim'
           
          application/xml:
            schema:
              $ref: '#/components/requestBodies/Claim'
          
        description: Appointment to be added to the marketplace
        required: true
      operationId: createClaim
      responses:
        '200':
          description: Add Claim was succesful
          content:
            text/plain:
              schema:
                type: string
                example: 245b3a76-9768-48ac-907f-0dc45174515f
     
        
            
            
    put:
      tags:
        - Entitlement Claim Services
      summary: Updates claim specified by entitlement id and claim id
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
        - in: path
          name: claimId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Claim'
            
          application/xml:
            schema:
              $ref: '#/components/schemas/Claim'
            
        description: Appointment to be added to the marketplace
        required: true
      operationId: updateClaim
      responses:
        '200':
          description: True for updated
     
        
            
                        
  '/entitlements/{entitlementId}/claims/{claimId}':
    get:
      tags:
        - Entitlement Claim Services
      summary: Retrieves the claim based on entitlement and claim id
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
        - in: path
          name: claimId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
        - in: query
          name: format
          description: format
          schema:
            type: string
            enum:
              - xml
              - json
      description: ''
      operationId: getClaim
      responses:
        '200':
          description: Claim located using id and Entitlement id
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Claim'
             
            application/json:
              schema:
                $ref: '#/components/schemas/Claim'
            
     
        
            

    delete:
      tags:
        - Entitlement Claim Services
      summary: Deletes claim specified by entitlement id and claim id
      parameters:
        - in: path
          name: entitlementId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
        - in: path
          name: claimId
          required: true
          description: Id of the claim to retrieve
          schema:
            type: string
      operationId: deleteClaim
      responses:
        '200':
          description: True if delete was successful
     
        
            
            
externalDocs:
  description: Find out more about Health Services Platform Marketplace
  url: 'https://www.logicahealth.org'
servers:
  - url: 'http://localhost:3000'
  - url: 'https://marketplace-server-test.logicahealth.org'
  - url: 'https://marketplace-server.logicahealth.org'
components:
  requestBodies:
    License:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/License'
        application/xml:
          schema:
            $ref: '#/components/schemas/License'
      description: License
      required: true
    Product:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Product'
        application/xml:
          schema:
            $ref: '#/components/schemas/Product'
      description: Product
      required: true
    User:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User'
        application/xml:
          schema:
            $ref: '#/components/schemas/User'
      description: User
      required: true
    Build:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Build'
        application/xml:
          schema:
            $ref: '#/components/schemas/Build'
      description: Build
      required: true
    Interface:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Interface'
        application/xml:
          schema:
            $ref: '#/components/schemas/Interface'
      description: Interface
      required: true
    IdentityProvider:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/IdentityProvider'
        application/xml:
          schema:
            $ref: '#/components/schemas/IdentityProvider'
      description: Identity Provider
      required: true
    Role:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Role'
        application/xml:
          schema:
            $ref: '#/components/schemas/Role'
      description: Role
      required: true
    Group:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Group'
        application/xml:
          schema:
            $ref: '#/components/schemas/Group'
      description: A named collection of Users for purposes of batch Role assignment.
      required: true
    Logo:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Logo'
        application/xml:
          schema:
            $ref: '#/components/schemas/Logo'
      description: Logo
      required: true
    Screenshot:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Screenshot'
        application/xml:
          schema:
            $ref: '#/components/schemas/Screenshot'
      description: Screenshot
      required: true
    Configuration:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Configuration'
        application/xml:
          schema:
            $ref: '#/components/schemas/Configuration'
      description: Configuration
      required: true
    Dependency:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Dependency'
        application/xml:
          schema:
            $ref: '#/components/schemas/Dependency'
      description: Dependency
      required: true
    Exposure:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Exposure'
        application/xml:
          schema:
            $ref: '#/components/schemas/Exposure'
      description: Exposure
      required: true
    Task:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Task'
        application/xml:
          schema:
            $ref: '#/components/schemas/Task'
      description: Task
      required: true
    Entitlement:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Entitlement'
        application/xml:
          schema:
            $ref: '#/components/schemas/Entitlement'
      description: Entitlement
      required: true
    Attempt:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Entitlement'
        application/xml:
          schema:
            $ref: '#/components/schemas/Entitlement'
      description: Attempt
      required: true
    Appointment:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Appointment'
        application/xml:
          schema:
            $ref: '#/components/schemas/Appointment'
      description: Appointment
      required: true
    Claim:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Claim'
        application/xml:
          schema:
            $ref: '#/components/schemas/Claim'
      description: Claim
      required: true
  securitySchemes:
    licensestore_auth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: 'https://licensestore.swagger.io/oauth/authorize'
          scopes:
            'write:licenses': modify licenses in your account
            'read:licenses': read your licenses
    interfacestore_auth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: 'https://interfacestore.swagger.io/oauth/authorize'
          scopes:
            'write:interfaces': modify interfaces in your account
            'read:interfaces': read your interfaces
    api_key:
      type: apiKey
      name: api_key
      in: header
  schemas:
    Interface:
      type: object
      xml:
        name: Interface
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        url:
          type: string
          format: uri
        version:
          type: string
        ordinal:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    User:
      type: object
      xml:
        name: User
      properties:
        id:
          type: string
          format: uuid
        familyName:
          type: string
        givenName:
          type: string
        email:
          type: string
          format: email
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Role:
      type: object
      xml:
        name: role
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        permissions:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Group:
      type: object
      xml:
        name: group
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        description:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    License:
      type: object
      xml:
        name: license
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        url:
          type: string
          format: url
        path:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Product:
      type: object
      xml:
        name: product
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        description:
          type: string
        uri:
          type: string
          format: uri
        support:
          type: string
        license:
          type: string
          format: uuid
        approved_at:
          type: string
          format: date-time
        visible_from:
          type: string
          format: date-time
        blob:
          type: string
          format: binary
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Build:
      type: object
      xml:
        name: build
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        softwareVersion:
          type: string
        buildVersion:
          type: string
        containerRepository:
          type: string
        containerTag:
          type: string
        validatedAt:
          type: string
          format: date-time
        publishedAt:
          type: string
          format: date-time
        permissions:
          type: string
        releaseNotes:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    IdentityProvider:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        clientId:
          type: string
          format: uuid
        clientSecret:
          type: string
        alternateClientId:
          type: string
          format: uuid
        configuration:
          type: string
        publicKeys:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Identity:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: string
          format: uuid
        identityProviderId:
          type: string
          format: uuid
        sub:
          type: string
        iat:
          type: string
        hd:
          type: string
        locale:
          type: string
        email:
          type: string
        jwt:
          type: string
        nofityViaEmail:
          type: string
        nofityViaSMS:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Platform:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        userId:
          type: string
          format: uuid
        publicKey:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Logo:
      type: object
      xml:
        name: logo
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        imageFileContent:
          type: string
          format: binary
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Screenshot:
      type: object
      xml:
        name: Screenshot
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        productID:
          type: string
          format: uuid
        caption:
          type: string
        imageFileContent:
          type: string
          format: binary
        imageFileSize:
          type: integer
          format: int64
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Configuration:
      type: object
      xml:
        name: configuration
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        buildId:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Dependency:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        buildId:
          type: string
          format: uuid
        interfaceId:
          type: string
          format: uuid
        required:
          type: boolean
        mappings:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Exposure:
      type: object
      xml:
        name: exposure
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        buildId:
          type: string
          format: uuid
        interfaceId:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Task:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        configurationID:
          type: string
          format: uuid
        name:
          type: string
        minimum:
          type: integer
          format: int64
        maximum:
          type: integer
          format: int64
        memory:
          type: integer
          format: int64
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Entitlement:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        userId:
          type: string
          format: uuid
        productLicenseId:
          type: string
          format: uuid
        validFrom:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Attempt:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        claimId:
          type: string
          format: uuid
        claimantId:
          type: string
          format: uuid
        claimantType:
          type: string
        productId:
          type: string
          format: uuid
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Appointment:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        entryId:
          type: string
          format: uuid
        entryType:
          type: string
        roleId:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Claim:
      type: object
      xml:
        name: identityProvider
      required:
        - name
      properties:
        id:
          type: string
          format: uuid
        claimantId:
          type: string
          format: uuid
        claimantType:
          type: string
        entitlementId:
          type: string
          format: uuid
        authorizationCount:
          type: string
        authorizedAt:
          type: string
          format: date-time
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
