{
    "description": "This type represents an individual peer entity. \n",
    "type": "object",
    "properties": {
      "id": {
        "description": "An identifier with the intention of being globally unique.\n",
        "type": "string"
      },
      "peerEntityId": {
        "description": "An identifier with the intention of being globally unique.\n",
        "type": "string"
      },
      "name": {
        "description": "Human-readable name of the peer functional entity.\nThis attribute can be modified with the PATCH method.\n",
        "type": "string"
      },
      "type": {
        "description": "The enumeration PeerEntityEnumType defines the permitted values  to represent peer functional entities. it shall complains with  the provisions :  - NFVO\tThe peer functional entity is an NFVO. - VNFM\tThe peer functional entity is a VNFM. - VIM\t  The peer functional entity is a VIM. - WIM\t  The peer functional entity is a WIM. - EM\t  The peer functional entity is an EM. - OSS\t  The peer functional entity is an OSS/BSS.\n",
        "type": "string",
        "enum": [
          "NFVO",
          "VNFM",
          "VIM",
          "WIM",
          "EM",
          "OSS"
        ]
      },
      "description": {
        "description": "Human-readable description of the peer functional entity.\nThis attribute can be modified with the PATCH method.\n",
        "type": "string"
      },
      "consumedManoInterfaces": {
        "description": "Information of the interface consumed by the NFV-MANO functional entity  from the peer functional entity.\nThis attribute can be modified with the PATCH method.\n",
        "type": "array",
        "items": {
          "description": "This type represents an interface consumed by the producer NFV MANO  functional entity from another peer functional entity. \n",
          "type": "object",
          "properties": {
            "id": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            },
            "name": {
              "description": "Human-readable name of the NFV-MANO interface.\n",
              "type": "string"
            },
            "type": {
              "description": "Type of the NFV-MANO service interface consumed by the NFV-MANO  functional entity. Valid values are defined in clause 5.6.4.3.\n",
              "type": "string"
            },
            "standardVersion": {
              "description": "A version.\n",
              "type": "string"
            },
            "apiVersion": {
              "description": "A version.\n",
              "type": "string"
            },
            "apiEndpoint": {
              "description": "Consumable API endpoint of the interface. It provides the information relevant about the protocol, host and port,  and path where the interface API can be accessed.\n",
              "type": "object",
              "properties": {
                "apiRoot": {
                  "description": "String formatted according to IETF RFC 3986.\n",
                  "type": "string"
                },
                "apiName": {
                  "description": "Indicates the interface name in an abbreviated form. Shall be present  for ETSI NFV specified RESTful NFV-MANO APIs. The {apiName} of each  interface is defined in the standard the interface is compliant to  (see also clause 4.1 of ETSI GS NFV-SOL 013). May be present otherwise.\n",
                  "type": "string"
                },
                "apiMajorVersion": {
                  "description": "Indicates the current major version of the API. Shall be present for  ETSI NFV specified RESTful NFV-MANO APIs. The major version is defined  in the standard the interface is compliant to (see also clause 4.1  of ETSI GS NFV-SOL 013). May be present otherwise.\n",
                  "type": "string"
                },
                "apiUri": {
                  "description": "String formatted according to IETF RFC 3986.\n",
                  "type": "string"
                }
              },
              "required": [
                "apiUri"
              ]
            },
            "securityInfo": {
              "description": "This type represents security related information for accessing an NFV-MANO  service interface produced by an NFV-MANO functional entity.\n",
              "type": "object",
              "required": [
                "authType",
                "oauthServerInfo"
              ],
              "properties": {
                "authType": {
                  "description": "Type of API request authorization to be used by the API consumer accessing  the API.\nThe support of authorization methods for the API consumer is specified in  clause 8.3.6 of ETSI GS NFV-SOL 013.\nPermitted values: - TLS_TUNNEL: Using TLS tunnel, as defined by TLS 1.2 in IETF RFC 5246. - OAUTH2: Using access token, as defined by the OAuth 2.0 specification  in IETF RFC 6749. \n",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "TLS_TUNNEL",
                      "OAUTH2"
                    ]
                  },
                  "minItems": 1
                },
                "oauthServerInfo": {
                  "description": "OAuth 2.0 authorization server information and configuration.\n",
                  "type": "object",
                  "properties": {
                    "dynamicDiscovery": {
                      "description": "Configuration data used when performing dynamic discovery of the authorization  server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information  and configuration shall be supported, and dynamic configuration may be supported.\n",
                      "type": "object",
                      "required": [
                        "webFingerHost"
                      ],
                      "properties": {
                        "webFingerHost": {
                          "description": "Server where the WebFinger service is hosted. When used, the request to  the WebFinger resource shall conform as specified in clause 5.1.3 of  ETSI GS NFV-SEC 022.\n",
                          "type": "string",
                          "format": "uri"
                        }
                      }
                    },
                    "providedConfiguration": {
                      "description": "Configuration data used to setup the authorization server identifier. \nNOTE:\tProvided configuration of the OAuth 2.0 authorization server information  and configuration shall be supported, and dynamic configuration may be supported.\n",
                      "type": "object",
                      "required": [
                        "authServerId"
                      ],
                      "properties": {
                        "authServerId": {
                          "description": "Authorization server identifier as defined in ETSI GS NFV-SEC 022.\n",
                          "type": "string",
                          "format": "uri"
                        }
                      }
                    },
                    "tlsCipherSuites": {
                      "description": "List of cipher suites that shall be declared as supported by the API consumer when  performing the SSL or TLS negotiation with the authorization server. Valid values  of cipher suites are defined in IETF RFC 8447.\n",
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minItems": 1
                      }
                    }
                  }
                },
                "tlsTunnelInfo": {
                  "description": "Information and configuration related to the use of TLS tunnel. Shall be  present if authType contains \"TLS_TUNNEL\".\n",
                  "type": "object",
                  "properties": {
                    "tlsTunnelCipherSuites": {
                      "description": "List of cipher suites that shall be declared as supported by the API  consumer when performing the SSL or TLS negotiation with the API producer.  Valid values of cipher suites are defined in IETF RFC 8447.\n",
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minItems": 1
                      }
                    }
                  }
                }
              }
            }
          },
          "required": [
            "id",
            "name",
            "type",
            "standardVersion",
            "apiVersion",
            "apiEndpoint"
          ]
        }
      },
      "peerEntityState": {
        "description": "State of the peer functional entity as provided by the API consumer when  creating the resource or when updating it with the PATCH method.\n",
        "type": "object",
        "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"
            ]
          }
        },
        "required": [
          "operationalState",
          "administrativeState"
        ]
      }
    },
    "required": [
      "id",
      "peerEntityId",
      "name",
      "type",
      "peerEntityState"
    ]
  }