Giter Site home page Giter Site logo

Comments (13)

jeremyfiel avatar jeremyfiel commented on May 25, 2024 1

Before you spend too much time on this... Wait for Redocly team to reply because there were previous issues with discriminator and composition keywords not resolving correctly. They may have more information on this issue than I do.

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

You have quite a few errors in the "not working" file.

First big thing is you have duplicate mapping keys. These four schemas are listed under components>schemas but in reality, they appear to be a Response Object and should be defined in components>responses. I moved them there and they are duplicated with existing entries. So removing these will fix a major issue.

image

The second major issue are the missing schemas and examples defined in refs. There are quite a few missing, including the entire components>examples entry. I see 96 invalid refs

image

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

@amarreo did this solve your issue?

from redoc.

amarreo avatar amarreo commented on May 25, 2024

Hi @jeremyfiel!

The problem of the missing references is known; as I explained in the "additional context" section of the issue, the original file is too big and I've just removed some parts to make the analysis easier. The question is that those missing references are also present in the "working" file, but this one is loading... (the same happens with the duplicated keys, they should be also duplicated in the working file)

If you prefer it, I can upload the big original yaml file, to discard that the performance issue could be related to those problems you have detected in the edited "working" and "not working files"...

Please, confirm it to me and I will upload the large original file.

Thanks!

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

Sure, I'll try it myself. go ahead and upload it when you get a chance

from redoc.

amarreo avatar amarreo commented on May 25, 2024

@jeremyfiel , attached the original yaml file
openapi.yaml.txt

Thanks in advance!

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

without taking hours to rebuild a working example.. I would say your liberal use of discriminator is creating havoc.
Can you explain your motive to use this property? Are you trying to do something with the code generation or expecting to document differing responses to a single endpoint?

First off, you are discriminating with circular references to the parent schema AND using @type but this property doesn't exist at most of the schemas you are trying to discriminate.

The jist is .. the discriminated property must be present in all schemas defined in your allOf array.

An example of this follows:

  • circular reference to ApiProduct schema.
  • the second subschema doesn't contain a property @type

JSON Schema doesn't use inheritance and from what I gather looking at your schemas, you're trying to do exactly this. Each subschema in a composition keyword (oneOf, anyOf , allOf) are treated as separate schemas and all instances must all be valid against each schema in an allOf scenario. This is not the case with your structure.

ApiProduct:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          description: >-
            A product offering procured by a customer or other interested party playing a party
            role. A product is realized as one or more service(s) and / or resource(s).
          properties:
            name:
              type: string
              description: Name of the product. It could be the same as the name of the product offering
            description:
              type: string
              description: >-
                Is the description of the product. It could be same description than Product
                Offering one.
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification. \

                All the possibilities are defined on ApiPurposeType. \

                Examples:
                  "AcademicResearch" \
                  "AccountManagement" \
                  "Advertising" \
                  "AntiTerrorismOperations" \
                  "CommercialResearch" \
                  "CommunicationForCustomerCare" \
                  "CommunicationManagement" \
                  "CounterMoneyLaundering" \
                  "CreditChecking" \
                  "CustomerCare" \
                    ...
            scope:
              type: array
              items:
                type: string
              description: |
                One or several scopes of the API, as stated in the API ProductSpecification. \
                Examples:
                  "sim-swap:retrieve-date" 
            grantType:
              type: array
              items:
                type: string
              description: |
                One or several grantType of the API, as stated in the API ProductSpecification. \
                Examples:
                  "authorization_code" \
                  "client_credentials" \
                  "urn:ietf:params:oauth:grant-type:token-exchange" \
                  "urn:ietf:params:oauth:grant-type:jwt-bearer" \
                  "urn:ietf:params:oauth:grant-type:saml2-bearer" \
                  "urn:ietf:params:oauth:grant-type:device_code" \
                  "urn:openid:params:grant-type:ciba" \
                    ...
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRef'
            productSpecification:
              $ref: '#/components/schemas/ProductSpecificationRef'
            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/RelatedOrderItem'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition'
            status:
              $ref: '#/components/schemas/ProductStatusType'
            creationDate:
              type: string
              format: date-time
              description: Date and time when the product was created
            startDate:
              type: string
              format: date-time
              description: Is the date from which the product starts
            orderDate:
              type: string
              format: date-time
              description: Is the date when the product was ordered
            terminationDate:
              type: string
              format: date-time
              description: Is the date when the product was terminated
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProduct: '#/components/schemas/ApiProduct'
          ApiProductDeviceLocationVerification: '#/components/schemas/ApiProductDeviceLocationVerification'

In your mapping from ApiProduct, there exists another circular reference to ApiProduct schema

ApiProductDeviceLocationVerification:
      allOf:
        - $ref: '#/components/schemas/ApiProduct'
        - type: object
          description: >-
            A product offering procured by a customer or other interested party playing a party
            role. A product is realized as one or more service(s) and / or resource(s).
          properties:
            bestAccuracy:
              type: integer
              description: Localization data accuracy

I created a partial repro and disabled all of your discriminator keywords and references to Extensible and EntityRef. I didn't go further than that but that should get you started in the right direction. There is a great primer to learn how to define discriminator a little better here

This file renders fairly quickly and without any errors.

I narrowed it down to one path and response body. I didn't want to spend too much time dissecting all of the required schemas, so they are all copied here . It doesn't mean they are all used.

openapi: 3.0.1
info:
  title: Onboarding and Ordering Component Suite
  description: >
    **API Ordering, Developer & Application Onboarding and Management**
  version: 5.0.0
paths:
  /apiProduct:
    get:
      tags:
        - apiProduct
      summary: List or find ApiProduct objects
      description: List or find ApiProduct objects
      operationId: listApiProduct
      x-fp-scopes:
        - ogwOnboardingAndOrdering:apiProd:read
      parameters: []
      responses:
        '200':
          $ref: '#/components/responses/200ApiProductArray'
components:
  schemas:
    Addressable:
      type: object
      description: Base schema for adressable entities
      properties:
        href:
          type: string
          description: Hyperlink reference
        id:
          type: string
          description: unique identifier
    Addressable_FVO:
      type: object
      description: Base schema for adressable entities
      properties:
        id:
          type: string
          description: unique identifier
    AgreementRef:
      type: object
      description: >-
        Agreement reference. An agreement represents a contract or arrangement, either written or
        verbal and sometimes enforceable by law, such as a service level agreement or a customer
        price agreement. An agreement involves a number of other business entities, such as
        products, services, and resources and/or their specifications.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          AgreementRef: '#/components/schemas/AgreementRef'
    AgreementRef_FVO:
      type: object
      description: >-
        Agreement reference. An agreement represents a contract or arrangement, either written or
        verbal and sometimes enforceable by law, such as a service level agreement or a customer
        price agreement. An agreement involves a number of other business entities, such as
        products, services, and resources and/or their specifications.
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - $ref: '#/components/schemas/EntityRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          AgreementRef: '#/components/schemas/AgreementRef_FVO'
    AgreementRef_MVO:
      type: object
      description: >-
        Agreement reference. An agreement represents a contract or arrangement, either written or
        verbal and sometimes enforceable by law, such as a service level agreement or a customer
        price agreement. An agreement involves a number of other business entities, such as
        products, services, and resources and/or their specifications.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          AgreementRef: '#/components/schemas/AgreementRef_MVO'
    ApiAuthorization:
      allOf:
        # - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Describes who has been authorized to sign the API ProductOfferingTermOrCondition.
          properties:
            name:
              type: string
              description: Name of the required authorization
            approver:
              $ref: '#/components/schemas/RelatedPartyRefOrPartyRoleRef'
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     ApiAuthorization: '#/components/schemas/ApiAuthorization'
    ApiAuthorization_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Describes who has been authorized to sign the API ProductOfferingTermOrCondition.
          properties:
            name:
              type: string
              description: Name of the required authorization
            approver:
              $ref: '#/components/schemas/RelatedPartyRefOrPartyRoleRef_FVO'
          required:
            - approver
      discriminator:
        propertyName: '@type'
        mapping:
          ApiAuthorization: '#/components/schemas/ApiAuthorization_FVO'
    ApiAuthorization_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Describes who has been authorized to sign the API ProductOfferingTermOrCondition.
          properties:
            name:
              type: string
              description: Name of the required authorization
            approver:
              $ref: '#/components/schemas/RelatedPartyRefOrPartyRoleRef_MVO'
          required:
            - approver
      discriminator:
        propertyName: '@type'
        mapping:
          ApiAuthorization: '#/components/schemas/ApiAuthorization_MVO'
    ApiConsumerPermission:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: A ApiConsumerPermission allows an Application to consume a API.
          properties:
            managedAssetGroup:
              $ref: '#/components/schemas/ApiListAssetGroup'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiConsumerPermission: '#/components/schemas/ApiConsumerPermission'
    ApiConsumerPermission_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: A ApiConsumerPermission allows an Application to consume a API.
          properties:
            managedAssetGroup:
              $ref: '#/components/schemas/ApiListAssetGroup'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiConsumerPermission: '#/components/schemas/ApiConsumerPermission_FVO'
    ApiConsumerPermission_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: A ApiConsumerPermission allows an Application to consume a API.
          properties:
            managedAssetGroup:
              $ref: '#/components/schemas/ApiListAssetGroup'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiConsumerPermission: '#/components/schemas/ApiConsumerPermission_MVO'
    ApiDigitalIdentity:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            ApiDigitalIdentity is a class that allow to describe a digital identity for an
            individual or a resource or a specific party role. One of these three MUST be provided.
            If an individual is provided, this identity will be for all her/his partyRole. To avoid
            confusion it is recommended in this case to not provide partyRoleIdentified.
          properties:
            clientId:
              type: string
              description: >-
                OAuth2 Client ID: A public identifier for apps. Even though it is public, it is best
                that it is not guessable by third parties, so many implementations use something
                like a 32-character hex string.
            redirectUrl:
              type: array
              items:
                type: string
              description: >-
                After a user successfully authorizes an application, the authorization server will
                redirect the user back to the application.
            jwksUrl:
              type: string
              description: JSON Web Key (JWK) is a data structure that represents a cryptographic key
            issuerUrl:
              type: string
              description: >-
                The issuer URL uniquely identifies a Connect2id server instance in the various
                tokens that it mints as OpenID provider / OAuth 2.0 authorisation server.
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            status:
              type: string
              description: >-
                Used to indicate the current lifecycle status of this digital identity (unknown,
                active, suspended, archived).
            credential:
              type: array
              description: >-
                A list of credential/authentification method that are used for this digital
                identity.
              items:
                $ref: '#/components/schemas/OAuth2ClientCredential'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiDigitalIdentity: '#/components/schemas/ApiDigitalIdentity'
    ApiDigitalIdentity_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          description: >-
            ApiDigitalIdentity is a class that allow to describe a digital identity for an
            individual or a resource or a specific party role. One of these three MUST be provided.
            If an individual is provided, this identity will be for all her/his partyRole. To avoid
            confusion it is recommended in this case to not provide partyRoleIdentified.
          properties:
            clientId:
              type: string
              description: >-
                OAuth2 Client ID: A public identifier for apps. Even though it is public, it is best
                that it is not guessable by third parties, so many implementations use something
                like a 32-character hex string.
            redirectUrl:
              type: array
              items:
                type: string
              description: >-
                After a user successfully authorizes an application, the authorization server will
                redirect the user back to the application.
            jwksUrl:
              type: string
              description: JSON Web Key (JWK) is a data structure that represents a cryptographic key
            issuerUrl:
              type: string
              description: >-
                The issuer URL uniquely identifies a Connect2id server instance in the various
                tokens that it mints as OpenID provider / OAuth 2.0 authorisation server.
      discriminator:
        propertyName: '@type'
        mapping:
          ApiDigitalIdentity: '#/components/schemas/ApiDigitalIdentity_FVO'
    ApiDigitalIdentity_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            ApiDigitalIdentity is a class that allow to describe a digital identity for an
            individual or a resource or a specific party role. One of these three MUST be provided.
            If an individual is provided, this identity will be for all her/his partyRole. To avoid
            confusion it is recommended in this case to not provide partyRoleIdentified.
          properties:
            clientId:
              type: string
              description: >-
                OAuth2 Client ID: A public identifier for apps. Even though it is public, it is best
                that it is not guessable by third parties, so many implementations use something
                like a 32-character hex string.
            redirectUrl:
              type: array
              items:
                type: string
              description: >-
                After a user successfully authorizes an application, the authorization server will
                redirect the user back to the application.
            jwksUrl:
              type: string
              description: JSON Web Key (JWK) is a data structure that represents a cryptographic key
            issuerUrl:
              type: string
              description: >-
                The issuer URL uniquely identifies a Connect2id server instance in the various
                tokens that it mints as OpenID provider / OAuth 2.0 authorisation server.
      discriminator:
        propertyName: '@type'
        mapping:
          ApiDigitalIdentity: '#/components/schemas/ApiDigitalIdentity_MVO'
    ApiListAssetGroup:
      allOf:
        - $ref: '#/components/schemas/AssetGroup'
        - type: object
          description: Defines a group of API assets to which access can be controlled
          properties:
            apiProduct:
              type: array
              items:
                $ref: '#/components/schemas/ProductRef'
              description: The list of permissions in this set
    ApiPermissionSet:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            The PermissionSet is a set of Permissions granted to a user (party, party role or
            resource). The set may be granted explicitly by an authorized user or may be acquired
            implicitly due to the role that the user is playing.
          properties:
            creationDate:
              type: string
              format: date-time
              description: Date when the PermissionSet was created and assigned to a user
            description:
              type: string
              description: Text describing the permission set
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            permission:
              $ref: '#/components/schemas/ApiConsumerPermission'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiPermissionSet: '#/components/schemas/ApiPermissionSet'
    ApiPermissionSet_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            The PermissionSet is a set of Permissions granted to a user (party, party role or
            resource). The set may be granted explicitly by an authorized user or may be acquired
            implicitly due to the role that the user is playing.
          properties:
            creationDate:
              type: string
              format: date-time
              description: Date when the PermissionSet was created and assigned to a user
            description:
              type: string
              description: Text describing the permission set
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            permission:
              $ref: '#/components/schemas/ApiConsumerPermission_FVO'
          required:
            - creationDate
            - permission
      discriminator:
        propertyName: '@type'
        mapping:
          ApiPermissionSet: '#/components/schemas/ApiPermissionSet_FVO'
    ApiPermissionSet_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            The PermissionSet is a set of Permissions granted to a user (party, party role or
            resource). The set may be granted explicitly by an authorized user or may be acquired
            implicitly due to the role that the user is playing.
          properties:
            creationDate:
              type: string
              format: date-time
              description: Date when the PermissionSet was created and assigned to a user
            description:
              type: string
              description: Text describing the permission set
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            permission:
              $ref: '#/components/schemas/ApiConsumerPermission_MVO'
          required:
            - creationDate
            - permission
      discriminator:
        propertyName: '@type'
        mapping:
          ApiPermissionSet: '#/components/schemas/ApiPermissionSet_MVO'
    ApiProduct:
      allOf:
        # - $ref: '#/components/schemas/Entity'
        - type: object
          description: >-
            A product offering procured by a customer or other interested party playing a party
            role. A product is realized as one or more service(s) and / or resource(s).
          properties:
            name:
              type: string
              description: Name of the product. It could be the same as the name of the product offering
            description:
              type: string
              description: >-
                Is the description of the product. It could be same description than Product
                Offering one.
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification. \

                All the possibilities are defined on ApiPurposeType. \

                Examples:
                  "AcademicResearch" \
                  "AccountManagement" \
                  "Advertising" \
                  "AntiTerrorismOperations" \
                  "CommercialResearch" \
                  "CommunicationForCustomerCare" \
                  "CommunicationManagement" \
                  "CounterMoneyLaundering" \
                  "CreditChecking" \
                  "CustomerCare" \
                    ...
            scope:
              type: array
              items:
                type: string
              description: |
                One or several scopes of the API, as stated in the API ProductSpecification. \
                Examples:
                  "sim-swap:retrieve-date" 
            grantType:
              type: array
              items:
                type: string
              description: |
                One or several grantType of the API, as stated in the API ProductSpecification. \
                Examples:
                  "authorization_code" \
                  "client_credentials" \
                  "urn:ietf:params:oauth:grant-type:token-exchange" \
                  "urn:ietf:params:oauth:grant-type:jwt-bearer" \
                  "urn:ietf:params:oauth:grant-type:saml2-bearer" \
                  "urn:ietf:params:oauth:grant-type:device_code" \
                  "urn:openid:params:grant-type:ciba" \
                    ...
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRef'
            productSpecification:
              $ref: '#/components/schemas/ProductSpecificationRef'
            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/RelatedOrderItem'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition'
            status:
              $ref: '#/components/schemas/ProductStatusType'
            creationDate:
              type: string
              format: date-time
              description: Date and time when the product was created
            startDate:
              type: string
              format: date-time
              description: Is the date from which the product starts
            orderDate:
              type: string
              format: date-time
              description: Is the date when the product was ordered
            terminationDate:
              type: string
              format: date-time
              description: Is the date when the product was terminated
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef'
    ApiProductActionAdd:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionAdd is a specialization of a ProductAction, for the context
            for action to add a product.
          properties:
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification. \

                All the possibilities are defined on ApiPurposeType. \

                Examples:
                  "AcademicResearch" \
                  "AccountManagement" \
                  "Advertising" \
                  "AntiTerrorismOperations" \
                  "CommercialResearch" \
                  "CommunicationForCustomerCare" \
                  "CommunicationManagement" \
                  "CounterMoneyLaundering" \
                  "CreditChecking" \
                  "CustomerCare" \
                    ...
            scope:
              type: array
              items:
                type: string
              description: |
                One or several scopes of the API, as stated in the API ProductSpecification. \
                Examples:
                  "sim-swap:retrieve-date" 
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionAdd: '#/components/schemas/ApiProductActionAdd'
          ApiProductActionAddDeviceLocationVerification: '#/components/schemas/ApiProductActionAddDeviceLocationVerification'
    ApiProductActionAddDeviceLocationVerification:
      allOf:
        - $ref: '#/components/schemas/ApiProductActionAdd'
        - type: object
          description: >-
            An ApiProductActionAddDeviceLocationVerification is a specialization of a ProductAction
            for Device Location Verification API, for the context for action to add a
            product.
          properties:
            bestAccuracy:
              type: integer
              description: Localization data accuracy
            purpose:
              type: string
              enum:
                - FraudPreventionAndDetection
                - CommercialResearch
    ApiProductActionAdd_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionAdd is a specialization of a ProductAction, for the context
            for action to add a product.
          properties:
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification. \

                All the possibilities are defined on ApiPurposeType. \

                Examples:
                  "AcademicResearch" \
                  "AccountManagement" \
                  "Advertising" \
                  "AntiTerrorismOperations" \
                  "CommercialResearch" \
                  "CommunicationForCustomerCare" \
                  "CommunicationManagement" \
                  "CounterMoneyLaundering" \
                  "CreditChecking" \
                  "CustomerCare" \
                    ...
            scope:
              type: array
              items:
                type: string
              description: |
                One or several scopes of the API, as stated in the API ProductSpecification. \
                Examples:
                  "sim-swap:retrieve-date" 
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef_FVO'
          required:
            - targetApplication
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionAdd: '#/components/schemas/ApiProductActionAdd_FVO'
    ApiProductActionAdd_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionAdd is a specialization of a ProductAction, for the context
            for action to add a product.
          properties:
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification. \

                All the possibilities are defined on ApiPurposeType. \

                Examples:
                  "AcademicResearch" \
                  "AccountManagement" \
                  "Advertising" \
                  "AntiTerrorismOperations" \
                  "CommercialResearch" \
                  "CommunicationForCustomerCare" \
                  "CommunicationManagement" \
                  "CounterMoneyLaundering" \
                  "CreditChecking" \
                  "CustomerCare" \
                    ...
            scope:
              type: array
              items:
                type: string
              description: |
                One or several scopes of the API, as stated in the API ProductSpecification. \
                Examples:
                  "sim-swap:retrieve-date" 
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef_MVO'
          required:
            - targetApplication
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionAdd: '#/components/schemas/ApiProductActionAdd_MVO'
    ApiProductActionDelete:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionDelete is a specialization of a ProductAction, for the
            context for action to delete a product. 
          properties:
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionDelete: '#/components/schemas/ApiProductActionDelete'
          ApiProductActionDeleteDeviceLocationVerification: '#/components/schemas/ApiProductActionDeleteDeviceLocationVerification'
    ApiProductActionDeleteDeviceLocationVerification:
      type: object
      description: >-
        An ApiProductActionDeleteDeviceLocationVerification is a specialization of a ProductAction
        for Device Location Verification API, for the context for action to delete a
        product.
      allOf:
        - $ref: '#/components/schemas/ApiProductActionDelete'
    ApiProductActionDelete_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionDelete is a specialization of a ProductAction, for the
            context for action to delete a product. 
          properties:
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionDelete: '#/components/schemas/ApiProductActionDelete_FVO'
    ApiProductActionDelete_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionDelete is a specialization of a ProductAction, for the
            context for action to delete a product. 
          properties:
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionDelete: '#/components/schemas/ApiProductActionDelete_MVO'
    ApiProductActionModify:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionModify is a specialization of a ProductAction, for the
            context for action to modify a product. The values in the schema shall override the
            values in the Product; it means if the purpose values were [A,B] then if in the modify
            productAction the purpose values are [A,C] it means the purpose B will be removed and
            purpose C will be added.
          properties:
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >-
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification.
            scope:
              type: array
              items:
                type: string
              description: 'One or several scopes of the API, as stated in the API ProductSpecification.'
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionModify: '#/components/schemas/ApiProductActionModify'
          ApiProductActionModifyDeviceLocationVerification: '#/components/schemas/ApiProductActionModifyDeviceLocationVerification'
    ApiProductActionModifyDeviceLocationVerification:
      allOf:
        - $ref: '#/components/schemas/ApiProductActionModify'
        - type: object
          description: >-
            An ApiProductActionModifyDeviceLocationVerification is a specialization of a
            ProductAction for Device Location Verification API, for the context for action
            to modify a product.
          properties:
            bestAccuracy:
              type: integer
              description: Localization data accuracy
            purpose:
              type: string
              enum:
                - FraudPreventionAndDetection
                - CommercialResearch
    ApiProductActionModify_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionModify is a specialization of a ProductAction, for the
            context for action to modify a product. The values in the schema shall override the
            values in the Product; it means if the purpose values were [A,B] then if in the modify
            productAction the purpose values are [A,C] it means the purpose B will be removed and
            purpose C will be added.
          properties:
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >-
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification.
            scope:
              type: array
              items:
                type: string
              description: 'One or several scopes of the API, as stated in the API ProductSpecification.'
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionModify: '#/components/schemas/ApiProductActionModify_FVO'
    ApiProductActionModify_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An ApiProductActionModify is a specialization of a ProductAction, for the
            context for action to modify a product. The values in the schema shall override the
            values in the Product; it means if the purpose values were [A,B] then if in the modify
            productAction the purpose values are [A,C] it means the purpose B will be removed and
            purpose C will be added.
          properties:
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >-
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification.
            scope:
              type: array
              items:
                type: string
              description: 'One or several scopes of the API, as stated in the API ProductSpecification.'
            targetApplication:
              $ref: '#/components/schemas/ApplicationRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductActionModify: '#/components/schemas/ApiProductActionModify_MVO'
    ApiProductDeviceLocationVerification:
      allOf:
        - $ref: '#/components/schemas/ApiProduct'
        - type: object
          description: >-
            A product offering procured by a customer or other interested party playing a party
            role. A product is realized as one or more service(s) and / or resource(s).
          properties:
            bestAccuracy:
              type: integer
              description: Localization data accuracy
    ApiProductOrder:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          description: >-
            An ApiProductOrder is a specialization of a ProductOrder, which can be used to
            place an order between a customer and a service provider or between a service provider
            and a partner and vice versa.
          properties:
            description:
              type: string
              description: Description of the product order
            externalId:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/DCSProductOrderItem'
              minItems: 1
            agreement:
              type: array
              description: A reference to an agreement defined in the context of the product order
              items:
                $ref: '#/components/schemas/AgreementRef'
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef'
            state:
              $ref: '#/components/schemas/ProductOrderStateType'
            creationDate:
              type: string
              format: date-time
              description: Date and time when the ProductOrder was created
            expectedCompletionDate:
              type: string
              format: date-time
              description: Expected delivery date amended by the provider
            completionDate:
              type: string
              format: date-time
              description: Date when the ProductOrder was completed
            productOrderErrorMessage:
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderErrorMessage'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductOrder: '#/components/schemas/ApiProductOrder'
    ApiProductOrderAttributeValueChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApiProductOrderAttributeValueChangeEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApiProductOrderAttributeValueChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductOrderAttributeValueChangeEvent: '#/components/schemas/ApiProductOrderAttributeValueChangeEvent'
    ApiProductOrderAttributeValueChangeEventPayload:
      type: object
      description: ApiProductOrderAttributeValueChangeEventPayload
      properties:
        productOrder:
          $ref: '#/components/schemas/ApiProductOrder'
    ApiProductOrderCreateEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApiProductOrderCreateEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApiProductOrderCreateEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductOrderCreateEvent: '#/components/schemas/ApiProductOrderCreateEvent'
    ApiProductOrderCreateEventPayload:
      type: object
      description: ApiProductOrderCreateEventPayload
      properties:
        productOrder:
          $ref: '#/components/schemas/ApiProductOrder'
    ApiProductOrderErrorMessageEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApiProductOrderErrorMessageEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApiProductOrderErrorMessageEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductOrderErrorMessageEvent: '#/components/schemas/ApiProductOrderErrorMessageEvent'
    ApiProductOrderErrorMessageEventPayload:
      type: object
      description: ApiProductOrderErrorMessageEventPayload
      properties:
        productOrder:
          $ref: '#/components/schemas/ApiProductOrder'
    ApiProductOrderItemAdd:
      allOf:
        - $ref: '#/components/schemas/DCSProductOrderItem'
        - type: object
          description: >-
            An ApiProductOrderItemAdd is a specialization of a ProductOrderItem, for the
            context for action to add a product. An identified part of the order. A product order is
            decomposed into one or more order items.
          properties:
            id:
              type: string
              description: >-
                Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,
                ...)
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRef'
            productAction:
              $ref: '#/components/schemas/ApiProductActionAdd'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition'
            state:
              $ref: '#/components/schemas/ProductOrderItemStateType'
            product:
              $ref: '#/components/schemas/ApiProductRefOrValue'
    ApiProductOrderItemAdd_FVO:
      allOf:
        - $ref: '#/components/schemas/DCSProductOrderItem_FVO'
        - type: object
          description: >-
            An ApiProductOrderItemAdd is a specialization of a ProductOrderItem, for the
            context for action to add a product. An identified part of the order. A product order is
            decomposed into one or more order items.
          properties:
            id:
              type: string
              description: >-
                Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,
                ...)
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRef_FVO'
            productAction:
              $ref: '#/components/schemas/ApiProductActionAdd_FVO'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition_FVO'
            state:
              $ref: '#/components/schemas/ProductOrderItemStateType'
            product:
              $ref: '#/components/schemas/ApiProductRefOrValue'
          required:
            - id
            - productOffering
            - signedTermOrCondition
            - productAction
    ApiProductOrderItemDelete:
      allOf:
        - $ref: '#/components/schemas/DCSProductOrderItem'
        - type: object
          description: >-
            An ApiProductOrderItemDelete is a specialization of a ProductOrderItem, for the
            context for action to delete a product. An identified part of the order. A product order
            is decomposed into one or more order items.
          properties:
            id:
              type: string
              description: >-
                Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,
                ...)
            productAction:
              $ref: '#/components/schemas/ApiProductActionDelete'
            product:
              $ref: '#/components/schemas/ProductRef'
            state:
              $ref: '#/components/schemas/ProductOrderItemStateType'
    ApiProductOrderItemDelete_FVO:
      allOf:
        - $ref: '#/components/schemas/DCSProductOrderItem_FVO'
        - type: object
          description: >-
            An ApiProductOrderItemDelete is a specialization of a ProductOrderItem, for the
            context for action to delete a product. An identified part of the order. A product order
            is decomposed into one or more order items.
          properties:
            id:
              type: string
              description: >-
                Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,
                ...)
            productAction:
              $ref: '#/components/schemas/ApiProductActionDelete_FVO'
            product:
              $ref: '#/components/schemas/ProductRef_FVO'
            state:
              $ref: '#/components/schemas/ProductOrderItemStateType'
          required:
            - id
            - apiProduct
            - state
    ApiProductOrderItemModify:
      allOf:
        - $ref: '#/components/schemas/DCSProductOrderItem'
        - type: object
          description: >-
            An ApiProductOrderItemModify is a specialization of a ProductOrderItem, for the
            context for action to add a product. An identified part of the order. A product order is
            decomposed into one or more order items.
          properties:
            id:
              type: string
              description: >-
                Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,
                ...)
            productAction:
              $ref: '#/components/schemas/ApiProductActionModify'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition'
            state:
              $ref: '#/components/schemas/ProductOrderItemStateType'
            product:
              $ref: '#/components/schemas/ApiProductRefOrValue'
    ApiProductOrderItemModify_FVO:
      allOf:
        - $ref: '#/components/schemas/DCSProductOrderItem_FVO'
        - type: object
          description: >-
            An ApiProductOrderItemModify is a specialization of a ProductOrderItem, for the
            context for action to add a product. An identified part of the order. A product order is
            decomposed into one or more order items.
          properties:
            id:
              type: string
              description: >-
                Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,
                ...)
            productAction:
              $ref: '#/components/schemas/ApiProductActionModify_FVO'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition_FVO'
            state:
              $ref: '#/components/schemas/ProductOrderItemStateType'
            product:
              $ref: '#/components/schemas/ApiProductRefOrValue'
          required:
            - id
            - product
            - targetApplication
            - signedTermOrCondition
    ApiProductOrderStateChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApiProductOrderStateChangeEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApiProductOrderStateChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductOrderStateChangeEvent: '#/components/schemas/ApiProductOrderStateChangeEvent'
    ApiProductOrderStateChangeEventPayload:
      type: object
      description: ApiProductOrderStateChangeEventPayload
      properties:
        productOrder:
          $ref: '#/components/schemas/ApiProductOrder'
    ApiProductOrder_FVO:
      allOf:
        - $ref: '#/components/schemas/Entity_FVO'
        - type: object
          description: >-
            An ApiProductOrder is a specialization of a ProductOrder, which can be used to
            place an order between a customer and a service provider or between a service provider
            and a partner and vice versa.
          properties:
            description:
              type: string
              description: Description of the product order
            externalId:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier_FVO'
            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/DCSProductOrderItem_FVO'
              minItems: 1
            agreement:
              type: array
              description: A reference to an agreement defined in the context of the product order
              items:
                $ref: '#/components/schemas/AgreementRef_FVO'
          required:
            - productOrderItem
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductOrder: '#/components/schemas/ApiProductOrder_FVO'
    ApiProductOrder_MVO:
      allOf:
        - $ref: '#/components/schemas/Entity_MVO'
        - type: object
          description: >-
            An ApiProductOrder is a specialization of a ProductOrder, which can be used to
            place an order between a customer and a service provider or between a service provider
            and a partner and vice versa.
          properties:
            description:
              type: string
              description: Description of the product order
            externalId:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier_MVO'
            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/DCSProductOrderItem'
              minItems: 1
            agreement:
              type: array
              description: A reference to an agreement defined in the context of the product order
              items:
                $ref: '#/components/schemas/AgreementRef_MVO'
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef_MVO'
            state:
              $ref: '#/components/schemas/ProductOrderStateType'
            creationDate:
              type: string
              format: date-time
              description: Date and time when the ProductOrder was created
            expectedCompletionDate:
              type: string
              format: date-time
              description: Expected delivery date amended by the provider
            completionDate:
              type: string
              format: date-time
              description: Date when the ProductOrder was completed
            productOrderErrorMessage:
              type: array
              items:
                $ref: '#/components/schemas/ProductOrderErrorMessage_MVO'
          required:
            - creationDate
            - state
            - apiProductOrderItem
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProductOrder: '#/components/schemas/ApiProductOrder_MVO'
    ApiProductRefOrValue:
      type: object
      description: ' Entity reference or value'
      oneOf:
        - $ref: '#/components/schemas/ProductRef'
        - $ref: '#/components/schemas/ApiProduct'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductRef: '#/components/schemas/ProductRef'
          ApiProduct: '#/components/schemas/ApiProduct'
          ApiProductDeviceLocationVerification: '#/components/schemas/ApiProductDeviceLocationVerification'
    ApiProduct_FVO:
      allOf:
        - $ref: '#/components/schemas/Entity_FVO'
        - type: object
          description: >-
            A product offering procured by a customer or other interested party playing a party
            role. A product is realized as one or more service(s) and / or resource(s).
          properties:
            name:
              type: string
              description: Name of the product. It could be the same as the name of the product offering
            description:
              type: string
              description: >-
                Is the description of the product. It could be same description than Product
                Offering one.
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification. \

                All the possibilities are defined on ApiPurposeType. \

                Examples:
                  "AcademicResearch" \
                  "AccountManagement" \
                  "Advertising" \
                  "AntiTerrorismOperations" \
                  "CommercialResearch" \
                  "CommunicationForCustomerCare" \
                  "CommunicationManagement" \
                  "CounterMoneyLaundering" \
                  "CreditChecking" \
                  "CustomerCare" \
                    ...
            scope:
              type: array
              items:
                type: string
              description: |
                One or several scopes of the API, as stated in the API ProductSpecification. \
                Examples:
                  "sim-swap:retrieve-date" 
            grantType:
              type: array
              items:
                type: string
              description: |
                One or several grantType of the API, as stated in the API ProductSpecification. \
                Examples:
                  "authorization_code" \
                  "client_credentials" \
                  "urn:ietf:params:oauth:grant-type:token-exchange" \
                  "urn:ietf:params:oauth:grant-type:jwt-bearer" \
                  "urn:ietf:params:oauth:grant-type:saml2-bearer" \
                  "urn:ietf:params:oauth:grant-type:device_code" \
                  "urn:openid:params:grant-type:ciba" \
                    ...
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRef_FVO'
            productSpecification:
              $ref: '#/components/schemas/ProductSpecificationRef_FVO'
            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/RelatedOrderItem_FVO'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition_FVO'
            status:
              $ref: '#/components/schemas/ProductStatusType'
            creationDate:
              type: string
              format: date-time
              description: Date and time when the product was created
            startDate:
              type: string
              format: date-time
              description: Is the date from which the product starts
            orderDate:
              type: string
              format: date-time
              description: Is the date when the product was ordered
            terminationDate:
              type: string
              format: date-time
              description: Is the date when the product was terminated
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProduct: '#/components/schemas/ApiProduct_FVO'
    ApiProduct_MVO:
      allOf:
        - $ref: '#/components/schemas/Entity_MVO'
        - type: object
          description: >-
            A product offering procured by a customer or other interested party playing a party
            role. A product is realized as one or more service(s) and / or resource(s).
          properties:
            name:
              type: string
              description: Name of the product. It could be the same as the name of the product offering
            description:
              type: string
              description: >-
                Is the description of the product. It could be same description than Product
                Offering one.
            purpose:
              type: array
              items:
                $ref: '#/components/schemas/ApiPurposeType'
              description: >
                Purpose of the API. Value must be one of the W3C list :
                https://w3c.github.io/dpv/dpv/#vocab-purpose, as stated in the API
                ProductSpecification. \

                All the possibilities are defined on ApiPurposeType. \

                Examples:
                  "AcademicResearch" \
                  "AccountManagement" \
                  "Advertising" \
                  "AntiTerrorismOperations" \
                  "CommercialResearch" \
                  "CommunicationForCustomerCare" \
                  "CommunicationManagement" \
                  "CounterMoneyLaundering" \
                  "CreditChecking" \
                  "CustomerCare" \
                    ...
            scope:
              type: array
              items:
                type: string
              description: |
                One or several scopes of the API, as stated in the API ProductSpecification. \
                Examples:
                  "sim-swap:retrieve-date" 
            grantType:
              type: array
              items:
                type: string
              description: |
                One or several grantType of the API, as stated in the API ProductSpecification. \
                Examples:
                  "authorization_code" \
                  "client_credentials" \
                  "urn:ietf:params:oauth:grant-type:token-exchange" \
                  "urn:ietf:params:oauth:grant-type:jwt-bearer" \
                  "urn:ietf:params:oauth:grant-type:saml2-bearer" \
                  "urn:ietf:params:oauth:grant-type:device_code" \
                  "urn:openid:params:grant-type:ciba" \
                    ...
            productOffering:
              $ref: '#/components/schemas/ProductOfferingRef_MVO'
            productSpecification:
              $ref: '#/components/schemas/ProductSpecificationRef_MVO'
            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/RelatedOrderItem_MVO'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition_MVO'
            status:
              $ref: '#/components/schemas/ProductStatusType'
            creationDate:
              type: string
              format: date-time
              description: Date and time when the product was created
            startDate:
              type: string
              format: date-time
              description: Is the date from which the product starts
            orderDate:
              type: string
              format: date-time
              description: Is the date when the product was ordered
            terminationDate:
              type: string
              format: date-time
              description: Is the date when the product was terminated
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApiProduct: '#/components/schemas/ApiProduct_MVO'
    ApiPurposeType:
      enum:
        - AcademicResearch
        - AccountManagement
        - Advertising
        - AntiTerrorismOperations
        - CommercialResearch
        - CommunicationForCustomerCare
        - CommunicationManagement
        - CounterMoneyLaundering
        - CreditChecking
        - CustomerCare
        - CustomerClaimsManagement
        - CustomerManagement
        - CustomerOrderManagement
        - CustomerRelationshipManagement
        - CustomerSolvencyMonitoring
        - DeliveryOfGoods
        - DirectMarketing
        - DisputeManagement
        - EnforceAccessControl
        - EnforceSecurity
        - EstablishContractualAgreement
        - FraudPreventionAndDetection
        - FulfilmentOfContractualObligation
        - FulfilmentOfObligation
        - HumanResourceManagement
        - IdentityVerification
        - ImproveExistingProductsAndServices
        - ImproveInternalCRMProcesses
        - IncreaseServiceRobustness
        - InternalResourceOptimisation
        - LegalCompliance
        - MaintainCreditCheckingDatabase
        - MaintainCreditRatingDatabase
        - MaintainFraudDatabase
        - Marketing
        - MemberPartnerManagement
        - NonCommercialResearch
        - OptimisationForConsumer
        - OptimisationForController
        - OptimiseUserInterface
        - OrganisationComplianceManagement
        - OrganisationGovernance
        - OrganisationRiskManagement
        - PaymentManagement
        - Personalisation
        - PersonalisedAdvertising
        - PersonalisedBenefits
        - PersonnelHiring
        - PersonnelManagement
        - PersonnelPayment
        - ProvideEventRecommendations
        - ProvidePersonalisedRecommendations
        - ProvideProductRecommendations
        - PublicRelations
        - Purpose
        - RecordManagement
        - RepairImpairments
        - RequestedServiceProvision
        - ResearchAndDevelopment
        - SearchFunctionalities
        - Sector
        - SellDataToThirdParties
        - SellInsightsFromData
        - SellProducts
        - SellProductsToDataSubject
        - ServiceOptimisation
        - ServicePersonalisation
        - ServiceProvision
        - ServiceRegistration
        - ServiceUsageAnalytics
        - SocialMediaMarketing
        - TargetedAdvertising
        - TechnicalServiceProvision
        - UserInterfacePersonalisation
        - VendorManagement
        - VendorPayment
        - VendorRecordsManagement
        - VendorSelectionAssessment
      type: string
      description: Valid values for the purpose of the API product.
    Application:
      allOf:
        - $ref: '#/components/schemas/LogicalResource'
        - type: object
          description: >-
            An Application is a kind-of LogicalResource is a type of resource that describes the
            common set of attributes shared by all concrete logical resources (e.g. TPE, MSISDN, IP
            Addresses) in the inventory.
          properties:
            commercialName:
              type: string
              description: Exact name of the Application as marketed (and known by the end-user).
            logoUrl:
              type: string
              description: Url to retrive the Application official logo.
            category:
              type: string
              description: The category of the Application
            approvalStatus:
              $ref: '#/components/schemas/ApprovalStatusType'
            approvalStatusReason:
              type: string
              description: The reason why the approval status changed.
            applicationOwner:
              $ref: '#/components/schemas/PartyRoleRef'
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef'
            externalIdentifier:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
            digitalIdentity:
              $ref: '#/components/schemas/ApiDigitalIdentity'
            apiConsumerRole:
              type: array
              items:
                $ref: '#/components/schemas/LogicalResourceRole'
              description: 'Each Service-API plays a role, and has specific permissions for use'
    ApplicationApprovalStatusChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApplicationApprovalStatusChangeEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApplicationApprovalStatusChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationApprovalStatusChangeEvent: '#/components/schemas/ApplicationApprovalStatusChangeEvent'
    ApplicationApprovalStatusChangeEventPayload:
      type: object
      description: ApplicationApprovalStatusChangeEventPayload
      properties:
        application:
          $ref: '#/components/schemas/Application'
    ApplicationAttributeValueChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApplicationAttributeValueChangeEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApplicationAttributeValueChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationAttributeValueChangeEvent: '#/components/schemas/ApplicationAttributeValueChangeEvent'
    ApplicationAttributeValueChangeEventPayload:
      type: object
      description: ApplicationAttributeValueChangeEventPayload
      properties:
        application:
          $ref: '#/components/schemas/Application'
    ApplicationCreateEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApplicationCreateEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApplicationCreateEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationCreateEvent: '#/components/schemas/ApplicationCreateEvent'
    ApplicationCreateEventPayload:
      type: object
      description: ApplicationCreateEventPayload
      properties:
        application:
          $ref: '#/components/schemas/Application'
    ApplicationOwner:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          description: >-
            Application Owner. Applicaiton Owner represents the legal representative of the
            organization in a given context.
          properties:
            name:
              type: string
              description: >-
                A word, term, or phrase by which the ApplicationOwner is known and distinguished
                from other PartyRoles. It's the name of the ApplicationOwner unique entity.
            description:
              type: string
              description: A description of the ApplicationOwner.
            engagedParty:
              $ref: '#/components/schemas/ApplicationOwnerOrganization'
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef'
            approvalStatus:
              $ref: '#/components/schemas/ApprovalStatusType'
            approvalStatusReason:
              type: string
              description: The reason why the approval status changed.
            status:
              type: string
              description: >-
                Used to track the lifecycle status of the ApplicationOwner in Channel Partner IT. So
                this attribute is allowed to be contributed by the Channel Partner and patchable.
            statusReason:
              type: string
              description: >-
                A string providing an explanation on the value of the status lifecycle. For instance
                if the status is Rejected, statusReason will provide the reason for rejection.
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwner: '#/components/schemas/ApplicationOwner'
    ApplicationOwnerApprovalStatusChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApplicationOwnerApprovalStatusChangeEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApplicationOwnerApprovalStatusChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerApprovalStatusChangeEvent: '#/components/schemas/ApplicationOwnerApprovalStatusChangeEvent'
    ApplicationOwnerApprovalStatusChangeEventPayload:
      type: object
      description: ApplicationOwnerApprovalStatusChangeEventPayload
      properties:
        applicationOwner:
          $ref: '#/components/schemas/ApplicationOwner'
    ApplicationOwnerAttributeValueChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApplicationOwnerAttributeValueChangeEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApplicationOwnerAttributeValueChangeEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerAttributeValueChangeEvent: '#/components/schemas/ApplicationOwnerAttributeValueChangeEvent'
    ApplicationOwnerAttributeValueChangeEventPayload:
      type: object
      description: ApplicationOwnerAttributeValueChangeEventPayload
      properties:
        applicationOwner:
          $ref: '#/components/schemas/ApplicationOwner'
    ApplicationOwnerCreateEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          description: ApplicationOwnerCreateEvent generic structure
          properties:
            event:
              $ref: '#/components/schemas/ApplicationOwnerCreateEventPayload'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerCreateEvent: '#/components/schemas/ApplicationOwnerCreateEvent'
    ApplicationOwnerCreateEventPayload:
      type: object
      description: ApplicationOwnerCreateEventPayload
      properties:
        applicationOwner:
          $ref: '#/components/schemas/ApplicationOwner'
    ApplicationOwnerOrganization:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            Application Organization represents a group of people identified by shared interests or
            purpose. Examples include business, department and enterprise. Because of the complex
            nature of many businesses, both organizations and organization units are represented by
            the same data.
          properties:
            name:
              type: string
              description: Organization name (department name for example)
            nameType:
              type: string
              description: 'Type of the name : Co, Inc, Ltd, etc.'
            tradingName:
              type: string
              description: Name that the organization (unit) trades under
            organizationType:
              type: string
              description: 'Type of Organization (company, department...)'
            organizationIdentification:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationIdentification'
              description: >-
                List of official identifiers given to the organization, for example company number
                in the registry of companies
            isLegalEntity:
              type: boolean
              description: >-
                If value is true, the organization is a legal entity known by a national
                referential.
            externalReference:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
              description: >-
                List of identifiers of the Party in an external system, for example when party
                information is imported from a commerce system
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
            legalRepresentative:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole'
            dataProtectionOfficer:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole'
            privacyManager:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole'
            registeredGeographicAddress:
              $ref: '#/components/schemas/GeographicAddressContactMedium'
            taxNumber:
              type: string
              description: Tax number of the Organization in the country
            jurisdiction:
              type: string
              description: Legal authority granted to the Organization to enact justice.
            privacyPolicyURL:
              type: string
              description: Url to privacy policy.
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerOrganization: '#/components/schemas/ApplicationOwnerOrganization'
    ApplicationOwnerOrganization_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          description: >-
            Application Organization represents a group of people identified by shared interests or
            purpose. Examples include business, department and enterprise. Because of the complex
            nature of many businesses, both organizations and organization units are represented by
            the same data.
          properties:
            name:
              type: string
              description: Organization name (department name for example)
            nameType:
              type: string
              description: 'Type of the name : Co, Inc, Ltd, etc.'
            tradingName:
              type: string
              description: Name that the organization (unit) trades under
            organizationType:
              type: string
              description: 'Type of Organization (company, department...)'
            organizationIdentification:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationIdentification_FVO'
              description: >-
                List of official identifiers given to the organization, for example company number
                in the registry of companies
            isLegalEntity:
              type: boolean
              description: >-
                If value is true, the organization is a legal entity known by a national
                referential.
            externalReference:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier_FVO'
              description: >-
                List of identifiers of the Party in an external system, for example when party
                information is imported from a commerce system
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium_FVO'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
            legalRepresentative:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole_FVO'
            dataProtectionOfficer:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole_FVO'
            privacyManager:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole_FVO'
            registeredGeographicAddress:
              $ref: '#/components/schemas/GeographicAddressContactMedium_FVO'
            taxNumber:
              type: string
              description: Tax number of the Organization in the country
            jurisdiction:
              type: string
              description: Legal authority granted to the Organization to enact justice.
            privacyPolicyURL:
              type: string
              description: Url to privacy policy.
          required:
            - contactMedium
            - name
            - organizationIdentification
            - registeredGeographicAddress
            - legalRepresentative
            - taxNumber
            - jurisdiction
            - tradingName
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerOrganization: '#/components/schemas/ApplicationOwnerOrganization_FVO'
    ApplicationOwnerOrganization_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            Application Organization represents a group of people identified by shared interests or
            purpose. Examples include business, department and enterprise. Because of the complex
            nature of many businesses, both organizations and organization units are represented by
            the same data.
          properties:
            name:
              type: string
              description: Organization name (department name for example)
            nameType:
              type: string
              description: 'Type of the name : Co, Inc, Ltd, etc.'
            tradingName:
              type: string
              description: Name that the organization (unit) trades under
            organizationType:
              type: string
              description: 'Type of Organization (company, department...)'
            organizationIdentification:
              type: array
              items:
                $ref: '#/components/schemas/OrganizationIdentification_MVO'
              description: >-
                List of official identifiers given to the organization, for example company number
                in the registry of companies
            isLegalEntity:
              type: boolean
              description: >-
                If value is true, the organization is a legal entity known by a national
                referential.
            externalReference:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier_MVO'
              description: >-
                List of identifiers of the Party in an external system, for example when party
                information is imported from a commerce system
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium_MVO'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
            legalRepresentative:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole_MVO'
            dataProtectionOfficer:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole_MVO'
            privacyManager:
              $ref: '#/components/schemas/ApplicationOwnerPartyOrPartyRole_MVO'
            registeredGeographicAddress:
              $ref: '#/components/schemas/GeographicAddressContactMedium_MVO'
            taxNumber:
              type: string
              description: Tax number of the Organization in the country
            jurisdiction:
              type: string
              description: Legal authority granted to the Organization to enact justice.
            privacyPolicyURL:
              type: string
              description: Url to privacy policy.
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerOrganization: '#/components/schemas/ApplicationOwnerOrganization_MVO'
    ApplicationOwnerPartyOrPartyRole:
      type: object
      description: ''
      oneOf:
        - $ref: '#/components/schemas/ApplicationOwnerRelatedIndividual'
        - $ref: '#/components/schemas/ApplicationOwnerRelatedOrganization'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedIndividual: '#/components/schemas/ApplicationOwnerRelatedIndividual'
          ApplicationOwnerRelatedOrganization: '#/components/schemas/ApplicationOwnerRelatedOrganization'
    ApplicationOwnerPartyOrPartyRole_FVO:
      type: object
      description: ''
      oneOf:
        - $ref: '#/components/schemas/ApplicationOwnerRelatedIndividual_FVO'
        - $ref: '#/components/schemas/ApplicationOwnerRelatedOrganization_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedIndividual: '#/components/schemas/ApplicationOwnerRelatedIndividual_FVO'
          ApplicationOwnerRelatedOrganization: '#/components/schemas/ApplicationOwnerRelatedOrganization_FVO'
    ApplicationOwnerPartyOrPartyRole_MVO:
      type: object
      description: ''
      oneOf:
        - $ref: '#/components/schemas/ApplicationOwnerRelatedIndividual_MVO'
        - $ref: '#/components/schemas/ApplicationOwnerRelatedOrganization_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedIndividual: '#/components/schemas/ApplicationOwnerRelatedIndividual_MVO'
          ApplicationOwnerRelatedOrganization: '#/components/schemas/ApplicationOwnerRelatedOrganization_MVO'
    ApplicationOwnerRelatedIndividual:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            ApplicationOwnerRelatedIndividual represents a single human being (a man, woman or
            child). The individual can be a customer, an employee or any other person that the
            organization needs to store information about.
          properties:
            familyName:
              type: string
              description: >-
                Contains the non-chosen or inherited name. Also known as last name in the Western
                context
            givenName:
              type: string
              description: First name of the individual
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedIndividual: '#/components/schemas/ApplicationOwnerRelatedIndividual'
    ApplicationOwnerRelatedIndividual_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          description: >-
            ApplicationOwnerRelatedIndividual represents a single human being (a man, woman or
            child). The individual can be a customer, an employee or any other person that the
            organization needs to store information about.
          properties:
            familyName:
              type: string
              description: >-
                Contains the non-chosen or inherited name. Also known as last name in the Western
                context
            givenName:
              type: string
              description: First name of the individual
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium_FVO'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
          required:
            - familyName
            - givenName
            - contactMedium
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedIndividual: '#/components/schemas/ApplicationOwnerRelatedIndividual_FVO'
    ApplicationOwnerRelatedIndividual_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            ApplicationOwnerRelatedIndividual represents a single human being (a man, woman or
            child). The individual can be a customer, an employee or any other person that the
            organization needs to store information about.
          properties:
            familyName:
              type: string
              description: >-
                Contains the non-chosen or inherited name. Also known as last name in the Western
                context
            givenName:
              type: string
              description: First name of the individual
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium_MVO'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedIndividual: '#/components/schemas/ApplicationOwnerRelatedIndividual_MVO'
    ApplicationOwnerRelatedOrganization:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            Application Organization represents a group of people identified by shared interests or
            purpose. Examples include business, department and enterprise. Because of the complex
            nature of many businesses, both organizations and organization units are represented by
            the same data.
          properties:
            name:
              type: string
              description: Organization name (department name for example)
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
            organizationType:
              type: string
              description: 'Type of Organization (company, department...)'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedOrganization: '#/components/schemas/ApplicationOwnerRelatedOrganization'
    ApplicationOwnerRelatedOrganization_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          description: >-
            Application Organization represents a group of people identified by shared interests or
            purpose. Examples include business, department and enterprise. Because of the complex
            nature of many businesses, both organizations and organization units are represented by
            the same data.
          properties:
            name:
              type: string
              description: Organization name (department name for example)
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium_FVO'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
            organizationType:
              type: string
              description: 'Type of Organization (company, department...)'
          required:
            - name
            - contactMedium
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedOrganization: '#/components/schemas/ApplicationOwnerRelatedOrganization_FVO'
    ApplicationOwnerRelatedOrganization_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            Application Organization represents a group of people identified by shared interests or
            purpose. Examples include business, department and enterprise. Because of the complex
            nature of many businesses, both organizations and organization units are represented by
            the same data.
          properties:
            name:
              type: string
              description: Organization name (department name for example)
            contactMedium:
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium_MVO'
              description: 'List of means for contacting the party, e.g. mobile phone, email address'
            organizationType:
              type: string
              description: 'Type of Organization (company, department...)'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwnerRelatedOrganization: '#/components/schemas/ApplicationOwnerRelatedOrganization_MVO'
    ApplicationOwner_FVO:
      allOf:
        - $ref: '#/components/schemas/Entity_FVO'
        - type: object
          description: >-
            Application Owner. Applicaiton Owner represents the legal representative of the
            organization in a given context.
          properties:
            name:
              type: string
              description: >-
                A word, term, or phrase by which the ApplicationOwner is known and distinguished
                from other PartyRoles. It's the name of the ApplicationOwner unique entity.
            description:
              type: string
              description: A description of the ApplicationOwner.
            engagedParty:
              $ref: '#/components/schemas/ApplicationOwnerOrganization_FVO'
            status:
              type: string
              description: >-
                Used to track the lifecycle status of the ApplicationOwner in Channel Partner IT. So
                this attribute is allowed to be contributed by the Channel Partner and patchable.
            statusReason:
              type: string
              description: >-
                A string providing an explanation on the value of the status lifecycle. For instance
                if the status is Rejected, statusReason will provide the reason for rejection.
          required:
            - engagedParty
            - name
            - description
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwner: '#/components/schemas/ApplicationOwner_FVO'
    ApplicationOwner_MVO:
      allOf:
        - $ref: '#/components/schemas/Entity_MVO'
        - type: object
          description: >-
            Application Owner. Applicaiton Owner represents the legal representative of the
            organization in a given context.
          properties:
            name:
              type: string
              description: >-
                A word, term, or phrase by which the ApplicationOwner is known and distinguished
                from other PartyRoles. It's the name of the ApplicationOwner unique entity.
            description:
              type: string
              description: A description of the ApplicationOwner.
            engagedParty:
              $ref: '#/components/schemas/ApplicationOwnerOrganization_MVO'
            status:
              type: string
              description: >-
                Used to track the lifecycle status of the ApplicationOwner in Channel Partner IT. So
                this attribute is allowed to be contributed by the Channel Partner and patchable.
            statusReason:
              type: string
              description: >-
                A string providing an explanation on the value of the status lifecycle. For instance
                if the status is Rejected, statusReason will provide the reason for rejection.
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationOwner: '#/components/schemas/ApplicationOwner_MVO'
    ApplicationRef:
      type: object
      description: Reference to an Application.
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationRef: '#/components/schemas/ApplicationRef'
    ApplicationRef_FVO:
      type: object
      description: Reference to an Application.
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationRef: '#/components/schemas/ApplicationRef_FVO'
    ApplicationRef_MVO:
      type: object
      description: Reference to an Application.
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ApplicationRef: '#/components/schemas/ApplicationRef_MVO'
    Application_FVO:
      allOf:
        - $ref: '#/components/schemas/LogicalResource'
        - type: object
          description: >-
            An Application is a kind-of LogicalResource is a type of resource that describes the
            common set of attributes shared by all concrete logical resources (e.g. TPE, MSISDN, IP
            Addresses) in the inventory.
          properties:
            commercialName:
              type: string
              description: Exact name of the Application as marketed (and known by the end-user).
            logoUrl:
              type: string
              description: Url to retrive the Application official logo.
            category:
              type: string
              description: The category of the Application
            approvalStatusReason:
              type: string
              description: The reason why the approval status changed.
            applicationOwner:
              $ref: '#/components/schemas/PartyRoleRef_FVO'
            externalIdentifier:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier_FVO'
            digitalIdentity:
              $ref: '#/components/schemas/ApiDigitalIdentity_FVO'
          required:
            - name
            - description
            - category
            - applicationOwner
            - commercialName
    Application_MVO:
      allOf:
        - $ref: '#/components/schemas/LogicalResource_MVO'
        - type: object
          description: >-
            An Application is a kind-of LogicalResource is a type of resource that describes the
            common set of attributes shared by all concrete logical resources (e.g. TPE, MSISDN, IP
            Addresses) in the inventory.
          properties:
            commercialName:
              type: string
              description: Exact name of the Application as marketed (and known by the end-user).
            logoUrl:
              type: string
              description: Url to retrive the Application official logo.
            category:
              type: string
              description: The category of the Application
            approvalStatusReason:
              type: string
              description: The reason why the approval status changed.
            externalIdentifier:
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier_MVO'
            digitalIdentity:
              $ref: '#/components/schemas/ApiDigitalIdentity_MVO'
    ApprovalStatusType:
      enum:
        - pendingApproval
        - approved
        - rejected
      type: string
      description: Valid values for an approvalStatus in the context of an approval process.
    AssetGroup:
      type: object
      description: >-
        Defines a group of assets (entities) to which access can be controlled. Specific subclasses
        allow definition in various ways (list of entities, queries, ownership by customer, etc.).
        AssetGroup is not a managed entity, its concrete subclasses are always included by value in
        their containing entities.
      allOf:
        - $ref: '#/components/schemas/Extensible'
      discriminator:
        propertyName: '@type'
        mapping:
          AssetGroup: '#/components/schemas/AssetGroup'
          ApiListAssetGroup: '#/components/schemas/ApiListAssetGroup'
    AssetGroup_FVO:
      type: object
      description: >-
        Defines a group of assets (entities) to which access can be controlled. Specific subclasses
        allow definition in various ways (list of entities, queries, ownership by customer, etc.).
        AssetGroup is not a managed entity, its concrete subclasses are always included by value in
        their containing entities.
      allOf:
        - $ref: '#/components/schemas/Extensible'
      discriminator:
        propertyName: '@type'
        mapping:
          AssetGroup: '#/components/schemas/AssetGroup_FVO'
    AssetGroup_MVO:
      type: object
      description: >-
        Defines a group of assets (entities) to which access can be controlled. Specific subclasses
        allow definition in various ways (list of entities, queries, ownership by customer, etc.).
        AssetGroup is not a managed entity, its concrete subclasses are always included by value in
        their containing entities.
      allOf:
        - $ref: '#/components/schemas/Extensible'
      discriminator:
        propertyName: '@type'
        mapping:
          AssetGroup: '#/components/schemas/AssetGroup_MVO'
    Attachment:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          description: >-
            Complements the description of an element (for instance a product) through video,
            pictures...
          properties:
            name:
              type: string
              description: The name of the attachment
            description:
              type: string
              description: A narrative text describing the content of the attachment
              example: Photograph of the Product
            url:
              type: string
              description: 'Uniform Resource Locator, is a web page address (a subset of URI)'
              example: 'http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f'
            content:
              type: string
              format: base64
              description: 'The actual contents of the attachment object, if embedded, encoded as base64'
            size:
              $ref: '#/components/schemas/Quantity'
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            attachmentType:
              type: string
              description: >-
                a business characterization of the purpose of the attachment, for example logo,
                instructionManual, contractCopy
            mimeType:
              type: string
              description: a technical characterization of the attachment content format using IETF Mime Types
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment'
    AttachmentRef:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            Attachment reference. An attachment complements the description of an element (for
            instance a product) through video, pictures
          properties:
            description:
              type: string
              description: A narrative text describing the content of the attachment
            url:
              description: Link to the attachment media/content
              type: string
      discriminator:
        propertyName: '@type'
        mapping:
          AttachmentRef: '#/components/schemas/AttachmentRef'
    AttachmentRefOrValue:
      type: object
      description: >-
        The polymorphic attributes @type, @schemaLocation & @referredType are related to the
        Attachment entity and not the AttachmentRefOrValue class itself
      oneOf:
        - $ref: '#/components/schemas/Attachment'
        - $ref: '#/components/schemas/AttachmentRef'
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment'
          AttachmentRef: '#/components/schemas/AttachmentRef'
    AttachmentRefOrValue_FVO:
      type: object
      description: >-
        The polymorphic attributes @type, @schemaLocation & @referredType are related to the
        Attachment entity and not the AttachmentRefOrValue class itself
      oneOf:
        - $ref: '#/components/schemas/Attachment_FVO'
        - $ref: '#/components/schemas/AttachmentRef'
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment_FVO'
          AttachmentRef: '#/components/schemas/AttachmentRef'
    AttachmentRefOrValue_MVO:
      type: object
      description: >-
        The polymorphic attributes @type, @schemaLocation & @referredType are related to the
        Attachment entity and not the AttachmentRefOrValue class itself
      oneOf:
        - $ref: '#/components/schemas/Attachment_MVO'
        - $ref: '#/components/schemas/AttachmentRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment_MVO'
          AttachmentRef: '#/components/schemas/AttachmentRef_MVO'
    AttachmentRef_FVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
        - type: object
          description: >-
            Attachment reference. An attachment complements the description of an element (for
            instance a product) through video, pictures
          properties:
            description:
              type: string
              description: A narrative text describing the content of the attachment
            url:
              description: Link to the attachment media/content
              type: string
      discriminator:
        propertyName: '@type'
        mapping:
          AttachmentRef: '#/components/schemas/AttachmentRef_FVO'
    AttachmentRef_MVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            Attachment reference. An attachment complements the description of an element (for
            instance a product) through video, pictures
          properties:
            description:
              type: string
              description: A narrative text describing the content of the attachment
            url:
              description: Link to the attachment media/content
              type: string
      discriminator:
        propertyName: '@type'
        mapping:
          AttachmentRef: '#/components/schemas/AttachmentRef_MVO'
    Attachment_FVO:
      allOf:
        - $ref: '#/components/schemas/Entity_FVO'
        - type: object
          description: >-
            Complements the description of an element (for instance a product) through video,
            pictures...
          properties:
            name:
              type: string
              description: The name of the attachment
            description:
              type: string
              description: A narrative text describing the content of the attachment
              example: Photograph of the Product
            url:
              type: string
              description: 'Uniform Resource Locator, is a web page address (a subset of URI)'
              example: 'http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f'
            content:
              type: string
              format: base64
              description: 'The actual contents of the attachment object, if embedded, encoded as base64'
            size:
              $ref: '#/components/schemas/Quantity'
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            attachmentType:
              type: string
              description: >-
                a business characterization of the purpose of the attachment, for example logo,
                instructionManual, contractCopy
            mimeType:
              type: string
              description: a technical characterization of the attachment content format using IETF Mime Types
          required:
            - attachmentType
            - mimeType
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment_FVO'
    Attachment_MVO:
      allOf:
        - $ref: '#/components/schemas/Entity_MVO'
        - type: object
          description: >-
            Complements the description of an element (for instance a product) through video,
            pictures...
          properties:
            name:
              type: string
              description: The name of the attachment
            description:
              type: string
              description: A narrative text describing the content of the attachment
              example: Photograph of the Product
            url:
              type: string
              description: 'Uniform Resource Locator, is a web page address (a subset of URI)'
              example: 'http://host/Content/4aafacbd-11ff-4dc8-b445-305f2215715f'
            content:
              type: string
              format: base64
              description: 'The actual contents of the attachment object, if embedded, encoded as base64'
            size:
              $ref: '#/components/schemas/Quantity'
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            attachmentType:
              type: string
              description: >-
                a business characterization of the purpose of the attachment, for example logo,
                instructionManual, contractCopy
            mimeType:
              type: string
              description: a technical characterization of the attachment content format using IETF Mime Types
      discriminator:
        propertyName: '@type'
        mapping:
          Attachment: '#/components/schemas/Attachment_MVO'
    BaseEvent:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          description: Base event with common attributes.
          properties:
            event:
              type: object
            eventId:
              type: string
              description: The identifier of the notification.
            eventTime:
              type: string
              format: date-time
              description: Time of the event occurrence.
            eventType:
              type: string
              description: The type of the notification.
            correlationId:
              type: string
              description: The correlation id for this event.
            domain:
              type: string
              description: The domain of the event.
            title:
              type: string
              description: The title of the event.
            description:
              type: string
              description: An explanatory of the event.
            priority:
              type: string
              description: A priority.
            timeOcurred:
              type: string
              format: date-time
              description: The time the event occured.
      discriminator:
        propertyName: '@type'
        mapping:
          BaseEvent: '#/components/schemas/BaseEvent'
    BaseEvent_FVO:
      allOf:
        - $ref: '#/components/schemas/Entity_FVO'
        - type: object
          description: Base event with common attributes.
          properties:
            event:
              type: object
            eventId:
              type: string
              description: The identifier of the notification.
            eventTime:
              type: string
              format: date-time
              description: Time of the event occurrence.
            eventType:
              type: string
              description: The type of the notification.
            correlationId:
              type: string
              description: The correlation id for this event.
            domain:
              type: string
              description: The domain of the event.
            title:
              type: string
              description: The title of the event.
            description:
              type: string
              description: An explanatory of the event.
            priority:
              type: string
              description: A priority.
            timeOcurred:
              type: string
              format: date-time
              description: The time the event occured.
      discriminator:
        propertyName: '@type'
        mapping:
          BaseEvent: '#/components/schemas/BaseEvent_FVO'
    BaseEvent_MVO:
      allOf:
        - $ref: '#/components/schemas/Entity_MVO'
        - type: object
          description: Base event with common attributes.
          properties:
            event:
              type: object
            eventId:
              type: string
              description: The identifier of the notification.
            eventTime:
              type: string
              format: date-time
              description: Time of the event occurrence.
            eventType:
              type: string
              description: The type of the notification.
            correlationId:
              type: string
              description: The correlation id for this event.
            domain:
              type: string
              description: The domain of the event.
            title:
              type: string
              description: The title of the event.
            description:
              type: string
              description: An explanatory of the event.
            priority:
              type: string
              description: A priority.
            timeOcurred:
              type: string
              format: date-time
              description: The time the event occured.
      discriminator:
        propertyName: '@type'
        mapping:
          BaseEvent: '#/components/schemas/BaseEvent_MVO'
    Characteristic:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Describes a given characteristic of an object or entity through a name/value pair.
          properties:
            id:
              type: string
              description: Unique identifier of the characteristic
            name:
              type: string
              description: Name of the characteristic
            valueType:
              type: string
              description: Data type of the value of the characteristic
            characteristicRelationship:
              type: array
              items:
                $ref: '#/components/schemas/CharacteristicRelationship'
      discriminator:
        propertyName: '@type'
        mapping:
          Characteristic: '#/components/schemas/Characteristic'
    CharacteristicRelationship:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Another Characteristic that is related to the current Characteristic;
          properties:
            id:
              type: string
              description: Unique identifier of the characteristic
            relationshipType:
              type: string
              description: The type of relationship
      discriminator:
        propertyName: '@type'
        mapping:
          CharacteristicRelationship: '#/components/schemas/CharacteristicRelationship'
    CharacteristicRelationship_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Another Characteristic that is related to the current Characteristic;
          properties:
            id:
              type: string
              description: Unique identifier of the characteristic
            relationshipType:
              type: string
              description: The type of relationship
          required:
            - id
            - relationshipType
      discriminator:
        propertyName: '@type'
        mapping:
          CharacteristicRelationship: '#/components/schemas/CharacteristicRelationship_FVO'
    CharacteristicRelationship_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Another Characteristic that is related to the current Characteristic;
          properties:
            id:
              type: string
              description: Unique identifier of the characteristic
            relationshipType:
              type: string
              description: The type of relationship
          required:
            - id
            - relationshipType
      discriminator:
        propertyName: '@type'
        mapping:
          CharacteristicRelationship: '#/components/schemas/CharacteristicRelationship_MVO'
    Characteristic_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Describes a given characteristic of an object or entity through a name/value pair.
          properties:
            id:
              type: string
              description: Unique identifier of the characteristic
            name:
              type: string
              description: Name of the characteristic
            valueType:
              type: string
              description: Data type of the value of the characteristic
            characteristicRelationship:
              type: array
              items:
                $ref: '#/components/schemas/CharacteristicRelationship_FVO'
          required:
            - name
      discriminator:
        propertyName: '@type'
        mapping:
          Characteristic: '#/components/schemas/Characteristic_FVO'
    Characteristic_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Describes a given characteristic of an object or entity through a name/value pair.
          properties:
            id:
              type: string
              description: Unique identifier of the characteristic
            name:
              type: string
              description: Name of the characteristic
            valueType:
              type: string
              description: Data type of the value of the characteristic
            characteristicRelationship:
              type: array
              items:
                $ref: '#/components/schemas/CharacteristicRelationship_MVO'
          required:
            - name
      discriminator:
        propertyName: '@type'
        mapping:
          Characteristic: '#/components/schemas/Characteristic_MVO'
    ContactMedium:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Indicates the contact medium that could be used to contact the party.
          properties:
            id:
              type: string
              description: Identifier for this contact medium.
            preferred:
              type: boolean
              description: 'If true, indicates that is the preferred contact medium'
            contactType:
              type: string
              description: >-
                Type of the contact medium to qualifiy it like pro email / personal email. This is
                not used to define the contact medium used.
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          ContactMedium: '#/components/schemas/ContactMedium'
          SocialContactMedium: '#/components/schemas/SocialContactMedium'
          PhoneContactMedium: '#/components/schemas/PhoneContactMedium'
          GeographicAddressContactMedium: '#/components/schemas/GeographicAddressContactMedium'
          FaxContactMedium: '#/components/schemas/FaxContactMedium'
          EmailContactMedium: '#/components/schemas/EmailContactMedium'
    ContactMedium_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          description: Indicates the contact medium that could be used to contact the party.
          properties:
            id:
              type: string
              description: Identifier for this contact medium.
            preferred:
              type: boolean
              description: 'If true, indicates that is the preferred contact medium'
            contactType:
              type: string
              description: >-
                Type of the contact medium to qualifiy it like pro email / personal email. This is
                not used to define the contact medium used.
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          ContactMedium: '#/components/schemas/ContactMedium_FVO'
          SocialContactMedium: '#/components/schemas/SocialContactMedium_FVO'
          PhoneContactMedium: '#/components/schemas/PhoneContactMedium_FVO'
          GeographicAddressContactMedium: '#/components/schemas/GeographicAddressContactMedium_FVO'
          FaxContactMedium: '#/components/schemas/FaxContactMedium_FVO'
          EmailContactMedium: '#/components/schemas/EmailContactMedium_FVO'
    ContactMedium_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Indicates the contact medium that could be used to contact the party.
          properties:
            id:
              type: string
              description: Identifier for this contact medium.
            preferred:
              type: boolean
              description: 'If true, indicates that is the preferred contact medium'
            contactType:
              type: string
              description: >-
                Type of the contact medium to qualifiy it like pro email / personal email. This is
                not used to define the contact medium used.
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          ContactMedium: '#/components/schemas/ContactMedium_MVO'
          SocialContactMedium: '#/components/schemas/SocialContactMedium_MVO'
          PhoneContactMedium: '#/components/schemas/PhoneContactMedium_MVO'
          GeographicAddressContactMedium: '#/components/schemas/GeographicAddressContactMedium_MVO'
          FaxContactMedium: '#/components/schemas/FaxContactMedium_MVO'
          EmailContactMedium: '#/components/schemas/EmailContactMedium_MVO'
    DCSProductOrderItem:
      type: object
      description: An identified part of the order. A product order is decomposed into one or more order items.
      allOf:
        - $ref: '#/components/schemas/GCProductOrderItem'
    DCSProductOrderItem_FVO:
      type: object
      description: An identified part of the order. A product order is decomposed into one or more order items.
      allOf:
        - $ref: '#/components/schemas/GCProductOrderItem_FVO'
    EmailContactMedium:
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          description: >-
            Describes an email that could be used to contact a party (an individual or an
            organization)
          properties:
            emailAddress:
              type: string
              description: Full email address in standard format
    EmailContactMedium_FVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_FVO'
        - type: object
          description: >-
            Describes an email that could be used to contact a party (an individual or an
            organization)
          properties:
            emailAddress:
              type: string
              description: Full email address in standard format
    EmailContactMedium_MVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_MVO'
        - type: object
          description: >-
            Describes an email that could be used to contact a party (an individual or an
            organization)
          properties:
            emailAddress:
              type: string
              description: Full email address in standard format
    Entity:
      type: object
      description: Base entity schema . Property.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/Addressable'
    EntityRef:
      allOf:
        # - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/Addressable'
        - type: object
          description: Entity reference schema to be use for all entityRef class.
          properties:
            id:
              type: string
              description: The identifier of the referred entity.
            href:
              type: string
              description: The URI of the referred entity.
            name:
              type: string
              description: Name of the referred entity.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
          required:
            - id
    EntityRef_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - $ref: '#/components/schemas/Addressable_FVO'
        - type: object
          description: Entity reference schema to be use for all entityRef class.
          properties:
            id:
              type: string
              description: The identifier of the referred entity.
            href:
              type: string
              description: The URI of the referred entity.
            name:
              type: string
              description: Name of the referred entity.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
          required:
            - id
    EntityRole:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/Addressable'
        - type: object
          description: The EntityRole provides a contextual role for eny Entity
          properties:
            name:
              type: string
              description: Name of the Entity Role
            description:
              type: string
              description: Description of the Entity Role
            role:
              type: string
              description: The Role of the Entity
      discriminator:
        propertyName: '@type'
        mapping:
          EntityRole: '#/components/schemas/EntityRole'
    EntityRole_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/Addressable_FVO'
        - type: object
          description: The EntityRole provides a contextual role for eny Entity
          properties:
            name:
              type: string
              description: Name of the Entity Role
            description:
              type: string
              description: Description of the Entity Role
            role:
              type: string
              description: The Role of the Entity
      discriminator:
        propertyName: '@type'
        mapping:
          EntityRole: '#/components/schemas/EntityRole_FVO'
    EntityRole_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: The EntityRole provides a contextual role for eny Entity
          properties:
            name:
              type: string
              description: Name of the Entity Role
            description:
              type: string
              description: Description of the Entity Role
            role:
              type: string
              description: The Role of the Entity
      discriminator:
        propertyName: '@type'
        mapping:
          EntityRole: '#/components/schemas/EntityRole_MVO'
    Entity_FVO:
      type: object
      description: Base entity schema . Property.
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - $ref: '#/components/schemas/Addressable_FVO'
    Entity_MVO:
      type: object
      description: Base entity schema . Property.
      allOf:
        - $ref: '#/components/schemas/Extensible'
    ErrorMessage:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: represents an Error
          properties:
            code:
              type: string
              description: error code
            reason:
              type: string
              description: Explanation of the reason for the error
            message:
              type: string
              description: More details and corrective actions related to the error
            status:
              type: string
              description: error code extension like sys-ABC-2001
            referenceError:
              type: string
              description: URI of documentation describing the error
      discriminator:
        propertyName: '@type'
        mapping:
          ErrorMessage: '#/components/schemas/ErrorMessage'
          ProductOrderErrorMessage: '#/components/schemas/ProductOrderErrorMessage'
    ErrorMessage_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: represents an Error
          properties:
            code:
              type: string
              description: error code
            reason:
              type: string
              description: Explanation of the reason for the error
            message:
              type: string
              description: More details and corrective actions related to the error
            status:
              type: string
              description: error code extension like sys-ABC-2001
            referenceError:
              type: string
              description: URI of documentation describing the error
      discriminator:
        propertyName: '@type'
        mapping:
          ErrorMessage: '#/components/schemas/ErrorMessage_FVO'
          ProductOrderErrorMessage: '#/components/schemas/ProductOrderErrorMessage_FVO'
    ErrorMessage_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: represents an Error
          properties:
            code:
              type: string
              description: error code
            reason:
              type: string
              description: Explanation of the reason for the error
            message:
              type: string
              description: More details and corrective actions related to the error
            status:
              type: string
              description: error code extension like sys-ABC-2001
            referenceError:
              type: string
              description: URI of documentation describing the error
      discriminator:
        propertyName: '@type'
        mapping:
          ErrorMessage: '#/components/schemas/ErrorMessage_MVO'
          ProductOrderErrorMessage: '#/components/schemas/ProductOrderErrorMessage_MVO'
    Event:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: event with common attributes.
          properties:
            href:
              type: string
              description: Hyperlink reference
            id:
              type: string
              description: unique identifier
            correlationId:
              type: string
              description: The correlation id for this event.
            domain:
              type: string
              description: The domain of the event.
            title:
              type: string
              description: The title of the event.
            description:
              type: string
              description: An explnatory of the event.
            priority:
              type: string
              description: A priority.
            timeOccurred:
              type: string
              format: date-time
              description: The time the event occurred.
            source:
              $ref: '#/components/schemas/EntityRef'
            reportingSystem:
              $ref: '#/components/schemas/EntityRef'
            relatedParty:
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyRefOrPartyRoleRef'
            analyticCharacteristic:
              type: array
              items:
                $ref: '#/components/schemas/Characteristic'
            eventId:
              type: string
              description: The identifier of the notification.
            eventTime:
              type: string
              format: date-time
              description: Time of the event occurrence.
            eventType:
              type: string
              description: The type of the notification.
            event:
              description: The event linked to the involved resource object
              type: object
    Event_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: event with common attributes.
          properties:
            href:
              type: string
              description: Hyperlink reference
            id:
              type: string
              description: unique identifier
            correlationId:
              type: string
              description: The correlation id for this event.
            domain:
              type: string
              description: The domain of the event.
            title:
              type: string
              description: The title of the event.
            description:
              type: string
              description: An explnatory of the event.
            priority:
              type: string
              description: A priority.
            timeOccurred:
              type: string
              format: date-time
              description: The time the event occurred.
            source:
              $ref: '#/components/schemas/EntityRef_FVO'
            reportingSystem:
              $ref: '#/components/schemas/EntityRef_FVO'
            relatedParty:
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyRefOrPartyRoleRef_FVO'
            analyticCharacteristic:
              type: array
              items:
                $ref: '#/components/schemas/Characteristic_FVO'
            eventId:
              type: string
              description: The identifier of the notification.
            eventTime:
              type: string
              format: date-time
              description: Time of the event occurrence.
            eventType:
              type: string
              description: The type of the notification.
            event:
              description: The event linked to the involved resource object
              type: object
          required:
            - eventId
            - eventTime
            - eventType
            - event
    Event_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: event with common attributes.
          properties:
            href:
              type: string
              description: Hyperlink reference
            id:
              type: string
              description: unique identifier
            correlationId:
              type: string
              description: The correlation id for this event.
            domain:
              type: string
              description: The domain of the event.
            title:
              type: string
              description: The title of the event.
            description:
              type: string
              description: An explnatory of the event.
            priority:
              type: string
              description: A priority.
            timeOccurred:
              type: string
              format: date-time
              description: The time the event occurred.
            source:
              $ref: '#/components/schemas/EntityRef'
            reportingSystem:
              $ref: '#/components/schemas/EntityRef'
            relatedParty:
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyRefOrPartyRoleRef_MVO'
            analyticCharacteristic:
              type: array
              items:
                $ref: '#/components/schemas/Characteristic_MVO'
            eventId:
              type: string
              description: The identifier of the notification.
            eventTime:
              type: string
              format: date-time
              description: Time of the event occurrence.
            eventType:
              type: string
              description: The type of the notification.
            event:
              description: The event linked to the involved resource object
              type: object
          required:
            - eventId
            - eventTime
            - eventType
            - event
    Extensible:
      type: object
      description: >-
        Base Extensible schema  - When used for in a schema it means
        that the Entity described by the schema  MUST be extended with the @type
      properties:
        '@type':
          type: string
          description: 'When sub-classing, this defines the sub-class Extensible name'
        '@baseType':
          type: string
          description: 'When sub-classing, this defines the super-class'
        '@schemaLocation':
          type: string
          description: A URI to a JSON-Schema file that defines additional attributes and relationships
      required:
        - '@type'
    Extensible_FVO:
      type: object
      description: >-
        Base Extensible schema  - When used for in a schema it means
        that the Entity described by the schema  MUST be extended with the @type
      properties:
        '@type':
          type: string
          description: 'When sub-classing, this defines the sub-class Extensible name'
        '@baseType':
          type: string
          description: 'When sub-classing, this defines the super-class'
        '@schemaLocation':
          type: string
          description: A URI to a JSON-Schema file that defines additional attributes and relationships
      required:
        - '@type'
    ExternalIdentifier:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An identification of an entity that is owned by or originates in a software system
            different from the current system, for example a ProductOrder handed off from a commerce
            platform into an order handling system. The structure identifies the system itself, the
            nature of the entity within the system (e.g. class name) and the unique ID of the entity
            within the system. It is anticipated that multiple external IDs can be held for a single
            entity, e.g. if the entity passed through multiple systems on the way to the current
            system. In this case the consumer is expected to sequence the IDs in the array in
            reverse order of provenance, i.e. most recent system first in the list.
          properties:
            owner:
              type: string
              description: Name of the external system that owns the entity.
              example: MagentoCommerce
            externalIdentifierType:
              type: string
              description: >-
                Type of the identification, typically would be the type of the entity within the
                external system
              example: ProductOrder
            id:
              type: string
              description: identification of the entity within the external system.
      discriminator:
        propertyName: '@type'
        mapping:
          ExternalIdentifier: '#/components/schemas/ExternalIdentifier'
    ExternalIdentifier_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          description: >-
            An identification of an entity that is owned by or originates in a software system
            different from the current system, for example a ProductOrder handed off from a commerce
            platform into an order handling system. The structure identifies the system itself, the
            nature of the entity within the system (e.g. class name) and the unique ID of the entity
            within the system. It is anticipated that multiple external IDs can be held for a single
            entity, e.g. if the entity passed through multiple systems on the way to the current
            system. In this case the consumer is expected to sequence the IDs in the array in
            reverse order of provenance, i.e. most recent system first in the list.
          properties:
            owner:
              type: string
              description: Name of the external system that owns the entity.
              example: MagentoCommerce
            externalIdentifierType:
              type: string
              description: >-
                Type of the identification, typically would be the type of the entity within the
                external system
              example: ProductOrder
            id:
              type: string
              description: identification of the entity within the external system.
          required:
            - id
      discriminator:
        propertyName: '@type'
        mapping:
          ExternalIdentifier: '#/components/schemas/ExternalIdentifier_FVO'
    ExternalIdentifier_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            An identification of an entity that is owned by or originates in a software system
            different from the current system, for example a ProductOrder handed off from a commerce
            platform into an order handling system. The structure identifies the system itself, the
            nature of the entity within the system (e.g. class name) and the unique ID of the entity
            within the system. It is anticipated that multiple external IDs can be held for a single
            entity, e.g. if the entity passed through multiple systems on the way to the current
            system. In this case the consumer is expected to sequence the IDs in the array in
            reverse order of provenance, i.e. most recent system first in the list.
          properties:
            owner:
              type: string
              description: Name of the external system that owns the entity.
              example: MagentoCommerce
            externalIdentifierType:
              type: string
              description: >-
                Type of the identification, typically would be the type of the entity within the
                external system
              example: ProductOrder
            id:
              type: string
              description: identification of the entity within the external system.
      discriminator:
        propertyName: '@type'
        mapping:
          ExternalIdentifier: '#/components/schemas/ExternalIdentifier_MVO'
    FaxContactMedium:
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          description: Describes a fax that could be used to contact a party (an individual or an organization)
          properties:
            faxNumber:
              type: string
              description: The fax number of the contact
    FaxContactMedium_FVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_FVO'
        - type: object
          description: Describes a fax that could be used to contact a party (an individual or an organization)
          properties:
            faxNumber:
              type: string
              description: The fax number of the contact
    FaxContactMedium_MVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_MVO'
        - type: object
          description: Describes a fax that could be used to contact a party (an individual or an organization)
          properties:
            faxNumber:
              type: string
              description: The fax number of the contact
    GCProductOrderItem:
      type: object
      description: >-
        General Context ProductOrderItem that can be used as a Domain Specialization Order Item or
        as a non-specialised OrderItem.
      allOf:
        - $ref: '#/components/schemas/Extensible'
      discriminator:
        propertyName: '@type'
        mapping:
          GCProductOrderItem: '#/components/schemas/GCProductOrderItem'
          DCSProductOrderItem: '#/components/schemas/DCSProductOrderItem'
          ApiProductOrderItemModify: '#/components/schemas/ApiProductOrderItemModify'
          ApiProductOrderItemDelete: '#/components/schemas/ApiProductOrderItemDelete'
          ApiProductOrderItemAdd: '#/components/schemas/ApiProductOrderItemAdd'
    GCProductOrderItem_FVO:
      type: object
      description: >-
        General Context ProductOrderItem that can be used as a Domain Specialization Order Item or
        as a non-specialised OrderItem.
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          GCProductOrderItem: '#/components/schemas/GCProductOrderItem_FVO'
          DCSProductOrderItem: '#/components/schemas/DCSProductOrderItem_FVO'
          ApiProductOrderItemModify: '#/components/schemas/ApiProductOrderItemModify_FVO'
          ApiProductOrderItemDelete: '#/components/schemas/ApiProductOrderItemDelete_FVO'
          ApiProductOrderItemAdd: '#/components/schemas/ApiProductOrderItemAdd_FVO'
    GCProductOrderItem_MVO:
      type: object
      description: >-
        General Context ProductOrderItem that can be used as a Domain Specialization Order Item or
        as a non-specialised OrderItem.
      allOf:
        - $ref: '#/components/schemas/Extensible'
      discriminator:
        propertyName: '@type'
        mapping:
          GCProductOrderItem: '#/components/schemas/GCProductOrderItem_MVO'
    GeographicAddressContactMedium:
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          description: >-
            Describes a geographical address that could be used to contact a party (an individual or
            an organization)
          properties:
            city:
              type: string
              description: The city
            country:
              type: string
              description: The country
            postCode:
              type: string
              description: Postcode
            stateOrProvince:
              type: string
              description: State or province
            street1:
              type: string
              description: Describes the street
            street2:
              type: string
              description: Complementary street description
            geographicAddress:
              $ref: '#/components/schemas/GeographicAddressRef'
    GeographicAddressContactMedium_FVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_FVO'
        - type: object
          description: >-
            Describes a geographical address that could be used to contact a party (an individual or
            an organization)
          properties:
            city:
              type: string
              description: The city
            country:
              type: string
              description: The country
            postCode:
              type: string
              description: Postcode
            stateOrProvince:
              type: string
              description: State or province
            street1:
              type: string
              description: Describes the street
            street2:
              type: string
              description: Complementary street description
            geographicAddress:
              $ref: '#/components/schemas/GeographicAddressRef_FVO'
    GeographicAddressContactMedium_MVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_MVO'
        - type: object
          description: >-
            Describes a geographical address that could be used to contact a party (an individual or
            an organization)
          properties:
            city:
              type: string
              description: The city
            country:
              type: string
              description: The country
            postCode:
              type: string
              description: Postcode
            stateOrProvince:
              type: string
              description: State or province
            street1:
              type: string
              description: Describes the street
            street2:
              type: string
              description: Complementary street description
            geographicAddress:
              $ref: '#/components/schemas/GeographicAddressRef_MVO'
    GeographicAddressRef:
      type: object
      description: Reference to a Geographic Address.
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          GeographicAddressRef: '#/components/schemas/GeographicAddressRef'
    GeographicAddressRef_FVO:
      type: object
      description: Reference to a Geographic Address.
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          GeographicAddressRef: '#/components/schemas/GeographicAddressRef_FVO'
    GeographicAddressRef_MVO:
      type: object
      description: Reference to a Geographic Address.
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          GeographicAddressRef: '#/components/schemas/GeographicAddressRef_MVO'
    ItemActionType:
      enum:
        - add
        - modify
        - delete
        - noChange
      type: string
      description: action to be performed on the entity managed by the item
    LogicalResource:
      type: object
      description: >-
        Logic resource is a type of resource that describes the common set of attributes shared by
        all concrete logical resources (e.g. TPE, MSISDN, IP Addresses) in the inventory.
      allOf:
        - $ref: '#/components/schemas/Resource'
    LogicalResourceRole:
      type: object
      description: Logic Resource Role
      properties:
        grantedPermissionSet:
          type: array
          items:
            $ref: '#/components/schemas/ApiPermissionSet'
    LogicalResource_MVO:
      type: object
      description: >-
        Logic resource is a type of resource that describes the common set of attributes shared by
        all concrete logical resources (e.g. TPE, MSISDN, IP Addresses) in the inventory.
      allOf:
        - $ref: '#/components/schemas/Resource_MVO'
    OAuth2ClientCredential:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            OAuth2ClientCredential describes the registration attributes in an OAuth registration
            process
          properties:
            clientSecret:
              type: string
              description: clientSecret
            state:
              type: string
              description: >-
                Used to indicate the current lifecycle state of this credential (like active,
                inactive, expired).
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          OAuth2ClientCredential: '#/components/schemas/OAuth2ClientCredential'
    OAuth2ClientCredential_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            OAuth2ClientCredential describes the registration attributes in an OAuth registration
            process
          properties:
            clientSecret:
              type: string
              description: clientSecret
            state:
              type: string
              description: >-
                Used to indicate the current lifecycle state of this credential (like active,
                inactive, expired).
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          OAuth2ClientCredential: '#/components/schemas/OAuth2ClientCredential_FVO'
    OAuth2ClientCredential_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            OAuth2ClientCredential describes the registration attributes in an OAuth registration
            process
          properties:
            clientSecret:
              type: string
              description: clientSecret
            state:
              type: string
              description: >-
                Used to indicate the current lifecycle state of this credential (like active,
                inactive, expired).
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          OAuth2ClientCredential: '#/components/schemas/OAuth2ClientCredential_MVO'
    OrganizationIdentification:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Represents our registration of information used as proof of identity by an organization
          properties:
            identificationId:
              type: string
              description: Identifier
            issuingAuthority:
              type: string
              description: Authority which has issued the identifier (chamber of commerce...)
            issuingDate:
              type: string
              format: date-time
              description: Date at which the identifier was issued
            identificationType:
              type: string
              description: >-
                Type of identification information used to identify the company in a country or
                internationally
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            attachment:
              $ref: '#/components/schemas/AttachmentRefOrValue'
      discriminator:
        propertyName: '@type'
        mapping:
          OrganizationIdentification: '#/components/schemas/OrganizationIdentification'
    OrganizationIdentification_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible_FVO'
        - type: object
          description: Represents our registration of information used as proof of identity by an organization
          properties:
            identificationId:
              type: string
              description: Identifier
            issuingAuthority:
              type: string
              description: Authority which has issued the identifier (chamber of commerce...)
            issuingDate:
              type: string
              format: date-time
              description: Date at which the identifier was issued
            identificationType:
              type: string
              description: >-
                Type of identification information used to identify the company in a country or
                internationally
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            attachment:
              $ref: '#/components/schemas/AttachmentRefOrValue_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          OrganizationIdentification: '#/components/schemas/OrganizationIdentification_FVO'
    OrganizationIdentification_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Represents our registration of information used as proof of identity by an organization
          properties:
            identificationId:
              type: string
              description: Identifier
            issuingAuthority:
              type: string
              description: Authority which has issued the identifier (chamber of commerce...)
            issuingDate:
              type: string
              format: date-time
              description: Date at which the identifier was issued
            identificationType:
              type: string
              description: >-
                Type of identification information used to identify the company in a country or
                internationally
            validFor:
              $ref: '#/components/schemas/TimePeriod'
            attachment:
              $ref: '#/components/schemas/AttachmentRefOrValue_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          OrganizationIdentification: '#/components/schemas/OrganizationIdentification_MVO'
    PartyRef:
      type: object
      description: A Party reference
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRef: '#/components/schemas/PartyRef'
    PartyRefOrPartyRoleRef:
      type: object
      description: ''
      oneOf:
        - $ref: '#/components/schemas/PartyRef'
        - $ref: '#/components/schemas/PartyRoleRef'
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     PartyRef: '#/components/schemas/PartyRef'
      #     PartyRoleRef: '#/components/schemas/PartyRoleRef'
    PartyRef_FVO:
      type: object
      description: A Party reference
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRef: '#/components/schemas/PartyRef_FVO'
    PartyRef_MVO:
      type: object
      description: A Party reference
      allOf:
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRef: '#/components/schemas/PartyRef_MVO'
    PartyRoleRef:
      allOf:
        # - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            Party role reference. A party role represents the part played by a party in a given
            context.
          properties:
            partyId:
              type: string
              description: The identifier of the engaged party that is linked to the PartyRole object.
            partyName:
              type: string
              description: The name of the engaged party that is linked to the PartyRole object.
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     PartyRoleRef: '#/components/schemas/PartyRoleRef'
    PartyRoleRef_FVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
        - type: object
          description: >-
            Party role reference. A party role represents the part played by a party in a given
            context.
          properties:
            partyId:
              type: string
              description: The identifier of the engaged party that is linked to the PartyRole object.
            partyName:
              type: string
              description: The name of the engaged party that is linked to the PartyRole object.
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRoleRef: '#/components/schemas/PartyRoleRef_FVO'
    PartyRoleRef_MVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            Party role reference. A party role represents the part played by a party in a given
            context.
          properties:
            partyId:
              type: string
              description: The identifier of the engaged party that is linked to the PartyRole object.
            partyName:
              type: string
              description: The name of the engaged party that is linked to the PartyRole object.
      discriminator:
        propertyName: '@type'
        mapping:
          PartyRoleRef: '#/components/schemas/PartyRoleRef_MVO'
    PhoneContactMedium:
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          description: >-
            Describes a phone number that could be used to contact a party (an individual or an
            organization)
          properties:
            phoneNumber:
              type: string
              description: The phone number of the contact
    PhoneContactMedium_FVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_FVO'
        - type: object
          description: >-
            Describes a phone number that could be used to contact a party (an individual or an
            organization)
          properties:
            phoneNumber:
              type: string
              description: The phone number of the contact
    PhoneContactMedium_MVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_MVO'
        - type: object
          description: >-
            Describes a phone number that could be used to contact a party (an individual or an
            organization)
          properties:
            phoneNumber:
              type: string
              description: The phone number of the contact
    ProductOfferingRef:
      allOf:
        # - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            ProductOffering reference. A product offering represents entities that are orderable
            from the provider of the catalog, this resource includes pricing information.
          properties:
            version:
              type: string
              description: Version of the product offering
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     ProductOfferingRef: '#/components/schemas/ProductOfferingRef'
    ProductOfferingRef_FVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
        - type: object
          description: >-
            ProductOffering reference. A product offering represents entities that are orderable
            from the provider of the catalog, this resource includes pricing information.
          properties:
            version:
              type: string
              description: Version of the product offering
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingRef: '#/components/schemas/ProductOfferingRef_FVO'
    ProductOfferingRef_MVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            ProductOffering reference. A product offering represents entities that are orderable
            from the provider of the catalog, this resource includes pricing information.
          properties:
            version:
              type: string
              description: Version of the product offering
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingRef: '#/components/schemas/ProductOfferingRef_MVO'
    ProductOfferingTermOrCondition:
      allOf:
        # - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Approved Terms or Conditions of the ProductOffering.
          properties:
            id:
              type: string
              description: Identifier of the ProductOfferingTermOrCondition.
            name:
              type: string
              description: Identifier of the ProductOfferingTermOrCondition.
            productOfferingTermOrConditionSpecRef:
              $ref: '#/components/schemas/ProductOfferingTermOrConditionSpecRef'
            productOfferingTermOrConditionApproval:
              $ref: '#/components/schemas/ProductOfferingTermOrConditionApproval'
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     ProductOfferingTermOrCondition: '#/components/schemas/ProductOfferingTermOrCondition'
    ProductOfferingTermOrConditionApproval:
      type: object
      description: >-
        Approval entity for the ProductOfferingTermOrCondition. Exists when Terms or Conditions are
        approved.
      properties:
        signatureDate:
          type: string
          format: date-time
          description: Date of the approval.
        authorization:
          type: array
          items:
            $ref: '#/components/schemas/ApiAuthorization'
    ProductOfferingTermOrConditionSpecRef:
      allOf:
        # - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: Reference to the ProductOfferingTermOrCondition specification.
          properties:
            version:
              type: string
              description: Version of the ProductOfferingTermOrCondition specification.
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     ProductOfferingTermOrConditionSpecRef: '#/components/schemas/ProductOfferingTermOrConditionSpecRef'
    ProductOfferingTermOrConditionSpecRef_FVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
        - type: object
          description: Reference to the ProductOfferingTermOrCondition specification.
          properties:
            version:
              type: string
              description: Version of the ProductOfferingTermOrCondition specification.
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingTermOrConditionSpecRef: '#/components/schemas/ProductOfferingTermOrConditionSpecRef_FVO'
    ProductOfferingTermOrConditionSpecRef_MVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: Reference to the ProductOfferingTermOrCondition specification.
          properties:
            version:
              type: string
              description: Version of the ProductOfferingTermOrCondition specification.
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingTermOrConditionSpecRef: '#/components/schemas/ProductOfferingTermOrConditionSpecRef_MVO'
    ProductOfferingTermOrCondition_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Approved Terms or Conditions of the ProductOffering.
          properties:
            id:
              type: string
              description: Identifier of the ProductOfferingTermOrCondition.
            name:
              type: string
              description: Identifier of the ProductOfferingTermOrCondition.
            productOfferingTermOrConditionSpecRef:
              $ref: '#/components/schemas/ProductOfferingTermOrConditionSpecRef_FVO'
            productOfferingTermOrConditionApproval:
              $ref: '#/components/schemas/ProductOfferingTermOrConditionApproval'
          required:
            - productOfferingTermOrConditionSpecRef
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingTermOrCondition: '#/components/schemas/ProductOfferingTermOrCondition_FVO'
    ProductOfferingTermOrCondition_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: Approved Terms or Conditions of the ProductOffering.
          properties:
            id:
              type: string
              description: Identifier of the ProductOfferingTermOrCondition.
            name:
              type: string
              description: Identifier of the ProductOfferingTermOrCondition.
            productOfferingTermOrConditionSpecRef:
              $ref: '#/components/schemas/ProductOfferingTermOrConditionSpecRef_MVO'
            productOfferingTermOrConditionApproval:
              $ref: '#/components/schemas/ProductOfferingTermOrConditionApproval'
          required:
            - productOfferingTermOrConditionSpecRef
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingTermOrCondition: '#/components/schemas/ProductOfferingTermOrCondition_MVO'
    ProductOrderErrorMessage:
      allOf:
        - $ref: '#/components/schemas/ErrorMessage'
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            A ProductOrderErrorMessage represents an error that causes a status change in a product
            order.
          properties:
            timestamp:
              type: string
              format: date-time
              description: Date when the error happened
            productOrderItem:
              type: array
              description: A list of order item references corresponded to this error
              items:
                $ref: '#/components/schemas/ProductOrderItemRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderErrorMessage: '#/components/schemas/ProductOrderErrorMessage'
    ProductOrderErrorMessage_FVO:
      allOf:
        - $ref: '#/components/schemas/ErrorMessage_FVO'
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            A ProductOrderErrorMessage represents an error that causes a status change in a product
            order.
          properties:
            timestamp:
              type: string
              format: date-time
              description: Date when the error happened
            productOrderItem:
              type: array
              description: A list of order item references corresponded to this error
              items:
                $ref: '#/components/schemas/ProductOrderItemRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderErrorMessage: '#/components/schemas/ProductOrderErrorMessage_FVO'
    ProductOrderErrorMessage_MVO:
      allOf:
        - $ref: '#/components/schemas/ErrorMessage_MVO'
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            A ProductOrderErrorMessage represents an error that causes a status change in a product
            order.
          properties:
            timestamp:
              type: string
              format: date-time
              description: Date when the error happened
            productOrderItem:
              type: array
              description: A list of order item references corresponded to this error
              items:
                $ref: '#/components/schemas/ProductOrderItemRef_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderErrorMessage: '#/components/schemas/ProductOrderErrorMessage_MVO'
    ProductOrderItemRef:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: A reference to ProductOrder item that has been executed previously.
          properties:
            ProductOrderHref:
              type: string
              description: Reference of the related ProductOrder.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
            productOrderId:
              type: string
              description: Unique identifier of a refered product order.
            productOrderItemId:
              type: string
              description: 'Identifier of a product order item. '
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderItemRef: '#/components/schemas/ProductOrderItemRef'
    ProductOrderItemRef_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: A reference to ProductOrder item that has been executed previously.
          properties:
            ProductOrderHref:
              type: string
              description: Reference of the related ProductOrder.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
            productOrderId:
              type: string
              description: Unique identifier of a refered product order.
            productOrderItemId:
              type: string
              description: 'Identifier of a product order item. '
          required:
            - productOrderId
            - productOrderItemId
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderItemRef: '#/components/schemas/ProductOrderItemRef_FVO'
    ProductOrderItemRef_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: A reference to ProductOrder item that has been executed previously.
          properties:
            ProductOrderHref:
              type: string
              description: Reference of the related ProductOrder.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
            productOrderId:
              type: string
              description: Unique identifier of a refered product order.
            productOrderItemId:
              type: string
              description: 'Identifier of a product order item. '
          required:
            - productOrderId
            - productOrderItemId
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOrderItemRef: '#/components/schemas/ProductOrderItemRef_MVO'
    ProductOrderItemStateType:
      enum:
        - acknowledged
        - rejected
        - pending
        - held
        - inProgress
        - cancelled
        - completed
        - failed
        - partial
        - assessingCancellation
        - pendingCancellation
      type: string
      description: Possible values for the state of the product order item
    ProductOrderStateType:
      enum:
        - acknowledged
        - rejected
        - pending
        - held
        - inProgress
        - cancelled
        - completed
        - failed
        - partial
        - assessingCancellation
        - pendingCancellation
        - draft
        - inProgress.accepted
      type: string
      description: Possible values for the state of the order
    ProductRef:
      type: object
      description: A Product reference
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductRef: '#/components/schemas/ProductRef'
    ProductRef_FVO:
      type: object
      description: A Product reference
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/EntityRef_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductRef: '#/components/schemas/ProductRef_FVO'
    ProductRef_MVO:
      type: object
      description: A Product reference
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - $ref: '#/components/schemas/EntityRef'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductRef: '#/components/schemas/ProductRef_MVO'
    ProductSpecificationRef:
      allOf:
        # - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            ProductSpecification reference. A product Specification represents entities that are
            orderable from the provider of the catalog.
          properties:
            version:
              type: string
              description: Version of the product specification
            targetProductSchema:
              $ref: '#/components/schemas/TargetProductSchema'
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     ProductSpecificationRef: '#/components/schemas/ProductSpecificationRef'
    ProductSpecificationRef_FVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef_FVO'
        - type: object
          description: >-
            ProductSpecification reference. A product Specification represents entities that are
            orderable from the provider of the catalog.
          properties:
            version:
              type: string
              description: Version of the product specification
            targetProductSchema:
              $ref: '#/components/schemas/TargetProductSchema'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductSpecificationRef: '#/components/schemas/ProductSpecificationRef_FVO'
    ProductSpecificationRef_MVO:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            ProductSpecification reference. A product Specification represents entities that are
            orderable from the provider of the catalog.
          properties:
            version:
              type: string
              description: Version of the product specification
            targetProductSchema:
              $ref: '#/components/schemas/TargetProductSchema'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductSpecificationRef: '#/components/schemas/ProductSpecificationRef_MVO'
    ProductStatusType:
      enum:
        - created
        - pendingActive
        - cancelled
        - active
        - pendingTerminate
        - terminated
        - suspended
        - aborted
      type: string
      description: Possible values for the status of the product
    Quantity:
      type: object
      description: An amount in a given unit
      properties:
        amount:
          type: number
          format: float
          default: 1
          description: Numeric value in a given unit
        units:
          type: string
          description: Unit
    RelatedOrderItem:
      allOf:
        # - $ref: '#/components/schemas/Extensible'
        - type: object
          description: It's a Order item that has been executed previously.
          properties:
            orderItemAction:
              $ref: '#/components/schemas/ItemActionType'
            orderHref:
              type: string
              description: Reference of the related entity.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
            role:
              type: string
              description: Role played by the  Order
            orderId:
              type: string
              description: Unique identifier of a related  Order.
            orderItemId:
              type: string
              description: Id of an item of a prduct order
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     RelatedOrderItem: '#/components/schemas/RelatedOrderItem'
    RelatedOrderItem_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: It's a Order item that has been executed previously.
          properties:
            orderItemAction:
              $ref: '#/components/schemas/ItemActionType'
            orderHref:
              type: string
              description: Reference of the related entity.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
            role:
              type: string
              description: Role played by the  Order
            orderId:
              type: string
              description: Unique identifier of a related  Order.
            orderItemId:
              type: string
              description: Id of an item of a prduct order
          required:
            - role
            - orderId
            - orderItemId
      discriminator:
        propertyName: '@type'
        mapping:
          RelatedOrderItem: '#/components/schemas/RelatedOrderItem_FVO'
    RelatedOrderItem_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: It's a Order item that has been executed previously.
          properties:
            orderItemAction:
              $ref: '#/components/schemas/ItemActionType'
            orderHref:
              type: string
              description: Reference of the related entity.
            '@referredType':
              type: string
              description: The actual type of the target instance when needed for disambiguation.
            role:
              type: string
              description: Role played by the  Order
            orderId:
              type: string
              description: Unique identifier of a related  Order.
            orderItemId:
              type: string
              description: Id of an item of a prduct order
          required:
            - role
            - orderId
            - orderItemId
      discriminator:
        propertyName: '@type'
        mapping:
          RelatedOrderItem: '#/components/schemas/RelatedOrderItem_MVO'
    RelatedPartyRefOrPartyRoleRef:
      allOf:
        # - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            RelatedParty reference. A related party defines party or party role or its reference,
            linked to a specific entity
          properties:
            role:
              description: >-
                Role played by the related party or party role in the context of the specific entity
                it is linked to. Such as 'initiator', 'customer',  'salesAgent', 'user'
              type: string
            partyOrPartyRole:
              $ref: '#/components/schemas/PartyRefOrPartyRoleRef'
      # discriminator:
      #   propertyName: '@type'
      #   mapping:
      #     RelatedPartyRefOrPartyRoleRef: '#/components/schemas/RelatedPartyRefOrPartyRoleRef'
    RelatedPartyRefOrPartyRoleRef_FVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            RelatedParty reference. A related party defines party or party role or its reference,
            linked to a specific entity
          properties:
            role:
              description: >-
                Role played by the related party or party role in the context of the specific entity
                it is linked to. Such as 'initiator', 'customer',  'salesAgent', 'user'
              type: string
            partyOrPartyRole:
              $ref: '#/components/schemas/PartyRefOrPartyRoleRef'
          required:
            - role
      discriminator:
        propertyName: '@type'
        mapping:
          RelatedPartyRefOrPartyRoleRef: '#/components/schemas/RelatedPartyRefOrPartyRoleRef_FVO'
    RelatedPartyRefOrPartyRoleRef_MVO:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          description: >-
            RelatedParty reference. A related party defines party or party role or its reference,
            linked to a specific entity
          properties:
            role:
              description: >-
                Role played by the related party or party role in the context of the specific entity
                it is linked to. Such as 'initiator', 'customer',  'salesAgent', 'user'
              type: string
            partyOrPartyRole:
              $ref: '#/components/schemas/PartyRefOrPartyRoleRef'
          required:
            - role
      discriminator:
        propertyName: '@type'
        mapping:
          RelatedPartyRefOrPartyRoleRef: '#/components/schemas/RelatedPartyRefOrPartyRoleRef_MVO'
    Resource:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          description: >-
            Resource is an abstract entity that describes the common set of attributes shared by all
            concrete resources (e.g. TPE, EQUIPMENT) in the inventory.
          properties:
            description:
              type: string
              description: free-text description of the resource
            name:
              type: string
              description: the name of the resource
            operationalState:
              $ref: '#/components/schemas/ResourceOperationalStateType'
            resourceVersion:
              type: string
              description: A field that identifies the specific version of an instance of a resource.
            externalIdentifier:
              type: array
              description: >-
                An identification of this resource that is owned by or originates in a software
                system different from the current system. The structure identifies the system
                itself, the nature of the resource within the system and the unique ID of the
                resource within the system. It is anticipated that multiple external IDs can be held
                for a single resource, e.g. if the resource passed through multiple systems on the
                way to the current system.
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
      discriminator:
        propertyName: '@type'
        mapping:
          Resource: '#/components/schemas/Resource'
          LogicalResource: '#/components/schemas/LogicalResource'
          Application: '#/components/schemas/Application_FVO'
    ResourceOperationalStateType:
      enum:
        - enable
        - disable
      type: string
      description: ResourceOperationalStateType enumerations
    Resource_FVO:
      allOf:
        - $ref: '#/components/schemas/Entity_FVO'
        - type: object
          description: >-
            Resource is an abstract entity that describes the common set of attributes shared by all
            concrete resources (e.g. TPE, EQUIPMENT) in the inventory.
          properties:
            description:
              type: string
              description: free-text description of the resource
            name:
              type: string
              description: the name of the resource
            operationalState:
              $ref: '#/components/schemas/ResourceOperationalStateType'
            resourceVersion:
              type: string
              description: A field that identifies the specific version of an instance of a resource.
            externalIdentifier:
              type: array
              description: >-
                An identification of this resource that is owned by or originates in a software
                system different from the current system. The structure identifies the system
                itself, the nature of the resource within the system and the unique ID of the
                resource within the system. It is anticipated that multiple external IDs can be held
                for a single resource, e.g. if the resource passed through multiple systems on the
                way to the current system.
              items:
                $ref: '#/components/schemas/ExternalIdentifier_FVO'
      discriminator:
        propertyName: '@type'
        mapping:
          Resource: '#/components/schemas/Resource_FVO'
    Resource_MVO:
      allOf:
        - $ref: '#/components/schemas/Entity_MVO'
        - type: object
          description: >-
            Resource is an abstract entity that describes the common set of attributes shared by all
            concrete resources (e.g. TPE, EQUIPMENT) in the inventory.
          properties:
            description:
              type: string
              description: free-text description of the resource
            name:
              type: string
              description: the name of the resource
            operationalState:
              $ref: '#/components/schemas/ResourceOperationalStateType'
            resourceVersion:
              type: string
              description: A field that identifies the specific version of an instance of a resource.
            externalIdentifier:
              type: array
              description: >-
                An identification of this resource that is owned by or originates in a software
                system different from the current system. The structure identifies the system
                itself, the nature of the resource within the system and the unique ID of the
                resource within the system. It is anticipated that multiple external IDs can be held
                for a single resource, e.g. if the resource passed through multiple systems on the
                way to the current system.
              items:
                $ref: '#/components/schemas/ExternalIdentifier_MVO'
      discriminator:
        propertyName: '@type'
        mapping:
          Resource: '#/components/schemas/Resource_MVO'
          LogicalResource: '#/components/schemas/LogicalResource_MVO'
          Application: '#/components/schemas/Application_MVO'
    SocialContactMedium:
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          description: >-
            Describes a social media identifier that could be used to contact a party (an individual
            or an organization)
          properties:
            socialNetworkId:
              type: string
              description: Identifier as a member of a social network
    SocialContactMedium_FVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_FVO'
        - type: object
          description: >-
            Describes a social media identifier that could be used to contact a party (an individual
            or an organization)
          properties:
            socialNetworkId:
              type: string
              description: Identifier as a member of a social network
    SocialContactMedium_MVO:
      allOf:
        - $ref: '#/components/schemas/ContactMedium_MVO'
        - type: object
          description: >-
            Describes a social media identifier that could be used to contact a party (an individual
            or an organization)
          properties:
            socialNetworkId:
              type: string
              description: Identifier as a member of a social network
    TargetProductSchema:
      type: object
      description: >-
        The reference object to the schema and type of target product which is described by product
        specification
      properties:
        '@type':
          type: string
          description: Class type of the target product
        '@schemaLocation':
          type: string
          format: uri
          description: This field provides a link to the schema describing the target product
    TimePeriod:
      type: object
      description: 'A period of time, either as a deadline (endDateTime only) a startDateTime only, or both'
      properties:
        startDateTime:
          description: 'Start of the time period, using IETC-RFC-3339 format'
          type: string
          format: date-time
          example: '1985-04-12T23:20:50.52Z'
        endDateTime:
          description: 'End of the time period, using IETC-RFC-3339 format'
          type: string
          format: date-time
          example: '1985-04-12T23:20:50.52Z'
    Error:
      discriminator:
        propertyName: '@type'
        mapping:
          Error: '#/components/schemas/Error'
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - code
            - reason
          properties:
            code:
              type: string
              description: 'Application relevant detail, defined in the API or a common list.'
            reason:
              type: string
              description: Explanation of the reason for the error which can be shown to a client user.
            message:
              type: string
              description: >-
                More details and corrective actions related to the error which can be shown to a
                client user.
            status:
              type: string
              description: HTTP Error code extension
            referenceError:
              type: string
              description: URI of documentation describing the error.
      description: 'Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)'
    Hub_FVO:
      type: object
      description: >-
        Sets the communication endpoint address the service instance must use to deliver
        notification information
      required:
        - callback
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - properties:
            callback:
              type: string
              description: The callback being registered.
            query:
              type: string
              description: additional data to be passed
    Hub:
      type: object
      description: >-
        Sets the communication endpoint address the service instance must use to deliver
        notification information
      allOf:
        - $ref: '#/components/schemas/Entity'
        - properties:
            id:
              type: string
              description: Id of the listener
            callback:
              type: string
              description: The callback being registered.
            query:
              type: string
              description: additional data to be passed
          required:
            - callback
    JsonPatch:
      type: object
      description: A JSONPatch document as defined by RFC 6902
      required:
        - op
        - path
      properties:
        op:
          type: string
          description: The operation to be performed
          enum:
            - add
            - remove
            - replace
            - move
            - copy
            - test
        path:
          type: string
          description: A JSON-Pointer
        value:
          description: The value to be used within the operations.
        from:
          type: string
          description: A string containing a JSON Pointer value.
    JsonPatchOperations:
      description: JSONPatch Operations document as defined by RFC 6902
      type: array
      items:
        $ref: '#/components/schemas/JsonPatch'
  responses:
    200ApiProductArray:
      description: Success
      headers:
        {}
      content:
        application/json:
          schema: 
            type: array
            items:
              $ref: '#/components/schemas/ApiProduct'

from redoc.

amarreo avatar amarreo commented on May 25, 2024

Thanks a lot @jeremyfiel! We will take a look carefully to it, and specially to the use of "discriminator" and the circular references. Anyway, do you have any clue on why ReDoc is "degrading" when the complexity of discriminators and circular references is being increased, but it doesn't cause any problem when using swagger editor instead? Could it be a different way of "interpreting" the openapi standard or something similar?

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

I enabled all of the Extensible and EntityRef again and it seems like I narrowed it down further to these two schemas and the use of discriminator.

Each of these have invalid uses of this property

    productOffering:
      $ref: '#/components/schemas/ProductOfferingRef'
    productSpecification:
      $ref: '#/components/schemas/ProductSpecificationRef'
 ProductOfferingRef:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            ProductOffering reference. A product offering represents entities that are orderable
            from the provider of the catalog, this resource includes pricing information.
          properties:
            version:
              type: string
              description: Version of the product offering
      discriminator:
        propertyName: '@type'
        mapping:
          ProductOfferingRef: '#/components/schemas/ProductOfferingRef'
ProductSpecificationRef:
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          description: >-
            ProductSpecification reference. A product Specification represents entities that are
            orderable from the provider of the catalog.
          properties:
            version:
              type: string
              description: Version of the product specification
            targetProductSchema:
              $ref: '#/components/schemas/TargetProductSchema'
      discriminator:
        propertyName: '@type'
        mapping:
          ProductSpecificationRef: '#/components/schemas/ProductSpecificationRef'

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

Anyway, do you have any clue on why ReDoc is "degrading" when the complexity of discriminators and circular references is being increased, but it doesn't cause any problem when using swagger editor instead? Could it be a different way of "interpreting" the openapi standard or something similar?

I do know that Redocly have their own reference parser, it may be more strict with the ref resolution or the discriminator mapping.

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

These two schemas are only for the /apiProduct endpoint. I didn't look at the others..

from redoc.

jeremyfiel avatar jeremyfiel commented on May 25, 2024

additional info.. these schemas also have the similar issue with discriminator.

I also disabled those discriminator definitions previously and didn't recall before I posted.

            productOrderItem:
              type: array
              items:
                $ref: '#/components/schemas/RelatedOrderItem'
            signedTermOrCondition:
              type: array
              items:
                $ref: '#/components/schemas/ProductOfferingTermOrCondition'
            channelPartner:
              $ref: '#/components/schemas/PartyRoleRef'

from redoc.

amarreo avatar amarreo commented on May 25, 2024

Again, thanks a lot for your help!

from redoc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.