{
    "description": "This type represents an NFV-MANO functional entity.\n",
    "type": "object",
    "required": [
      "id",
      "type",
      "name",
      "description",
      "provider",
      "softwareVersion",
      "manoConfigurableParams",
      "manoApplicationState",
      "_links"
    ],
    "properties": {
      "id": {
        "description": "An identifier with the intention of being globally unique.\n",
        "type": "string"
      },
      "type": {
        "description": "The enumeration ManoEntityEnumType defines the permitted values to  represent NFV-MANO functional entities. It shall comply with  the provisions :\n  - NFVO\tThe NFV-MANO functional entity is an NFVO.\n  - VNFM\tThe NFV-MANO functional entity is a VNFM.\n  - VIM\tThe NFV-MANO functional entity is a VIM.\n",
        "type": "string",
        "enum": [
          "NFVO",
          "VNFM",
          "VIM"
        ]
      },
      "name": {
        "description": "Human-readable name of the NFV-MANO functional entity.\nThis attribute can be modified with the PATCH method.\n",
        "type": "string"
      },
      "description": {
        "description": "Human-readable description of the NFV-MANO functional entity.\nThis attribute can be modified with the PATCH method.\n",
        "type": "string"
      },
      "provider": {
        "description": "Information about the provider of the NFV-MANO functional entity.  It typically includes the name of the provider.\n",
        "type": "string"
      },
      "softwareVersion": {
        "description": "The version of the software of the NFV-MANO functional entity. $ref: \"../components/SOL009_schemas.yaml#/components/schemas/Version\"\n"
      },
      "manoEntityComponents": {
        "description": "The deployed NFV-MANO functional entity components which realize the  NFV-MANO functional entity. \nNOTE:\tIt is optional for the API producer to support the \"manoEntityComponents\"  attribute.\n",
        "type": "array",
        "items": {
          "description": "This type represents information of a deployed component realizing part of an  NFV-MANO functional entity. It is optional for the API producer to support  this type. \n",
          "type": "object",
          "properties": {
            "id": {
              "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n",
              "type": "string"
            },
            "manoServiceIds": {
              "description": "References to the NFV-MANO services that depend on the NFV-MANO functional  entity component. The identifier of the ManoService is referred. A service  may depend on multiple components. Multiple services may depend on the same  component.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n",
                "type": "string"
              }
            }
          },
          "required": [
            "id"
          ]
        }
      },
      "manoServices": {
        "description": "Information about the NFV-MANO services provided by the NFV-MANO  functional entity.\n",
        "type": "array",
        "items": {
          "description": "This type represents information about an NFV-MANO service provided by the  NFV-MANO functional entity.\n",
          "type": "object",
          "properties": {
            "id": {
              "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n",
              "type": "string"
            },
            "name": {
              "description": "Human-readable name of the NFV-MANO service.\nThis attribute can be modified with the PATCH method.\n",
              "type": "string"
            },
            "description": {
              "description": "Human-readable description of the NFV-MANO service.\nThis attribute can be modified with the PATCH method.\n",
              "type": "string"
            },
            "manoServiceInterfaceIds": {
              "description": "Reference to the NFV-MANO interfaces associated to the NFV-MANO service.  If cardinality is greater than one, the type of ManoServiceInterface  (see clause 5.6.3.3) shall be the same. The identifier of the  ManoServiceInterface is referred. \nNOTE:\tA cardinality greater than one supports having different interface  versions or apiEndpoints to be used for accessing the same instance of a  NFV-MANO service.\n",
              "type": "array",
              "items": {
                "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n",
                "type": "string"
              },
              "minItems": 1
            },
            "_links": {
              "description": "Links to resources related to this resource.\n",
              "type": "object",
              "properties": {
                "manoServiceInterfaces": {
                  "description": "Link to the \"individual NFV-MANO service interface\" resources with  information about the associated interfaces to the NFV-MANO service.\n",
                  "type": "array",
                  "items": {
                    "description": "This type represents a link to a resource using an absolute URI.\n",
                    "type": "object",
                    "required": [
                      "href"
                    ],
                    "properties": {
                      "href": {
                        "description": "String formatted according to IETF RFC 3986.\n",
                        "type": "string"
                      }
                    }
                  },
                  "minItems": 1
                }
              },
              "required": [
                "manoServiceInterfaces"
              ]
            }
          },
          "required": [
            "id",
            "name",
            "description",
            "manoServiceInterfaceIds",
            "_links"
          ]
        }
      },
      "manoConfigurableParams": {
        "description": "# Warning: No definition found in the document ManoConfigurableParams\n"
      },
      "manoApplicationState": {
        "description": "Information and current values of the NFV-MANO functional entity’s application state. \n",
        "type": "object",
        "required": [
          "operationalState",
          "administrativeState",
          "usageState"
        ],
        "properties": {
          "operationalState": {
            "description": "The enumeration OperationalStateEnumType defines values representing the operational state of an NFV-MANO functional application type of managed entity. The OperationalStateEnumType shall comply with the provisions:\n  - STARTED\tThe managed entity is operational.\n  - STOPPED\tThe managed entity is not operational.\n  - STOPPING\tThe managed entity is in the transition to stop.\n  - STARTING\tThe managed entity is in the transition to start and become operational.\n  - RESTARTING\tThe managed entity is in the transition to stop and start again.\n",
            "type": "string",
            "enum": [
              "STARTED",
              "STOPPED",
              "STOPPING",
              "STARTING",
              "RESTARTING"
            ]
          },
          "administrativeState": {
            "description": "The enumeration AdministrativeStateEnumType defines values representing the administrative state of a managed entity. The AdministrativeStateEnumType shall comply with the provisions:\n  - LOCKED\tThe managed entity is administratively prohibited to be used.\n  - UNLOCKED\tThe managed entity is administratively allowed to be used.\n  - LOCKING\tThe managed entity is in the transition to be locked.\n",
            "type": "string",
            "enum": [
              "LOCKED",
              "UNLOCKED",
              "LOCKING"
            ]
          },
          "usageState": {
            "description": "The enumeration UsageStateEnumType defines values representing the usage  state of a managed entity.  The UsageStateEnumType shall comply with the provisions:\n  - IN_USE\tThe managed entity is currently being used.\n  - NOT_IN_USE\tThe managed entity is currently not being used.\n",
            "type": "string",
            "enum": [
              "IN_USE",
              "NOT_IN_USE"
            ]
          }
        }
      },
      "nfvoSpecificInfo": {
        "description": "This type represents information attributes specific to an NFVO entity,  and that can be relevant to more than one NFV-MANO service offered by an  NFVO entity. \n",
        "type": "object",
        "properties": {
          "maxOnboardedNsdNum": {
            "description": "Maximum number of NSDs that can be on-boarded on the NFVO. \nNOTE: If this attribute is not present, the value of this parameter  is undefined.\n",
            "type": "integer"
          },
          "maxOnboardedVnfPkgNum": {
            "description": "Maximum number of VNF Packages that can be on-boarded on the NFVO. \nNOTE: If this attribute is not present, the value of this parameter  is undefined.\n",
            "type": "integer"
          },
          "supportedVnfdFormats": {
            "description": "Supported VNFD data formats.\n",
            "type": "object",
            "properties": {
              "vnfdFormat": {
                "description": "Name of the VNFD format.\nPermitted values:\n  - TOSCA: The VNFD follows TOSCA definition, according to ETSI \n  GS NFV-SOL 001 standard.\n  - YANG: The VNFD follows YANG definition according to ETSI \n  GS NFV-SOL 006 standard.\n",
                "type": "string",
                "enum": [
                  "TOSCA",
                  "YANG"
                ]
              },
              "standardVersion": {
                "description": "A version.\n",
                "type": "string"
              }
            },
            "required": [
              "vnfdFormat",
              "standardVersion"
            ]
          },
          "supportedNsdFormats": {
            "description": "Supported NSD data formats.\n",
            "type": "object",
            "properties": {
              "nsdFormat": {
                "description": "Name of the NSD format.\nPermitted values:\n  - TOSCA: The VNFD follows TOSCA definition, according to ETSI \n  GS NFV-SOL 001 standard.\n  - YANG: The VNFD follows YANG definition according to ETSI \n  GS NFV-SOL 006 standard.\n",
                "type": "string",
                "enum": [
                  "TOSCA",
                  "YANG"
                ]
              },
              "standardVersion": {
                "description": "A version.\n",
                "type": "string"
              }
            },
            "required": [
              "nsdFormat",
              "standardVersion"
            ]
          }
        },
        "required": [
          "supportedVnfdFormats",
          "supportedNsdFormats"
        ]
      },
      "vnfmSpecificInfo": {
        "description": "This type represents information attributes specific to a VNFM entity,  and that can be relevant to more than one NFV-MANO service offered by  a VNFM entity.\n",
        "type": "object",
        "properties": {
          "resoruceMgmtModeSupport": {
            "description": "The supported resource management modes of the VNFM.\nPermitted values:\n  - DIRECT: The VNFM supports direct mode only.\n  - INDIRECT: The VNFM supports indirect mode only.\n  - BOTH: The VNFM supports both direct and indirect mode.\n",
            "type": "string",
            "enum": [
              "DIRECT",
              "INDIRECT",
              "BOTH"
            ]
          },
          "managedVnfInstanceInfos": {
            "description": "The kinds of VNF instances that can be managed, e.g. to determine the  compatibility of a VNF with certain VNFM according to the vnfmInfo  attribute in the VNFD (see table 7.1.2.2-1 in ETSI GS NFV-IFA 011).\n",
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "supportedVnfdFormats": {
            "description": "Supported VNFD data formats.\n",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "vnfdFormat": {
                  "description": "Name of the VNFD format.\nPermitted values:\n  - TOSCA: The VNFD follows TOSCA definition, according to ETSI \n  GS NFV-SOL 001 standard.\n  - YANG: The VNFD follows YANG definition according to ETSI \n  GS NFV-SOL 006 standard.\n",
                  "type": "string",
                  "enum": [
                    "TOSCA",
                    "YANG"
                  ]
                },
                "standardVersion": {
                  "description": "A version.\n",
                  "type": "string"
                }
              },
              "required": [
                "vnfdFormat",
                "standardVersion"
              ]
            },
            "minItems": 1
          }
        },
        "required": [
          "resoruceMgmtModeSupport",
          "managedVnfInstanceInfos",
          "supportedVnfdFormats"
        ]
      },
      "vimSpecificInfo": {
        "description": "This type represents information attributes specific to a VIM entity,  and that can be relevant to more than one NFV-MANO service offered by  a VIM entity.\n",
        "type": "object"
      },
      "_links": {
        "description": "Links to resources related to this resource.\n",
        "type": "object",
        "required": [
          "self",
          "manoServiceInterfaces",
          "peerEntities",
          "changeState",
          "changeStateOpOccs"
        ],
        "properties": {
          "self": {
            "description": "This type represents a link to a resource using an absolute URI.\n",
            "type": "object",
            "required": [
              "href"
            ],
            "properties": {
              "href": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              }
            }
          },
          "manoServiceInterfaces": {
            "description": "This type represents a link to a resource using an absolute URI.\n",
            "type": "object",
            "required": [
              "href"
            ],
            "properties": {
              "href": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              }
            }
          },
          "peerEntities": {
            "description": "This type represents a link to a resource using an absolute URI.\n",
            "type": "object",
            "required": [
              "href"
            ],
            "properties": {
              "href": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              }
            }
          },
          "changeState": {
            "description": "This type represents a link to a resource using an absolute URI.\n",
            "type": "object",
            "required": [
              "href"
            ],
            "properties": {
              "href": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              }
            }
          },
          "changeStateOpOccs": {
            "description": "This type represents a link to a resource using an absolute URI.\n",
            "type": "object",
            "required": [
              "href"
            ],
            "properties": {
              "href": {
                "description": "String formatted according to IETF RFC 3986.\n",
                "type": "string"
              }
            }
          }
        }
      }
    }
  }