ApplicationPackageLifecycleAndOperationGrantingAPI_TypesAndValues.ttcn 77.5 KB
Newer Older
     * @member links Links to resources related to this resource
     * @see ETSI GS MEC 010-2 Clause 6.2.2.26	Type: AppInstIdCreationSubscriptionInfo
     */
    type record AppInstIdCreationSubscriptionInfo {
      JSON.String id,
      JSON.String subscriptionType,
      JSON.AnyURI callbackUri,
      AppInstanceSubscriptionFilter appInstanceSubscriptionFilter optional,
      AppInstIdCreationSubscriptionInfo_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record AppInstIdCreationSubscriptionInfo_Link {
      LinkType self_
    } with {
      variant (self_) "name as 'self'";
    }

    /**
     * @desc This data type represents a notification for informing the subscribers about the creation of a new "individual application instance" resource and the associated application instance identifier
     * @member id Identifier of this notification
     * @member notificationType Discriminator for the different notification types
     * @member subscriptionId Identifier of the subscription related to this notification
     * @member timeStamp Date and time of the notification generation
     * @member appInstanceId The created application instance Identifier
     * @member links Links to resources related to this notification
     * @see ETSI GS MEC 010-2 Clause 6.2.2.27	Type: AppInstanceIdentifierCreationNotification
     */
    type record AppInstanceIdentifierCreationNotification {
      JSON.String id,
      NotificationType notificationType,
      TimeStamp timeStamp,
      JSON.String appInstanceId,
      AppInstanceIdentifierCreationNotification_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record AppInstanceIdentifierCreationNotification_Link {
      LinkType subscription,
      LinkType appInstance
    }

    /**
     * @desc The data type represents the input parameters of "subscription operation" to notification of application instance identifier deletion
     * @member subscriptionType Shall be set to "AppIdentifierDeletionSubscription"
     * @member callbackUri The URI of the endpoint for the subscription related notification to be sent to
     * @member appInstanceSubscriptionFilter Criteria used to filter application instances for which to send notifications related to this subscription
     * @see ETSI GS MEC 010-2 Clause 6.2.2.28	Type: AppInstIdDeletionSubscriptionRequest
     */
    type record AppInstIdDeletionSubscriptionRequest {
      JSON.String subscriptionType,
      JSON.AnyURI callbackUri,
      AppInstanceSubscriptionFilter appInstanceSubscriptionFilter optional
    }

    /**
     * @desc The data type represents a subscription to notification of application instance identifier deletion
     * @member id Identifier of the subscription to application instance operational state change notification
     * @member subscriptionType Shall be set to "AppIdentifierDeletionSubscription"
     * @member callbackUri The URI of the endpoint for the subscription related notification to be sent to
     * @member appInstanceSubscriptionFilter Criteria used to select application instances on which to send notifications related to this subscription
     * @member links Links to resources related to this resource
     * @see ETSI GS MEC 010-2 Clause 6.2.2.29	Type: AppInstIdDeletionSubscriptionInfo
     */
    type record AppInstIdDeletionSubscriptionInfo {
      JSON.String id,
      JSON.String subscriptionType,
      JSON.AnyURI callbackUri,
      AppInstanceSubscriptionFilter appInstanceSubscriptionFilter optional,
      AppInstIdDeletionSubscriptionInfo_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record AppInstIdDeletionSubscriptionInfo_Link {
      LinkType self_
    } with {
      variant (self_) "name as 'self'";
    }

    /**
     * @desc This data type represents a notification for informing the subscribers about the deletion of an "individual application instance" resource and the associated application instance identifier
     * @member id Identifier of this notification
     * @member notificationType Discriminator for the different notification types
     * @member subscriptionId Identifier of the subscription related to this notification
     * @member timeStamp Date and time of the notification generation
     * @member appInstanceId The deleted application instance Identifier
     * @member links Links to resources related to this notification
     * @see ETSI GS MEC 010-2 Clause 6.2.2.30	Type: AppInstanceIdentifierDeletionNotification
     */
    type record AppInstanceIdentifierDeletionNotification {
      JSON.String id,
      NotificationType notificationType,
      JSON.String subscriptionId,
      TimeStamp timeStamp,
      JSON.String appInstanceId,
      AppInstanceIdentifierDeletionNotification_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record AppInstanceIdentifierDeletionNotification_Link {
      LinkType subscription,
      LinkType appInstance
    }

    /**
     * @desc The LocationInformation data type represents the location information of the site hosting the MEC application instance
     * @member countryCode The two-letter ISO 3166 [3] country code in capital letters where an instance is deployed
     * @member civicAddress Provides the civic address of the site hosting the MEC application instance
     * @member Geographical position (i.e. latitude and longitude) where an instance is deployed
     * @see ETSI GS MEC 010-2 Clause 6.2.2.31	Type: LocationInformation
     */
    type record LocationInformation {
      JSON.String countryCode,
      CivicAddressElement civicAddress optional,
      JSON.String geographicalPosition optional
    }

    /**
     * @desc This data type represents the valid modes of cancelling an application LCM operation
     * @see ETSI GS MEC 010-2 Clause 6.2.2.32	Type: CancelMode
     */
    type StopType CancelMode;

  } // End of group application_lifecycle_management_information_model

  group application_package_information_model {

    /**
     * @desc The data type CreateAppPkg represents the parameters for creating a new application package resource
     * @member appPkgName Name of the application package to be onboarded
     * @member appPkgVersion Version of the application package to be onboarded
     * @member appProvider The provider's name of the application package to be onboarded
     * @member checksum Checksum of the onboarded application package
     * @member userDefinedData User defined data for the application package
     * @member appPkgPath Address information of the application package
     * @see ETSI GS MEC 010-2 Clause 6.2.3.2	Type: CreateAppPkg
     */
    type record CreateAppPkg {
      JSON.String appPkgName,
      JSON.String appPkgVersion,
      JSON.String appProvider optional,
      Checksum checksum,
      KeyValuePairs userDefinedData optional,
      JSON.AnyURI appPkgPath
    }

    /**
     * @desc The data type AppPkgInfo represents the parameters for an application package resource
     * @member id Identifier of the application package resource
     * @member appDId The application descriptor identifier
     * @member appProvider The provider's name of the onboarded application package
     * @member appName Name of the onboarded application
     * @member appSoftwareVersion Software version of the application. This is updated when there is any change to the software in the onboarded application package
     * @member appDVersion Version of the application descriptor
     * @member checksum Checksum of the onboarded application package
     * @member signingCertificate The singleton signing certificate if it is included as a file in the AppD archive
     * @member softwareImages Information of application software image in application package
     * @member additionalArtifacts Additional information of application package artifacts that are not application software images
     * @member onboardingState Onboarding state of application package
     * @member operationalState Operational state of the onboarded application package
     * @member usageState Usage state of the onboarded instance of the application package
     * @member mecInfo The MEC version that compatible with this application
     * @member userDefinedData User defined data for the application package
     * @member onboardingFailureDetails Failure details of current onboarding procedure
     * @member links Links to resources related to this resource
     * @see ETSI GS MEC 010-2 Clause 6.2.3.3	Type: AppPkgInfo
     */
    type record AppPkgInfo {
      JSON.String id,
      JSON.String appDId,
      JSON.String appProvider optional,
      JSON.String appName,
      JSON.String appSoftwareVersion,
      JSON.String appDVersion,
      Checksum checksum,
      JSON.String signingCertificate optional,
      AppPkgSWImageInfo softwareImages,
      AppPkgArtifactInfo additionalArtifacts optional,
      OnboardingState onboardingState,
      AppPkgInfo_OperationalState operationalState,
      UsageState usageState,
      AppPkgInfo_MecInfo mecInfo,
      KeyValuePairs userDefinedData optional,
      ProblemDetails onboardingFailureDetails optional,
      AppPkgInfo_Links links
    } with {
      variant (links) "name as '_links'";
    }
    type record of AppPkgInfo AppPkgInfoList;

    type record AppPkgSWImageInfo_ {
      // FIXME The data type of application software image information data model is related to virtualisation method and needs for further study
    }
    type record length(1..infinity) of AppPkgSWImageInfo_ AppPkgSWImageInfo;
    type record AppPkgArtifactInfo {
      // FIXME The data type of additional information of application package artifacts is not specified in the present document
    }

    type enumerated OnboardingState {
      CREATED,
      UPLOADING,
      PROCESSING,
      ONBOARDED
    }

    type enumerated AppPkgInfo_OperationalState {
      ENABLED,
      DISABLED,
      UNKNOWN // Used for BI purpose only
1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717
    }

    type enumerated UsageState {
      IN_USE,
      NOT_IN_USE
    }

    type record length(1..infinity) of JSON.String AppPkgInfo_MecInfo;

    type record AppPkgInfo_Links {
      LinkType self_,
      LinkType appD,
      LinkType appPkgContent,
      LinkType vnfPkgInfo optional
    } with {
      variant (self_) "name as 'self'";
    }

    /**
     * @desc The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package
     * @member id Identifier of the subscription to application package notification
     * @member subscriptionType Type of subscription
     * @member callbackUri The URI of the endpoint for the subscription related notification to be sent to
     * @member links Links to resources related to this resource
     * @see ETSI GS MEC 010-2 Clause 6.2.3.4	Type: AppPkgSubscriptionInfo
     */
    type record AppPkgSubscriptionInfo {
      JSON.String id,
      AppPkgSubscriptionType subscriptionType,
      JSON.AnyURI callbackUri,
      AppPkgSubscriptionInfo_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record AppPkgSubscriptionInfo_Link {
      LinkType self_
    } with {
      variant (self_) "name as 'self'"
    }

    /**
     * @desc The data type represents a subscription link list of notification on application package management
     * @member links Links to resources related to this resource
     * @see ETSI GS MEC 010-2 Clause 6.2.3.5	Type: AppPkgSubscriptionLinkList
     */
    type record AppPkgSubscriptionLinkList {
      AppPkgSubscriptionLinkList_Link links
    } with {
      variant (links) "name as '_links'";
    }

    /**
     * @desc Links to resources related to this resource
     * @member self_ URI of this resource
     * @member subscriptions A link list to the subscriptions to an application package
     * @see ETSI GS MEC 010-2 Clause 6.2.3.5	Type: AppPkgSubscriptionLinkList
     */
    type record AppPkgSubscriptionLinkList_Link {
      LinkType self_,
      AppPkgSubscriptionLinkList_Link_Subscriptions subscriptions optional
    } with {
      variant (self_) "name as 'self'";
    }

    type record AppPkgSubscriptionLinkList_Link_Subscription {
      JSON.AnyURI href,
      AppPkgSubscriptionType subscriptionType
    }

    type record length(1..infinity) of AppPkgSubscriptionLinkList_Link_Subscription AppPkgSubscriptionLinkList_Link_Subscriptions;

    /**
     * @desc This data type represents an application package management notification for informing the subscribers about onboarding application package resources
     * @member id Identifier of this notification
     * @member notificationType Discriminator for the different notification types
     * @member subscriptionId Identifier of the subscription to this notification
     * @member timeStamp Date and time of the notification generation
     * @member appPkgId Identifier of the onboarded application package
     * @member appDId The application descriptor identifier identifies the application package and the application descriptor in a globally unique way
     * @member operationalState Operational state of the application package
     * @member linksLinks to resources related to this notification
     * @see ETSI GS MEC 010-2 Clause 6.2.3.6	Type: AppPkgNotification
     */
    type record AppPkgNotification {
      JSON.String id,
      JSON.String notificationType,
      JSON.String subscriptionId,
      TimeStamp timeStamp,
      JSON.String appPkgId,
      JSON.String appDId,
      AppPkgInfo_OperationalState operationalState,
      AppPkgNotification_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record AppPkgNotification_Link {
      LinkType subscription
    }

    /**
     * @desc The data type represents the input parameters of "subscription operation" to notification of application package management for the onboarding, or operational state change of application package
     * @member callbackUri The URI of the endpoint for the subscription related notification to be sent to
     * @member subscriptionType Type of the subscription
     * @member appPkgFilter The attribute-based filter is to filter application packages on which the query applies
     * @see ETSI GS MEC 010-2 Clause 6.2.3.7	Type: AppPkgSubscription
     */
    type record AppPkgSubscription {
      JSON.AnyURI callbackUri,
      AppPkgSubscriptionType subscriptionType,
      AppPkgFilter appPkgFilter optional
    }

    /**
     * @desc The data type represents modifications of the "AppPkgInfo" data type that can be requested to perform "application package operation"
     * @member New value of the "operationalState" attribute of the "OnboardedAppPkgInfo" structure
     * @see ETSI GS MEC 010-2 Clause 6.2.3.8	Type: AppPkgInfoModifications
     */
    type record AppPkgInfoModifications {
      AppPkgInfo_OperationalState operationalState
    }

    /**
     * @desc String representing the type of a subscription
     * @see ETSI GS MEC 010-2 Clause 6.2.3.9.2	Simple data types
     */
    type JSON.String AppPkgSubscriptionType;

    /**
     * @desc This data type represents subscription filter criteria to match application package
     * @member appPkgInfoId Match the application package identifier which is allocated by the MEO
     * @member appDId Match the application descriptor identifier which is allocated by the application provider
     * @member appProvider Match the provider's name of the onboarded application
     * @member appName Match the name of the onboarded application
     * @member appSoftwareVersion Match the software version of the application package
     * @member appDVersion Match the version of the application descriptor
     * @member operationalState Match particular operational state of the application package
     * @member usageState Match particular usage state of the application package
     * @see ETSI GS MEC 010-2 Clause 6.2.3.10	Type: AppPkgFilter
     */
    type record AppPkgFilter {
      JSON.String appPkgInfoId optional,
      JSON.String appDId optional,
      JSON.String appProvider optional,
      JSON.String appName optional,
      JSON.String appSoftwareVersion optional,
      JSON.String appDVersion optional,
      AppPkgInfo_OperationalState operationalState optional,
      UsageState usageState optional
    }

  } // End of group application_package_information_model

  group granting_information_model {

    /**
     * @desc This type represents a grant request
     * @member appInstanceId Identifier of the application instance which this grant request is related to
     * @member appLcmOpOccId The identifier of the application lifecycle management operation occurrence associated to the GrantRequest
     * @member appDId Identifier of the AppD that defines the application for which the LCM operation is to be granted
     * @member operation The lifecycle management operation for which granting is requested
     * @member addResources List of resource definitions in the AppD for resources to be added by the LCM operation which is related to this grant request, with one entry per resource
     * @member tempResources List of resource definitions in the AppD for resources to be temporarily instantiated during the runtime of the LCM operation which is related to this grant request
     * @member removeResources Removed by the LCM operation which is related to this grant request, with one entry per resource
     * @member updateResources Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource
     * @member additionalParams MEPM, specific to the application and the LCM operation
     * @member links Links to resources related to this request
     * @see ETSI GS MEC 010-2 Clause 6.2.4	Granting information model
     */
    type record GrantRequest {
      JSON.String appInstanceId,
      JSON.String appLcmOpOccId,
      JSON.String appDId,
      OperationType operation,
      ResourceDefinition addResources optional,
      ResourceDefinition tempResources optional,
      ResourceDefinition updateResources optional,
      KeyValuePairs additionalParams optional,
      GrantRequest_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record GrantRequest_Link {
      LinkType appLcmOpOcc,
      LinkType appInstance
    }

    /**
     * @desc This type provides information of an existing or proposed resource used by the application
     * @member id Identifier of this "ResourceDefinition" structure, unique at least within the scope of the "GrantRequest" structure
     * @member type_ Type of the resource definition referenced
     * @member vduId Reference to the related VDU in the AppD applicable to this resource
     * @member resourceTemplateId Reference to a resource template, i.e. VirtualComputeDescriptor, AppExtCpd, VirtualStorageDescriptor in the AppD
     * @member resource Resource information for an existing resource
     * @see ETSI GS MEC 010-2 Clause 6.2.4.3	Type: ResourceDefinition
     */
    type record ResourceDefinition {
      JSON.String id,
      ResourceDefinition_Type type_,
      JSON.String vduId optional,
      JSON.String resourceTemplateId,
      ResourceDefinition_Resource resource
    }

    type enumerated ResourceDefinition_Type {
      COMPUTE,
      VL,
      STORAGE,
      LINKPORT
    }

    type record ResourceDefinition_Resource {
      VimConnectionInfo vimConnectionInfo,
      JSON.String resourceId
    }

    /**
     * @desc This type represents a grant
     * @member id Identifier of the Grant
     * @member appInstanceId Identifier of the application instance which this Grant is related to
     * @member appLcmOpOccId The identifier of the application lifecycle management operation occurrence associated to the Grant
     * @member vimConnections Provides information regarding VIM connections that are approved to be used by the MEPM to allocate resources, and provides parameters of these VIM connections
     * @member zones Identifies resource zones where the resources are approved to be allocated by the MEPM
     * @member zoneGroups Information about groups of resource zones that are related and that the MEO has chosen to fulfil a zoneGroup constraint in the Grant request
     * @member addResources List of resources that are approved to be added, with one entry per resource
     * @member tempResources List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource
     * @member removeResources List of resources that are approved to be removed, with one entry per resource
     * @member updateResources List of resources that are approved to be modified, with one entry per resource
     * @member vimAssets Information about assets for the application that are managed by the MEO in the VIM, such as software images
     * @member extVirtualLinks Information about external VLs to connect the application instance to
     * @member MEPM, specific to the application and the LCM operation
     * @member links Links to resources related to this request
     * @see ETSI GS MEC 010-2 Clause 6.2.4.4	Type: Grant
     */
    type record Grant {
      JSON.String id,
      JSON.String appInstanceId,
      JSON.String appLcmOpOccId,
      VimConnectionInfo vimConnections optional,
      ZoneInfo zones optional,
      ZoneGroupInfo zoneGroups optional,
      GrantInfo addResources optional,
      GrantInfo tempResources optional,
      GrantInfo removeResources optional,
      GrantInfo updateResources optional,
      VimAssets vimAssets optional,
      ExtVirtualLinkData extVirtualLinks optional,
      KeyValuePairs additionalParams optional,
      Grant_Link links
    } with {
      variant (links) "name as '_links'";
    }

    type record VimAssets {
      VimSoftwareImage softwareImages optional
    }

    type record Grant_Link {
      LinkType appLcmOpOcc,
      LinkType appInstance
    }

    /**
     * @desc This type contains information about a Compute, storage or network resource whose addition/update/deletion was granted
     * @member resourceDefinitionId Identifier of the related "ResourceDefinition" structure from the related "GrantRequest" structure
     * @member vimConnectionId Identifier of the VIM connection to be used to manage this resource
     * @member zoneId Reference to the identifier of the "ZoneInfo" structure in the "Grant" structure defining the resource zone into which this resource is to be placed
     * @member resourceGroupId Identifier of the "infrastructure resource group", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource
     * @see ETSI GS MEC 010-2 Clause 6.2.4.5 Type: GrantInfo
     */
    type record GrantInfo {
      JSON.String resourceDefinitionId,
      JSON.String vimConnectionId optional,
      JSON.String zoneId optional,
      JSON.String resourceGroupId optional
    }

    /**
     * @desc This type provides information regarding a resource zone
     * @member id The identifier of this ZoneInfo instance, for the purpose of referencing it from other structures in the "Grant" structure
     * @member zoneId The identifier of the resource zone, as managed by the resource management layer (typically, the VIM)
     * @member vimConnectionId Identifier of the connection to the VIM that manages the resource zone
     * @see ETSI GS MEC 010-2 Clause 6.2.4.6	Type: ZoneInfo
     */
    type record ZoneInfo {
      JSON.String id,
      JSON.String zoneId,
      JSON.String vimConnectionId optional
    }

    /**
     * @desc This type provides information regarding a resource zone group
     * @member zoneId References of identifiers of "ZoneInfo" structures, each of which provides information about a resource zone that belongs to this group
     * @see ETSI GS MEC 010-2 Clause 6.2.4.7	Type: ZoneGroupInfo
     */
    type record ZoneGroupInfo {
      ZoneIds zoneId
    }

    type record length(1..infinity) of JSON.String ZoneIds;

    /**
     * @desc This type represents an external VL
     * @member id The identifier of the external VL instance
     * @member vimConnectionId Identifier of the VIM connection to manage this resource
     * @member resourceId The identifier of the resource in the scope of the VIM
     * @member extCps External CPs of the application instance to be connected to this external VL
     * @member extLinkPorts Externally provided link ports to be used to connect external connection points to this external VL
     * @see ETSI GS MEC 010-2 Clause 6.2.4.8	Type: ExtVirtualLinkData
     */
    type record ExtVirtualLinkData {
      JSON.String id,
      JSON.String vimConnectionId optional,
      JSON.String resourceId,
      AppExtCpData extCps,
      ExtLinkPortData extLinkPorts optional
    }

    /**
     * @desc This type represents an externally provided link port to be used to connect an external connection point to an external VL
     * @member id Identifier of this link port as provided by the entity that has created the link port
     * @member resourceHandleReference to the virtualised resource realizing this link port
     * @see ETSI GS MEC 010-2 Clause 6.2.4.9	Type: ExtLinkPortData
     */
    type record ExtLinkPortData {
      JSON.String id,
      ResourceHandle resourceHandle
    }

    /**
     * @desc This type represents the information that allows addressing a virtualised resource that is used by an application instance
     * @member vimConnectionId Identifier of the VIM connection to manage the resource
     * @member resourceId Identifier of the resource in the scope of the VIM
     * @member vimLevelResourceType Type of the resource in the scope of the VIM
     * @see ETSI GS MEC 010-2 Clause 6.2.4.10	Type: ResourceHandle
     */
    type record ResourceHandle {
      JSON.String vimConnectionId optional,
      JSON.String resourceId,
      JSON.String vimLevelResourceType optional
    }

    /**
     * @desc This type contains a mapping between a software image definition in the AppD and the corresponding software image managed by the MEO in the VIM which is needed during compute resource instantiation
     * @member vimConnectionId Identifier of the VIM connection to access the software image referenced in this structure
     * @member appDSoftwareImageId Identifier which references the software image descriptor in the AppD
     * @member vimSoftwareImageId Identifier of the software image in the resource management layer (i.e. VIM)
     * @see ETSI GS MEC 010-2 Clause 6.2.4.11	Type: VimSoftwareImage
     */
    type record VimSoftwareImage {
      JSON.String vimConnectionId optional,
      JSON.String appDSoftwareImageId,
      JSON.String vimSoftwareImageId
    }

    /**
     * @desc This type represents configuration information for external CPs created from a CPD
     * @member cpdId The identifier of the CPD in the AppD
     * @member cpConfig List of instance data that need to be configured on the CP instances created from the respective CPD
     * @see ETSI GS MEC 010-2 Clause 6.2.4.12	Type: AppExtCpData
     */
    type record AppExtCpData_ {
      JSON.String cpdId,
      AppExtCpConfig cpConfig
    }

    type record length(1..infinity) of AppExtCpData_ AppExtCpData;

    /**
     * @desc This type represents an externally provided link port or network address information per instance of an external connection point
     * @member cpInstanceId Identifier of the external CP instance to which this set of configuration parameters is requested to be applied
     * @member linkPortId Identifier of a pre-configured link port to which the external CP will be associated
     * @member cpProtocolData Parameters for configuring the network protocols on the link port that connects the CP to a VL
     * @see ETSI GS MEC 010-2 Clause 6.2.4.13	Type: AppExtCpConfig
     */
    type record AppExtCpConfig_ {
      JSON.String cpInstanceId optional,
      JSON.String linkPortId optional,
      CpProtocolData cpProtocolData optional
    }

    type record length(1..infinity) of AppExtCpConfig_ AppExtCpConfig;

    /**
     * @desc This type represents network protocol data
     * @member layerProtocol Identifier of layer(s) and protocol(s)
     * @member ipOverEthernet Network address data for IP over Ethernet to assign to the extCP instance
     * @see ETSI GS MEC 010-2 Clause 6.2.4.14	Type: CpProtocolData
     */
    type record CpProtocolData_ {
      LayerProtocol layerProtocol,
      IpOverEthernetAddressData ipOverEthernet optional
    }

    type record length(1..infinity) of CpProtocolData_ CpProtocolData;

    type enumerated LayerProtocol {
      IP_OVER_ETHERNET
    }

    /**
     * @desc This type represents network address data for IP over Ethernet
     * @member macAddress MAC address
     * @member ipAddresses List of IP addresses to assign to the CP instance
     * @see ETSI GS MEC 010-2 Clause 6.2.4.15	Type: IpOverEthernetAddressData
     */
    type record IpOverEthernetAddressData {
      JSON.String macAddress optional,
      IpAddresses ipAddresses optional
    }

    /**
     * @desc IP addresses to assign to the CP instance
     * @member type_ The type of the IP addresses
     * @member fixedAddresses Fixed addresses to assign (from the subnet defined by "subnetId" if provided)
     * @member numDynamicAddresses Number of dynamic addresses to assign (from the subnet defined by "subnetId" if provided)
     * @member addressRange An IP address range to be used, e.g. in case of egress connections
     * @see ETSI GS MEC 010-2 Clause 6.2.4.15 Type: IpOverEthernetAddressData
     */
    type record IpAddress {
      IpAddressType type_,
      FixedAddresses fixedAddresses optional,
      integer numDynamicAddresses optional,
      AddressRange addressRange optional
    }

    type record length(1..infinity) of IpAddress IpAddresses;

    type enumerated IpAddressType {
      IPV4,
      IPV6
    }

    type record length(1..infinity) of JSON.String FixedAddresses;

    type record AddressRange {
      JSON.String minAddress,
      JSON.String maxAddress,
      JSON.String subnetId optional
    }

  } // End of group granting_information_model

  group common_information_model {

    /**
     * @desc This data type represents a type of link
     * @member href URI referring to a resource
     * @see ETSI GS MEC 010-2 Clause 6.2.5.2 Type: LinkType
     */
    type record LinkType {
      JSON.AnyURI href
    }
    /**
     * @desc This data type represents a list of key-value pairs
     * @member 
     * @member 
     * @see ETSI GS MEC 010-2 Clause 6.2.5.3	Type: KeyValuePairs
     */
    type record KeyValuePairs {
      JSON.String key_name,
      anytype key_value // FIXME To be refined
    }

    /**
     * @desc This data type represents the time stamp as Unix-time since January 1, 1970, 00:00:00 UTC
     * @member seconds The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
     * @member nanoSeconds The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
     * @see ETSI GS MEC 010-2 Clause 6.2.5.4 Type: TimeStamp
     */
    type record TimeStamp {
      Seconds seconds,
      NanoSeconds nanoSeconds
      }

    /**
     * @desc The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
     */
    type UInt32 Seconds;

    /**
     * @desc The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
     */
    type UInt32 NanoSeconds;

    /**
     * @desc This type represents the checksum of an application package
     * @member algorithm Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004 [18]
     * @member hash The hexadecimal value of the checksum
     * @see ETSI GS MEC 010-2 Clause 6.2.5.6	Type: Checksum
     */
    type record Checksum {
      JSON.String algorithm,
      JSON.String hash
    }

  } // End of group common_information_model

} with {
  extension "anytype integer, float, boolean, universal charstring";
  encode "JSON"
}