Application

PriceManager application APS resource. One global instance per CloudBlue Commerce platform installation, registered when the PriceManager APS package is imported. All custom operations under PriceManager (price points, pricing groups, price books, pricing segments, import/export) are exposed off this resource.

GraphViz

Schema

The considered APS type (download) extends the Application APS type(s) and looks as follows:

{
  "name": "Application",
  "id": "http://com.ingrammicro/pricemanager/1.1",
  "apsVersion": "2.0",
  "implements": [
    "http://aps-standard.org/types/core/application/1.0",
    "http://ingrammicro.com/cb/types/astrum/client/1.0"
  ],
  "access": {
    "public": true
  },
  "properties": {
    "uiState": {
      "type": "string",
      "default": "disabled",
      "enum": [
        "enabled",
        "disabled",
        "global_enabled"
      ]
    }
  },
  "operations": {
    "products": {
      "path": "products",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "getPrices": {
      "path": "api/prices",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": true
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "mode": {
          "kind": "query",
          "type": "PriceManagerMode"
        },
        "request": {
          "kind": "body",
          "type": "PricesRequest"
        }
      }
    },
    "getMode": {
      "path": "api/mode",
      "verb": "GET",
      "response": {
        "type": "string"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "setMode": {
      "path": "api/mode",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "mode": {
          "kind": "body",
          "type": "string"
        }
      }
    },
    "importPrices": {
      "path": "import/{vendorId}",
      "verb": "POST",
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "vendorId": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "importUploadPriceFile": {
      "path": "management/import/upload",
      "verb": "POST",
      "response": {
        "type": "ImportUploadResult"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceFileInfo": {
          "kind": "body",
          "type": "ImportUploadInfo"
        }
      }
    },
    "parse": {
      "path": "parse/{dataId}",
      "verb": "POST",
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "dataId": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "prepareProposals": {
      "path": "prepare-proposals/{dataId}",
      "verb": "POST",
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "dataId": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "importGetPriceDiffs": {
      "path": "management/import/diff",
      "verb": "POST",
      "response": {
        "type": "ImportDiffResult"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "diffsInfo": {
          "kind": "body",
          "type": "ImportDiffInfo"
        }
      }
    },
    "getProductDiffs": {
      "path": "product-diffs/{dataId}",
      "verb": "GET",
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "dataId": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "getVendors": {
      "path": "vendors",
      "verb": "GET",
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      }
    },
    "setPrices": {
      "path": "set-prices/{dataId}",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "dataId": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "importSavePrices": {
      "path": "management/import/save",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "saveInfo": {
          "kind": "body",
          "type": "ImportSaveInfo"
        }
      }
    },
    "exportProductXlsx": {
      "path": "export/products-xlsx",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        }
      }
    },
    "newExportProductXlsx": {
      "path": "management/export",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "serviceTemplateId": {
          "kind": "query",
          "type": "integer"
        },
        "effectiveDate": {
          "kind": "query",
          "type": "string"
        },
        "segmentId": {
          "kind": "query",
          "type": "integer"
        }
      }
    },
    "migrate": {
      "path": "migrate",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "batchSize": {
          "kind": "query",
          "type": "integer"
        },
        "batchAmount": {
          "kind": "query",
          "type": "integer"
        },
        "microBatchAmount": {
          "kind": "query",
          "type": "integer"
        }
      }
    },
    "transferPriceOwnership": {
      "path": "management/transfer-ownership/{planId}",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "planId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "transferPriceOwnershipMass": {
      "path": "management/transfer-ownership",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "request": {
          "kind": "body",
          "type": "TransferOwnershipRequest"
        }
      }
    },
    "writeNotifications": {
      "path": "write-notifications",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "batchSize": {
          "kind": "query",
          "type": "integer"
        },
        "notificationData": {
          "kind": "body",
          "type": "NotificationData"
        }
      }
    },
    "addPrices": {
      "path": "management/plans/add-prices",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "request": {
          "kind": "body",
          "type": "AddPricesRequest"
        }
      }
    },
    "managementPlans": {
      "path": "management/plans",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "effectiveDate": {
          "kind": "query",
          "type": "string"
        },
        "planId": {
          "kind": "query",
          "type": "integer"
        },
        "planName": {
          "kind": "query",
          "type": "string"
        },
        "resourceId": {
          "kind": "query",
          "type": "integer"
        },
        "resourceName": {
          "kind": "query",
          "type": "string"
        },
        "serviceTemplateId": {
          "kind": "query",
          "type": "integer"
        },
        "serviceTemplateName": {
          "kind": "query",
          "type": "string"
        },
        "published": {
          "kind": "query",
          "type": "boolean"
        },
        "mpn": {
          "kind": "query",
          "type": "string"
        },
        "sortBy": {
          "kind": "query",
          "type": "string"
        },
        "sortType": {
          "kind": "query",
          "type": "string"
        },
        "segmentId": {
          "kind": "query",
          "type": "integer"
        },
        "extendWith": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "historyPrices": {
      "path": "management/plans/history",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "request": {
          "kind": "body",
          "type": "PricePointHistoryRequest"
        }
      }
    },
    "serviceTemplates": {
      "path": "management/serviceTemplates",
      "verb": "GET",
      "response": {
        "type": "array",
        "items": {
          "type": "ServiceTemplateInfo"
        }
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      }
    },
    "getPricingGroups": {
      "path": "pricing-groups",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "type": {
          "kind": "query",
          "type": "array"
        },
        "status": {
          "kind": "query",
          "type": "PricingGroupStatus"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "getPricingGroupHeader": {
      "path": "pricing-groups/{groupId}",
      "verb": "GET",
      "response": {
        "type": "PricingGroupInfo"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "groupId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "createPricingGroup": {
      "path": "pricing-groups",
      "verb": "POST",
      "response": {
        "type": "PricingGroupResponse"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "pricingGroupRequest": {
          "kind": "body",
          "type": "PricingGroupRequest"
        }
      }
    },
    "syncSystemPricingGroups": {
      "path": "pricing-groups/sync",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "systemPricingGroupsRequest": {
          "kind": "body",
          "type": "SystemPricingGroupsRequest"
        }
      }
    },
    "updatePricingGroup": {
      "path": "pricing-groups/{groupId}",
      "verb": "PUT",
      "response": {
        "type": "PricingGroupResponse"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "groupId": {
          "kind": "path",
          "type": "integer"
        },
        "pricingGroupRequest": {
          "kind": "body",
          "type": "PricingGroupRequest"
        }
      }
    },
    "deletePricingGroup": {
      "path": "pricing-groups/{groupId}",
      "verb": "DELETE",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "groupId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "getServiceTemplates": {
      "path": "pricing-groups/serviceTemplates",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "available": {
          "kind": "query",
          "type": "boolean"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "getAllServiceTemplateOrGroupResources": {
      "path": "pricing-groups/content",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "serviceTemplateId": {
          "kind": "query",
          "type": "integer"
        },
        "groupId": {
          "kind": "query",
          "type": "integer"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "vendorName": {
          "kind": "query",
          "type": "string"
        },
        "available": {
          "kind": "query",
          "type": "boolean"
        },
        "status": {
          "kind": "query",
          "type": "PricingGroupContentStatus"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "changePricingGroupContent": {
      "path": "pricing-groups/content",
      "verb": "POST",
      "response": {
        "type": "PricingGroupResponse"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "pricingGroupContentRequest": {
          "kind": "body",
          "type": "PricingGroupContentRequest"
        }
      }
    },
    "updateSystemPricingGroup": {
      "path": "pricing-groups/sync-group-settings",
      "verb": "PUT",
      "response": {
        "type": "SystemPricingGroupStatusResponse"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "request": {
          "kind": "body",
          "type": "SystemPricingGroupStatusRequest"
        }
      }
    },
    "getSystemPricingGroup": {
      "path": "pricing-groups/sync-group-settings",
      "verb": "GET",
      "response": {
        "type": "SystemPricingGroupStatusResponse"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "accountId": {
          "kind": "query",
          "type": "integer"
        }
      }
    },
    "getPriceBooks": {
      "path": "price-books",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "getPriceBookById": {
      "path": "price-books/{priceBookId}",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "priceBookApply": {
      "path": "price-books/{priceBookId}/apply",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "applyRequest": {
          "kind": "body",
          "type": "ApplyRequest"
        }
      }
    },
    "getPriceBookAvailableAccounts": {
      "path": "price-books/{priceBookId}/available-accounts",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "status": {
          "kind": "query",
          "type": "AccountStatus"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "createPriceBook": {
      "path": "price-books",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookRequest": {
          "kind": "body",
          "type": "PriceBookRequest"
        }
      }
    },
    "clonePriceBook": {
      "path": "price-books/{priceBookId}/clone",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "priceBookRequest": {
          "kind": "body",
          "type": "PriceBookRequest"
        }
      }
    },
    "updatePriceBook": {
      "path": "price-books/{priceBookId}",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "priceBookRequest": {
          "kind": "body",
          "type": "PriceBookRequest"
        }
      }
    },
    "deletePriceBook": {
      "path": "price-books/{priceBookId}",
      "verb": "DELETE",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "getPriceBookContent": {
      "path": "price-books/{priceBookId}/content",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "string"
        }
      }
    },
    "updatePriceBookContent": {
      "path": "price-books/{priceBookId}/content",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "request": {
          "kind": "body",
          "type": "ContentRequest"
        }
      }
    },
    "getPriceBookContentAssignments": {
      "path": "price-books/{priceBookId}/assignments",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "string"
        }
      }
    },
    "updatePriceBookAssignments": {
      "path": "price-books/{priceBookId}/assignments",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "request": {
          "kind": "body",
          "type": "AssignmentsRequest"
        }
      }
    },
    "getPriceBookAvailableSegments": {
      "path": "price-books/{priceBookId}/available-segments",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "type": {
          "kind": "query",
          "type": "PricingSegmentType"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "getPriceBookSegment": {
      "path": "price-books/{priceBookId}/segment",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "assignSegmentToPriceBook": {
      "path": "price-books/{priceBookId}/segment",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "priceBookId": {
          "kind": "path",
          "type": "integer"
        },
        "request": {
          "kind": "body",
          "type": "PriceBookSegmentRequest"
        }
      }
    },
    "getPricingSegments": {
      "path": "pricing-segments",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "type": {
          "kind": "query",
          "type": "PricingSegmentType"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "getPricingSegment": {
      "path": "pricing-segments/{segmentId}",
      "verb": "GET",
      "response": {
        "type": "PricingSegmentInfo"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "createPricingSegment": {
      "path": "pricing-segments",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "pricingSegmentRequest": {
          "kind": "body",
          "type": "PricingSegmentRequest"
        }
      }
    },
    "updatePricingSegment": {
      "path": "pricing-segments/{segmentId}",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "pricingSegmentRequest": {
          "kind": "body",
          "type": "PricingSegmentUpdateRequest"
        }
      }
    },
    "deletePricingSegment": {
      "path": "pricing-segments/{segmentId}",
      "verb": "DELETE",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        }
      }
    },
    "updatePricingSegmentPriority": {
      "path": "pricing-segments/{segmentId}/priority",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "priorityRequest": {
          "kind": "body",
          "type": "PricingSegmentPriorityRequest"
        }
      }
    },
    "getPricingSegmentContent": {
      "path": "pricing-segments/{segmentId}/content",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "type": {
          "kind": "query",
          "type": "ContentAccountType"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "updatePricingSegmentContent": {
      "path": "pricing-segments/{segmentId}/content",
      "verb": "PUT",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "contentRequest": {
          "kind": "body",
          "type": "PricingSegmentContentRequest"
        }
      }
    },
    "deletePricingSegmentContent": {
      "path": "pricing-segments/{segmentId}/content-remove",
      "verb": "POST",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "contentRequest": {
          "kind": "body",
          "type": "PricingSegmentContentDeleteRequest"
        }
      }
    },
    "getAvailableAccountsForSegment": {
      "path": "pricing-segments/{segmentId}/available-accounts",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "type": {
          "kind": "query",
          "type": "ContentAccountType"
        },
        "parentAccountId": {
          "kind": "query",
          "type": "integer"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "getAvailableCustomerClassesForSegment": {
      "path": "pricing-segments/{segmentId}/available-classes",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "searchText": {
          "kind": "query",
          "type": "string"
        },
        "parentAccountId": {
          "kind": "query",
          "type": "integer"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    },
    "getAppliedPriceBooks": {
      "path": "pricing-segments/{segmentId}/price-books",
      "verb": "GET",
      "response": {
        "type": "object"
      },
      "errorResponse": {
        "type": "object"
      },
      "access": {
        "public": false
      },
      "parameters": {
        "id": {
          "kind": "path",
          "type": "string"
        },
        "segmentId": {
          "kind": "path",
          "type": "integer"
        },
        "offset": {
          "kind": "query",
          "type": "integer"
        },
        "limit": {
          "kind": "query",
          "type": "integer"
        },
        "sort": {
          "kind": "query",
          "type": "array"
        }
      }
    }
  },
  "structures": {
    "UiState": {
      "type": "object"
    },
    "PriceManagerMode": {
      "type": "object"
    },
    "PricesRequest": {
      "type": "object"
    },
    "ImportUploadResult": {
      "type": "object"
    },
    "ImportUploadInfo": {
      "type": "object"
    },
    "ImportDiffResult": {
      "type": "object"
    },
    "ImportDiffInfo": {
      "type": "object"
    },
    "ImportSaveInfo": {
      "type": "object"
    },
    "TransferOwnershipRequest": {
      "type": "object"
    },
    "NotificationData": {
      "type": "object"
    },
    "AddPricesRequest": {
      "type": "object"
    },
    "ManagementExtension": {
      "type": "object"
    },
    "PricePointHistoryRequest": {
      "type": "object"
    },
    "ServiceTemplateInfo": {
      "type": "object"
    },
    "PricingGroupType": {
      "type": "object"
    },
    "PricingGroupStatus": {
      "type": "object"
    },
    "PricingGroupInfo": {
      "type": "object"
    },
    "PricingGroupResponse": {
      "type": "object"
    },
    "PricingGroupRequest": {
      "type": "object"
    },
    "SystemPricingGroupsRequest": {
      "type": "object"
    },
    "PricingGroupContentStatus": {
      "type": "object"
    },
    "PricingGroupContentRequest": {
      "type": "object"
    },
    "SystemPricingGroupStatusResponse": {
      "type": "object"
    },
    "SystemPricingGroupStatusRequest": {
      "type": "object"
    },
    "ApplyRequest": {
      "type": "object"
    },
    "AccountStatus": {
      "type": "object"
    },
    "PriceBookRequest": {
      "type": "object"
    },
    "ContentRequest": {
      "type": "object"
    },
    "AssignmentsRequest": {
      "type": "object"
    },
    "PricingSegmentType": {
      "type": "object"
    },
    "PriceBookSegmentRequest": {
      "type": "object"
    },
    "PricingSegmentInfo": {
      "type": "object"
    },
    "PricingSegmentRequest": {
      "type": "object"
    },
    "PricingSegmentUpdateRequest": {
      "type": "object"
    },
    "PricingSegmentPriorityRequest": {
      "type": "object"
    },
    "ContentAccountType": {
      "type": "object"
    },
    "PricingSegmentContentRequest": {
      "type": "object"
    },
    "PricingSegmentContentDeleteRequest": {
      "type": "object"
    }
  }
}

The APS type is used to manage a collection of APS resources. To get a list of resources from that collection, use the following API call:

GET  /aps/2/collections/applications?<RQL-filter>

Properties

NAME

TYPE

ATTRIBUTES

DEFAULT

DESCRIPTION

uiState

Enum

Not Required

disabled

Custom Operations

OPERATION

VERB

PATH

RETURNS

Description

products

GET

/products

Deprecated. Retained for backward compatibility only; do not use in new integrations.

getPrices

POST

/api/prices

Prices grouped per requested plan

Returns prices for the requested plans and accounts. Resolves prices according to plan ownership, applicable pricing segments, and any applied price book.

getMode

GET

/api/mode

Mode identifier (prod or proxy)

Returns the current PriceManager runtime mode.

setMode

PUT

/api/mode

Sets the PriceManager runtime mode.

importPrices

POST

/import/{vendorId}

Deprecated. Replaced by POST /management/import/upload.

importUploadPriceFile

POST

/management/import/upload

Wizard id, parsed row counts, and any validation messages

Uploads an XLSX price file as the first step of the import wizard. Validates the file format and parses its contents; subsequent calls to /management/import/diff and /management/import/save.

parse

POST

/parse/{dataId}

Deprecated. Retained for backward compatibility only; do not use in new integrations.

prepareProposals

POST

/prepare-proposals/{dataId}

Deprecated. Retained for backward compatibility only; do not use in new integrations.

importGetPriceDiffs

POST

/management/import/diff

Per-product price changes and any products missing from the catalog

Generates price differences between an uploaded XLSX file and the currently effective prices.

getProductDiffs

GET

/product-diffs/{dataId}

Deprecated. Replaced by POST /management/import/diff.

getVendors

GET

/vendors

Deprecated. Retained for backward compatibility only; do not use in new integrations.

setPrices

POST

/set-prices/{dataId}

Deprecated. Replaced by POST /management/import/save.

importSavePrices

POST

/management/import/save

Empty 200 OK on success

Persists the imported prices computed by the previous diff step.

exportProductXlsx

GET

/export/products-xlsx

Deprecated. Replaced by GET /management/export.

newExportProductXlsx

GET

/management/export

Base64-encoded XLSX file in the data field of ExportResponse

Exports the currently effective prices for the caller’s account hierarchy as an XLSX file, optionally scoped to a service template, effective date, or pricing segment.

migrate

POST

/migrate

200 OK when migration is complete; 202 Accepted while in progress; 403 if a migration is already in progress or completed

Migrates legacy price records into the modern PriceManager schema in batches. Runs as an asynchronous APS task: the initial call returns 202 Accepted with a retry directive while batches remain, then 200 OK once complete. Restart is rejected with 403 if a migration is already in progress or has already completed.

transferPriceOwnership

POST

/management/transfer-ownership/{planId}

Empty 200 OK on success

Transfers ownership of all prices on a single plan. This means that all prices on the calling account level will be disabled for such plan.

transferPriceOwnershipMass

POST

/management/transfer-ownership

Empty 200 OK on success

Transfers ownership of all prices on a list of plans. All current level prices for requested plans will be disabled.

writeNotifications

POST

/write-notifications

202 Accepted on initial dispatch; 200 OK once the batch is queued

Schedules generation of price-change notifications for the supplied plans. Runs as an asynchronous APS task: the initial call returns 202 Accepted, then 200 OK once the notification batch is queued.

addPrices

POST

/management/plans/add-prices

Empty 200 OK on success

Adds new prices for one or more plans in a single JSON call – the programmatic alternative to the XLSX import wizard. Each plan entry carries the plan id, an optional pricing segment, an effective date, a subscription period, and per-fee-type price values (wholesale, retail, vendor, purchase).

managementPlans

GET

/management/plans

Plans with their effective prices and pagination metadata

Lists plans with their currently effective prices for the management UI.

historyPrices

POST

/management/plans/history

Ordered history entries with effective-from dates and the change source

Returns the chronological history of price changes for a price point.

serviceTemplates

GET

/management/serviceTemplates

Service templates with id and name

Returns BSS service templates visible to the calling account, used by the management UI to scope pricing-group and price-book operations.

getPricingGroups

GET

/pricing-groups

Paginated and filtered pricing groups

Lists pricing groups visible to the calling account, with filtering and pagination.

getPricingGroupHeader

GET

/pricing-groups/{groupId}

Selected pricing group information

Returns the information of selected pricing group.

createPricingGroup

POST

/pricing-groups

Created pricing group with assigned id and metadata

Creates a pricing group.

syncSystemPricingGroups

POST

/pricing-groups/sync

202 Accepted on initial dispatch; 200 OK once synchronisation completes

Synchronises system-managed pricing groups: creates, updates, or removes them to match the supplied request. Used by upstream catalog tooling; not for partner use. Runs as an asynchronous APS task – the initial call returns 202 Accepted with a synchronisation-started info header, then 200 OK with a completion message once the sync finishes.

updatePricingGroup

PUT

/pricing-groups/{groupId}

Updated pricing group

Updates an existing pricing group’s name or description.

deletePricingGroup

DELETE

/pricing-groups/{groupId}

204 No Content on success

Deletes a pricing group.

getServiceTemplates

GET

/pricing-groups/serviceTemplates

Paginated and filtered service templates

Lists BSS service templates available to the calling account when creating or editing pricing groups.

getAllServiceTemplateOrGroupResources

GET

/pricing-groups/content

Paginated and filtered resources

Lists resources (products) of a service template or pricing group, with filtering and pagination. Supply serviceTemplateId or groupId (one of them) to scope the listing.

changePricingGroupContent

POST

/pricing-groups/content

Updated pricing group

Initializes or changes the content of a pricing group. INIT sets the pricing-group type, service template, and initial set of resources; CHANGE adds or removes resources on an already-initialized group.

updateSystemPricingGroup

PUT

/pricing-groups/sync-group-settings

Updated enablement status

Updates the system-managed pricing group enablement status for a tenant. Tenants must omit accountId in the body (the caller’s account is used; supplying it returns an error). Providers may set accountId explicitly to update another tenant, or leave it unset to update their own account.

getSystemPricingGroup

GET

/pricing-groups/sync-group-settings

Current enablement status

Returns the system-managed pricing group enablement status for a tenant. Returns DISABLED when no setting exists for the account. Tenants must omit accountId – the caller’s account is used; supplying it as a non-provider returns an error. Providers may set accountId explicitly to query another tenant.

getPriceBooks

GET

/price-books

Paginated and filtered price books

Lists price books visible to the calling account.

getPriceBookById

GET

/price-books/{priceBookId}

Price book details

Returns the full details of a single price book (id, name, description, type, formulas).

priceBookApply

POST

/price-books/{priceBookId}/apply

202 Accepted on initial dispatch; 200 OK once recalculation completes; 500 on failure

Calculates and applies the price book’s formulas to its currently assigned accounts at the given effective date. Runs as an asynchronous APS task – the initial call returns 202 Accepted with a “recalculation started” info header, then 200 OK once the calculation completes (or 500 on failure).

getPriceBookAvailableAccounts

GET

/price-books/{priceBookId}/available-accounts

Paginated accounts; total count returned in Content-Range response header

Lists accounts that can be assigned to the given price book.

createPriceBook

POST

/price-books

201 Created with the new price book in the body

Creates a new price book.

clonePriceBook

POST

/price-books/{priceBookId}/clone

201 Created with the cloned price book info

Creates a new price book by cloning an existing one. The clone copies content and formulas but starts with no account assignments.

updatePriceBook

PUT

/price-books/{priceBookId}

200 if updated; 404 if no price book with the given id exists

Updates an existing price book’s name or description.

deletePriceBook

DELETE

/price-books/{priceBookId}

204 if deleted; 404 if no price book with the given id exists

Deletes a price book. Fails if any account assignments still exist.

getPriceBookContent

GET

/price-books/{priceBookId}/content

Price book content

Returns the content of a price book – the pricing groups it contains and the formulas applied to each group.

updatePriceBookContent

PUT

/price-books/{priceBookId}/content

200 if updated; 400 on validation errors; 404 if no price book with the given id exists

Updates the content of a price book – pricing groups and their formulas. Request represents the desired state of a content.

getPriceBookContentAssignments

GET

/price-books/{priceBookId}/assignments

List of assigned accounts

Returns the account assignments of a price book.

updatePriceBookAssignments

PUT

/price-books/{priceBookId}/assignments

200 if updated; 404 if no price book with the given id exists

Replaces the account assignments of a price book. Request represents the desired state of assignments.

getPriceBookAvailableSegments

GET

/price-books/{priceBookId}/available-segments

Paginated segments; total count returned in Content-Range response header

Lists pricing segments the caller can assign to the given price book – segments the caller owns or inherits. Only the price book owner can call this.

getPriceBookSegment

GET

/price-books/{priceBookId}/segment

Assigned segment information, or null when none is assigned

Returns the pricing segment assigned to a price book, or null if no segment is assigned.

assignSegmentToPriceBook

PUT

/price-books/{priceBookId}/segment

200 if updated; 404 if no price book with the given id exists

Assigns a pricing segment to a price book, or removes the assignment when segmentId is null. Only the price book owner can call this; the supplied segment must be available to the caller (owned or inherited).

getPricingSegments

GET

/pricing-segments

Paginated and filtered pricing segments

Lists pricing segments visible to the calling account.

getPricingSegment

GET

/pricing-segments/{segmentId}

Pricing segment information

Returns selected pricing segment information (id, name, type, priority, owner).

createPricingSegment

POST

/pricing-segments

201 Created with the new pricing segment in the body

Creates a new pricing segment.

updatePricingSegment

PUT

/pricing-segments/{segmentId}

200 if updated; 404 if no pricing segment with the given id exists

Updates an existing pricing segment’s name or description.

deletePricingSegment

DELETE

/pricing-segments/{segmentId}

204 on success

Deletes a pricing segment. Fails if the segment has any prices, memberships, or is linked to a custom price book.

updatePricingSegmentPriority

PUT

/pricing-segments/{segmentId}/priority

200 if updated; 404 if no pricing segment with the given id exists

Updates the priority of an existing pricing segment.

getPricingSegmentContent

GET

/pricing-segments/{segmentId}/content

Paginated and filtered segment content

Returns the content (assigned accounts and customer classes) of a pricing segment.

updatePricingSegmentContent

PUT

/pricing-segments/{segmentId}/content

200 if updated; 404 if no pricing segment with the given id exists

Adds content (accounts or customer classes) to a pricing segment. Only adds – to remove existing content use deletePricingSegmentContent. Passing an empty list is a no-op.

deletePricingSegmentContent

POST

/pricing-segments/{segmentId}/content-remove

204 if removed; 404 if no pricing segment with the given id exists

Removes specified content from a pricing segment. Skips parent-validation, so inconsistent content can be cleaned up.

getAvailableAccountsForSegment

GET

/pricing-segments/{segmentId}/available-accounts

Paginated accounts; total count returned in Content-Range response header

Lists accounts that can be added to a pricing segment as direct children of a given parent account. Defaults to the caller’s account as the parent when parentAccountId is omitted.

getAvailableCustomerClassesForSegment

GET

/pricing-segments/{segmentId}/available-classes

Paginated customer classes; total count returned in Content-Range response header

Lists customer classes that can be added to a pricing segment. Returns classes owned by a given parent account; defaults to the caller’s account when parentAccountId is omitted.

getAppliedPriceBooks

GET

/pricing-segments/{segmentId}/price-books

Paginated price books with their statuses; total count returned in Content-Range response header

Lists price books that have the given pricing segment applied.

products

HTTP Request

GET /aps/2/resources/{aps-id}/products

Description

Deprecated. Retained for backward compatibility only; do not use in new integrations.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

Returns

getPrices

HTTP Request

POST /aps/2/resources/{aps-id}/api/prices

Description

Returns prices for the requested plans and accounts. Resolves prices according to plan ownership, applicable pricing segments, and any applied price book.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

mode

PriceManagerMode

Optional override of the runtime mode for this call (prod or proxy); defaults to the platform setting

request

PricesRequest

Plans, customer and reseller account ids, sales/transfer type, effective date

Returns

Prices grouped per requested plan

getMode

HTTP Request

GET /aps/2/resources/{aps-id}/api/mode

Description

Returns the current PriceManager runtime mode.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

Returns

Mode identifier (prod or proxy)

setMode

HTTP Request

PUT /aps/2/resources/{aps-id}/api/mode

Description

Sets the PriceManager runtime mode.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

mode

String

Mode identifier (prod or proxy)

Returns

importPrices

HTTP Request

POST /aps/2/resources/{aps-id}/import/{vendorId}

Description

Deprecated. Replaced by POST /management/import/upload.

Parameters

PARAMETER

TYPE

DESCRIPTION

vendorId

String

Returns

importUploadPriceFile

HTTP Request

POST /aps/2/resources/{aps-id}/management/import/upload

Description

Uploads an XLSX price file as the first step of the import wizard. Validates the file format and parses its contents; subsequent calls to /management/import/diff and /management/import/save.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceFileInfo

ImportUploadInfo

File content, validation mode, and import scope

Returns

Wizard id, parsed row counts, and any validation messages

parse

HTTP Request

POST /aps/2/resources/{aps-id}/parse/{dataId}

Description

Deprecated. Retained for backward compatibility only; do not use in new integrations.

Parameters

PARAMETER

TYPE

DESCRIPTION

dataId

String

Returns

prepareProposals

HTTP Request

POST /aps/2/resources/{aps-id}/prepare-proposals/{dataId}

Description

Deprecated. Retained for backward compatibility only; do not use in new integrations.

Parameters

PARAMETER

TYPE

DESCRIPTION

dataId

String

Returns

importGetPriceDiffs

HTTP Request

POST /aps/2/resources/{aps-id}/management/import/diff

Description

Generates price differences between an uploaded XLSX file and the currently effective prices.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

diffsInfo

ImportDiffInfo

Wizard id and diff scope

Returns

Per-product price changes and any products missing from the catalog

getProductDiffs

HTTP Request

GET /aps/2/resources/{aps-id}/product-diffs/{dataId}

Description

Deprecated. Replaced by POST /management/import/diff.

Parameters

PARAMETER

TYPE

DESCRIPTION

dataId

String

Returns

getVendors

HTTP Request

GET /aps/2/resources/{aps-id}/vendors

Description

Deprecated. Retained for backward compatibility only; do not use in new integrations.

Returns

setPrices

HTTP Request

POST /aps/2/resources/{aps-id}/set-prices/{dataId}

Description

Deprecated. Replaced by POST /management/import/save.

Parameters

PARAMETER

TYPE

DESCRIPTION

dataId

String

Returns

importSavePrices

HTTP Request

POST /aps/2/resources/{aps-id}/management/import/save

Description

Persists the imported prices computed by the previous diff step.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

saveInfo

ImportSaveInfo

Wizard id of the upload to save

Returns

Empty 200 OK on success

exportProductXlsx

HTTP Request

GET /aps/2/resources/{aps-id}/export/products-xlsx

Description

Deprecated. Replaced by GET /management/export.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

Returns

newExportProductXlsx

HTTP Request

GET /aps/2/resources/{aps-id}/management/export

Description

Exports the currently effective prices for the caller’s account hierarchy as an XLSX file, optionally scoped to a service template, effective date, or pricing segment.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

serviceTemplateId

Integer

Service template id to scope the export to

effectiveDate

String

Effective date in yyyy-MM-dd; defaults to now when omitted

segmentId

Integer

Pricing segment id to scope the export to

Returns

Base64-encoded XLSX file in the data field of ExportResponse

migrate

HTTP Request

POST /aps/2/resources/{aps-id}/migrate

Description

Migrates legacy price records into the modern PriceManager schema in batches. Runs as an asynchronous APS task: the initial call returns 202 Accepted with a retry directive while batches remain, then 200 OK once complete. Restart is rejected with 403 if a migration is already in progress or has already completed.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

batchSize

Integer

Records per database batch (default 5000)

batchAmount

Integer

Number of batches per call (default 10)

microBatchAmount

Integer

Number of micro-batches per batch (default 1)

Returns

200 OK when migration is complete; 202 Accepted while in progress; 403 if a migration is already in progress or completed

transferPriceOwnership

HTTP Request

POST /aps/2/resources/{aps-id}/management/transfer-ownership/{planId}

Description

Transfers ownership of all prices on a single plan. This means that all prices on the calling account level will be disabled for such plan.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

planId

Integer

Plan id whose prices are transferred

Returns

Empty 200 OK on success

transferPriceOwnershipMass

HTTP Request

POST /aps/2/resources/{aps-id}/management/transfer-ownership

Description

Transfers ownership of all prices on a list of plans. All current level prices for requested plans will be disabled.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

request

TransferOwnershipRequest

Plan ids whose prices are transferred

Returns

Empty 200 OK on success

writeNotifications

HTTP Request

POST /aps/2/resources/{aps-id}/write-notifications

Description

Schedules generation of price-change notifications for the supplied plans. Runs as an asynchronous APS task: the initial call returns 202 Accepted, then 200 OK once the notification batch is queued.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

batchSize

Integer

Plans to retrieve per batch (default 500)

notificationData

NotificationData

Per-plan effective dates to notify on

Returns

202 Accepted on initial dispatch; 200 OK once the batch is queued

addPrices

HTTP Request

POST /aps/2/resources/{aps-id}/management/plans/add-prices

Description

Adds new prices for one or more plans in a single JSON call – the programmatic alternative to the XLSX import wizard. Each plan entry carries the plan id, an optional pricing segment, an effective date, a subscription period, and per-fee-type price values (wholesale, retail, vendor, purchase).

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

request

AddPricesRequest

Plans with their periods, segments, effective dates, and per-fee prices

Returns

Empty 200 OK on success

managementPlans

HTTP Request

GET /aps/2/resources/{aps-id}/management/plans

Description

Lists plans with their currently effective prices for the management UI.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

limit

Integer

Max plans to return per page (default 5)

offset

Integer

Pagination offset (default 0)

effectiveDate

String

Effective date in UTC ISO-8601; defaults to now if omitted

planId

Integer

Plan id filter

planName

String

Plan name filter

resourceId

Integer

Resource id filter

resourceName

String

Resource name filter

serviceTemplateId

Integer

Service template id filter

serviceTemplateName

String

Service template name filter

published

Boolean

If true, return only published plans; if false, only unpublished

mpn

String

Manufacturer part number filter

sortBy

String

Sort field (default planId)

sortType

String

Sort direction (ascending or descending)

segmentId

Integer

Pricing segment id; resolves prices in the context of that segment when provided

extendWith

Array

Optional response extensions (purchase prices etc.)

Returns

Plans with their effective prices and pagination metadata

historyPrices

HTTP Request

POST /aps/2/resources/{aps-id}/management/plans/history

Description

Returns the chronological history of price changes for a price point.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

request

PricePointHistoryRequest

Plan, resource, fee type, and subscription period identifying the price point

Returns

Ordered history entries with effective-from dates and the change source

serviceTemplates

HTTP Request

GET /aps/2/resources/{aps-id}/management/serviceTemplates

Description

Returns BSS service templates visible to the calling account, used by the management UI to scope pricing-group and price-book operations.

Returns

Service templates with id and name

getPricingGroups

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-groups

Description

Lists pricing groups visible to the calling account, with filtering and pagination.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

searchText

String

Pricing group name or id

type

Array

Pricing group type filter (multi-valued; repeat the parameter to combine)

status

PricingGroupStatus

Pricing group status filter

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 20)

sort

Array

Sort fields

Returns

Paginated and filtered pricing groups

getPricingGroupHeader

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-groups/{groupId}

Description

Returns the information of selected pricing group.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

groupId

Integer

Pricing group id

Returns

Selected pricing group information

createPricingGroup

HTTP Request

POST /aps/2/resources/{aps-id}/pricing-groups

Description

Creates a pricing group.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

pricingGroupRequest

PricingGroupRequest

Name and description of the new pricing group

Returns

Created pricing group with assigned id and metadata

syncSystemPricingGroups

HTTP Request

POST /aps/2/resources/{aps-id}/pricing-groups/sync

Description

Synchronises system-managed pricing groups: creates, updates, or removes them to match the supplied request. Used by upstream catalog tooling; not for partner use. Runs as an asynchronous APS task – the initial call returns 202 Accepted with a synchronisation-started info header, then 200 OK with a completion message once the sync finishes.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

systemPricingGroupsRequest

SystemPricingGroupsRequest

Snapshot of system-managed pricing groups to sync to

Returns

202 Accepted on initial dispatch; 200 OK once synchronisation completes

updatePricingGroup

HTTP Request

PUT /aps/2/resources/{aps-id}/pricing-groups/{groupId}

Description

Updates an existing pricing group’s name or description.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

groupId

Integer

Pricing group id

pricingGroupRequest

PricingGroupRequest

Updated name and description

Returns

Updated pricing group

deletePricingGroup

HTTP Request

DELETE /aps/2/resources/{aps-id}/pricing-groups/{groupId}

Description

Deletes a pricing group.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

groupId

Integer

Pricing group id

Returns

204 No Content on success

getServiceTemplates

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-groups/serviceTemplates

Description

Lists BSS service templates available to the calling account when creating or editing pricing groups.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

searchText

String

Service template id or name

available

Boolean

If true, return only templates not yet used by an existing pricing group

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 20)

sort

Array

Sort fields

Returns

Paginated and filtered service templates

getAllServiceTemplateOrGroupResources

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-groups/content

Description

Lists resources (products) of a service template or pricing group, with filtering and pagination. Supply serviceTemplateId or groupId (one of them) to scope the listing.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

serviceTemplateId

Integer

Service template id (mutually exclusive with groupId)

groupId

Integer

Pricing group id (mutually exclusive with serviceTemplateId)

searchText

String

Resource name or MPN

vendorName

String

Vendor name

available

Boolean

If true, return only resources not yet attached to any pricing group

status

PricingGroupContentStatus

Resource status filter

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 20)

sort

Array

Sort fields

Returns

Paginated and filtered resources

changePricingGroupContent

HTTP Request

POST /aps/2/resources/{aps-id}/pricing-groups/content

Description

Initializes or changes the content of a pricing group. INIT sets the pricing-group type, service template, and initial set of resources; CHANGE adds or removes resources on an already-initialized group.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

pricingGroupContentRequest

PricingGroupContentRequest

Action, type, service template id, group id, and resource ids to add or remove

Returns

Updated pricing group

updateSystemPricingGroup

HTTP Request

PUT /aps/2/resources/{aps-id}/pricing-groups/sync-group-settings

Description

Updates the system-managed pricing group enablement status for a tenant. Tenants must omit accountId in the body (the caller’s account is used; supplying it returns an error). Providers may set accountId explicitly to update another tenant, or leave it unset to update their own account.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

request

SystemPricingGroupStatusRequest

New enablement status (and optional accountId for providers)

Returns

Updated enablement status

getSystemPricingGroup

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-groups/sync-group-settings

Description

Returns the system-managed pricing group enablement status for a tenant. Returns DISABLED when no setting exists for the account. Tenants must omit accountId – the caller’s account is used; supplying it as a non-provider returns an error. Providers may set accountId explicitly to query another tenant.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

accountId

Integer

Target tenant account id (provider-only); leave unset to query the caller’s own account

Returns

Current enablement status

getPriceBooks

HTTP Request

GET /aps/2/resources/{aps-id}/price-books

Description

Lists price books visible to the calling account.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

searchText

String

Price book name or id filter

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 20)

sort

Array

Sort fields

Returns

Paginated and filtered price books

getPriceBookById

HTTP Request

GET /aps/2/resources/{aps-id}/price-books/{priceBookId}

Description

Returns the full details of a single price book (id, name, description, type, formulas).

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book id

Returns

Price book details

priceBookApply

HTTP Request

POST /aps/2/resources/{aps-id}/price-books/{priceBookId}/apply

Description

Calculates and applies the price book’s formulas to its currently assigned accounts at the given effective date. Runs as an asynchronous APS task – the initial call returns 202 Accepted with a “recalculation started” info header, then 200 OK once the calculation completes (or 500 on failure).

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book to apply

applyRequest

ApplyRequest

Effective date in yyyy-MM-dd; defaults to now when omitted

Returns

202 Accepted on initial dispatch; 200 OK once recalculation completes; 500 on failure

getPriceBookAvailableAccounts

HTTP Request

GET /aps/2/resources/{aps-id}/price-books/{priceBookId}/available-accounts

Description

Lists accounts that can be assigned to the given price book.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book whose available accounts are listed

searchText

String

Account id or name filter

status

AccountStatus

Account status filter

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 10)

sort

Array

Sort fields

Returns

Paginated accounts; total count returned in Content-Range response header

createPriceBook

HTTP Request

POST /aps/2/resources/{aps-id}/price-books

Description

Creates a new price book.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookRequest

PriceBookRequest

Name, description, and type of the new price book

Returns

201 Created with the new price book in the body

clonePriceBook

HTTP Request

POST /aps/2/resources/{aps-id}/price-books/{priceBookId}/clone

Description

Creates a new price book by cloning an existing one. The clone copies content and formulas but starts with no account assignments.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Source price book to clone

priceBookRequest

PriceBookRequest

Name, description, and type for the cloned book

Returns

201 Created with the cloned price book info

updatePriceBook

HTTP Request

PUT /aps/2/resources/{aps-id}/price-books/{priceBookId}

Description

Updates an existing price book’s name or description.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book to update

priceBookRequest

PriceBookRequest

Updated name and description

Returns

200 if updated; 404 if no price book with the given id exists

deletePriceBook

HTTP Request

DELETE /aps/2/resources/{aps-id}/price-books/{priceBookId}

Description

Deletes a price book. Fails if any account assignments still exist.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book to delete

Returns

204 if deleted; 404 if no price book with the given id exists

getPriceBookContent

HTTP Request

GET /aps/2/resources/{aps-id}/price-books/{priceBookId}/content

Description

Returns the content of a price book – the pricing groups it contains and the formulas applied to each group.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book to fetch

sort

String

Sort order for pricing groups by name (asc or desc; default asc)

Returns

Price book content

updatePriceBookContent

HTTP Request

PUT /aps/2/resources/{aps-id}/price-books/{priceBookId}/content

Description

Updates the content of a price book – pricing groups and their formulas. Request represents the desired state of a content.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book, which content requires update

request

ContentRequest

Pricing groups and formulas to set

Returns

200 if updated; 400 on validation errors; 404 if no price book with the given id exists

getPriceBookContentAssignments

HTTP Request

GET /aps/2/resources/{aps-id}/price-books/{priceBookId}/assignments

Description

Returns the account assignments of a price book.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book to fetch

sort

String

Sort order (asc or desc; default asc)

Returns

List of assigned accounts

updatePriceBookAssignments

HTTP Request

PUT /aps/2/resources/{aps-id}/price-books/{priceBookId}/assignments

Description

Replaces the account assignments of a price book. Request represents the desired state of assignments.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book to update

request

AssignmentsRequest

Accounts to set as assignments

Returns

200 if updated; 404 if no price book with the given id exists

getPriceBookAvailableSegments

HTTP Request

GET /aps/2/resources/{aps-id}/price-books/{priceBookId}/available-segments

Description

Lists pricing segments the caller can assign to the given price book – segments the caller owns or inherits. Only the price book owner can call this.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Target price book

searchText

String

Segment name filter

type

PricingSegmentType

Pricing segment type filter

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 10)

sort

Array

Sort fields (id, name, or contentLastUpdateDate)

Returns

Paginated segments; total count returned in Content-Range response header

getPriceBookSegment

HTTP Request

GET /aps/2/resources/{aps-id}/price-books/{priceBookId}/segment

Description

Returns the pricing segment assigned to a price book, or null if no segment is assigned.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Price book to fetch

Returns

Assigned segment information, or null when none is assigned

assignSegmentToPriceBook

HTTP Request

PUT /aps/2/resources/{aps-id}/price-books/{priceBookId}/segment

Description

Assigns a pricing segment to a price book, or removes the assignment when segmentId is null. Only the price book owner can call this; the supplied segment must be available to the caller (owned or inherited).

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

priceBookId

Integer

Target price book

request

PriceBookSegmentRequest

Segment id to assign, or null to remove the assignment

Returns

200 if updated; 404 if no price book with the given id exists

getPricingSegments

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-segments

Description

Lists pricing segments visible to the calling account.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

searchText

String

Segment name or id filter

type

PricingSegmentType

Pricing segment type filter

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 20)

sort

Array

Sort fields

Returns

Paginated and filtered pricing segments

getPricingSegment

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-segments/{segmentId}

Description

Returns selected pricing segment information (id, name, type, priority, owner).

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment id

Returns

Pricing segment information

createPricingSegment

HTTP Request

POST /aps/2/resources/{aps-id}/pricing-segments

Description

Creates a new pricing segment.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

pricingSegmentRequest

PricingSegmentRequest

Name, description and type of the new segment

Returns

201 Created with the new pricing segment in the body

updatePricingSegment

HTTP Request

PUT /aps/2/resources/{aps-id}/pricing-segments/{segmentId}

Description

Updates an existing pricing segment’s name or description.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

Pricing segment to update

segmentId

Integer

pricingSegmentRequest

PricingSegmentUpdateRequest

Updated fields

Returns

200 if updated; 404 if no pricing segment with the given id exists

deletePricingSegment

HTTP Request

DELETE /aps/2/resources/{aps-id}/pricing-segments/{segmentId}

Description

Deletes a pricing segment. Fails if the segment has any prices, memberships, or is linked to a custom price book.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment to delete

Returns

204 on success

updatePricingSegmentPriority

HTTP Request

PUT /aps/2/resources/{aps-id}/pricing-segments/{segmentId}/priority

Description

Updates the priority of an existing pricing segment.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

Pricing segment to update

segmentId

Integer

priorityRequest

PricingSegmentPriorityRequest

New priority value

Returns

200 if updated; 404 if no pricing segment with the given id exists

getPricingSegmentContent

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-segments/{segmentId}/content

Description

Returns the content (assigned accounts and customer classes) of a pricing segment.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment to fetch

searchText

String

Account or customer-class id (numeric) or name filter

type

ContentAccountType

Account type filter (RESELLER or END_CUSTOMER)

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 10)

sort

Array

Sort fields

Returns

Paginated and filtered segment content

updatePricingSegmentContent

HTTP Request

PUT /aps/2/resources/{aps-id}/pricing-segments/{segmentId}/content

Description

Adds content (accounts or customer classes) to a pricing segment. Only adds – to remove existing content use deletePricingSegmentContent. Passing an empty list is a no-op.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment to update

contentRequest

PricingSegmentContentRequest

Ids to add to the segment content

Returns

200 if updated; 404 if no pricing segment with the given id exists

deletePricingSegmentContent

HTTP Request

POST /aps/2/resources/{aps-id}/pricing-segments/{segmentId}/content-remove

Description

Removes specified content from a pricing segment. Skips parent-validation, so inconsistent content can be cleaned up.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment to update

contentRequest

PricingSegmentContentDeleteRequest

Ids to remove from the segment content

Returns

204 if removed; 404 if no pricing segment with the given id exists

getAvailableAccountsForSegment

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-segments/{segmentId}/available-accounts

Description

Lists accounts that can be added to a pricing segment as direct children of a given parent account. Defaults to the caller’s account as the parent when parentAccountId is omitted.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment whose available accounts are listed

searchText

String

Account id (numeric) or name filter

type

ContentAccountType

Account type filter (RESELLER or END_CUSTOMER)

parentAccountId

Integer

Parent account whose direct children are returned; defaults to the caller’s account

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 10)

sort

Array

Sort fields (id or name)

Returns

Paginated accounts; total count returned in Content-Range response header

getAvailableCustomerClassesForSegment

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-segments/{segmentId}/available-classes

Description

Lists customer classes that can be added to a pricing segment. Returns classes owned by a given parent account; defaults to the caller’s account when parentAccountId is omitted.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment whose available customer classes are listed

searchText

String

Class id (numeric) or name filter

parentAccountId

Integer

Parent account whose customer classes are returned; defaults to the caller’s account

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 10)

sort

Array

Sort fields (id or name)

Returns

Paginated customer classes; total count returned in Content-Range response header

getAppliedPriceBooks

HTTP Request

GET /aps/2/resources/{aps-id}/pricing-segments/{segmentId}/price-books

Description

Lists price books that have the given pricing segment applied.

Parameters

PARAMETER

TYPE

DESCRIPTION

id

String

segmentId

Integer

Pricing segment whose price books are listed

offset

Integer

Pagination offset

limit

Integer

Max items per page (default 5)

sort

Array

Sort fields (id, name, or contentLastUpdateDate)

Returns

Paginated price books with their statuses; total count returned in Content-Range response header

Structures

UiState

Operating mode of the PriceManager UI and UI-driven flows. disabled: UI flows reject calls; non-UI write and read APIs remain available. enabled: UI flows allowed for operating-unit and reseller accounts under this hierarchy. global_enabled: UI flows allowed globally for all reseller hierarchies, not just this one.

PriceManagerMode

PricesRequest

Request body of the getPrices operation: plans, accounts, and effective date for which to resolve prices.

ImportUploadResult

Result of the XLSX upload step of the import wizard. Carries the wizard id, parsed row counts, a flag indicating whether a pricing model is required, and any validation messages.

ImportUploadInfo

Payload of the import-upload step of the XLSX import wizard.

ImportDiffResult

Result of the XLSX diff step of the import wizard. Carries the wizard id, the per-product price diffs, lists of unknown or duplicated products, and any validation messages.

ImportDiffInfo

Payload of the import-diff step of the XLSX import wizard.

ImportSaveInfo

Payload of the import-save step of the XLSX import wizard.

TransferOwnershipRequest

Request body of the bulk price-ownership transfer operation: Plan ids whose rates should be disabled.

NotificationData

Payload of the write-notifications operation: plan ids paired with the effective dates of the price changes to notify on.

AddPricesRequest

Top-level payload of the JSON add-prices operation: a list of plans, each with their periods, segments, effective dates, and per-fee price values.

ManagementExtension

PricePointHistoryRequest

Request body of the price-history operation: identifies the price point whose history is returned. A null resourceId targets a plan-level price point; a non-null resourceId targets a resource-level price point.

ServiceTemplateInfo

BSS service template summary used to scope pricing-group and price-book operations.

PricingGroupType

PricingGroupStatus

PricingGroupInfo

Pricing group header and summary information returned by the pricing-groups list and get-by-id operations.

PricingGroupResponse

Pricing group summary returned by create/update and change-content pricing-group operations.

PricingGroupRequest

Create/update payload for a pricing group.

SystemPricingGroupsRequest

Resource items passed to the system-managed pricing-group synchronization operation.

PricingGroupContentStatus

PricingGroupContentRequest

Payload for the change-pricing-group-content operation: initializes a pricing group (INIT) or updates its resource set (CHANGE).

SystemPricingGroupStatusResponse

Current system-managed pricing-group enablement status for a tenant account. Returns DISABLED when no setting exists for the account.

SystemPricingGroupStatusRequest

Update payload for system-managed pricing-group enablement settings on a tenant account. Tenants must omit accountId (the caller’s account is used; supplying it returns an error). Providers may set accountId explicitly to target another tenant, or leave it unset.

ApplyRequest

Payload of the price-book apply operation.

AccountStatus

PriceBookRequest

Create/update/clone payload for a price book.

ContentRequest

Update payload for the content of a price book – pricing groups it covers and the formulas applied to each.

AssignmentsRequest

Update payload for the account assignments of a price book – the full list of accounts the price book applies to.

PricingSegmentType

PriceBookSegmentRequest

Payload of the assign-segment-to-price-book operation. A null segmentId removes the existing assignment.

PricingSegmentInfo

Represents the general information of a pricing segment for the main UI screen displaying the list of pricing segments or details of a specific pricing segment.

PricingSegmentRequest

Create payload for a pricing segment.

PricingSegmentUpdateRequest

Update payload for an existing pricing segment’s name and description.

PricingSegmentPriorityRequest

Update payload for a pricing segment’s priority.

ContentAccountType

PricingSegmentContentRequest

Add-content payload for a pricing segment. Only adds new entries – to remove existing content, use PricingSegmentContentDeleteRequest.

PricingSegmentContentDeleteRequest

Remove-content payload for a pricing segment.

Examples

The Diff Structure

A Diff structure is an auxiliary structure that contains an item such as a resource, service template, service plan, a resource dependency, and so on that must be created or updated in the current plan configuration of a product line. The value property of a Diff structure contains an item to be created or updated. The other fields of a Diff structure define which action must be performed in the current plan configuration.

This Diff structure is used to update an existing item:

{
  "value": {
  ...
  },
  "action": "EDIT",
  "edit": true,
  "add": false
}

This Diff structure is used to create an item:

{
  "value": {
  ...
  },
  "action": "ADD",
  "edit": false,
  "add": true
}

Updating the Plan Configuration of a Product Line

You can update the current plan configuration of a product line by using any of the following approaches:

  • Approach 1

    1. Prepare an Excel file with the target plan configuration. When preparing that Excel file, you must use the format provided at https://docs.cloudblue.com/cbc/21.0/Product-Lifecycle-Management/File-Requirements.htm.

    2. Call the parseConfig custom operation of the PLM component’s APS application and pass that Excel file in the Base64 format. As a result, you receive a ConfigurationInfo JSON object.

    3. Call the applyConfig custom operation of the PLM component’s APS application and pass that ConfigurationInfo JSON object. As a result, the current plan configuration is transformed into the target plan configuration.

  • Approach 2

    1. Prepare a ConfigurationInfo JSON object with the target plan configuration.

    2. Call the applyConfig custom operation of the PLM component’s APS application and pass that ConfigurationInfo JSON object. As a result, the current plan configuration is transformed into the target plan configuration.

Here is an example of the first approach:

  1. Prepare an Excel file with the target plan configuration. When preparing that Excel file, use the format provided at https://docs.cloudblue.com/cbc/21.0/Product-Lifecycle-Management/File-Requirements.htm.

    Note

    In the example, this file is used as an Excel file with a target plan configuration.

  2. Call the parseConfig custom operation of the PLM component’s APS application and pass that Excel file in the Base64 format. To do that, make a request like this:

    POST /aps/2/resources/ca9685cb-d067-441b-b14d-146325aa2e53/parseConfig
    
    {
        "excelConfig": "UEs...AAA="
    }
    

    Note

    To prepare a value for the excelConfig property, you can use the base64 -w 0 YOUR_EXCEL_FILE command.

    As a result, you will receive a response like this:

    HTTP/1.1 200 OK
    
    {
        "owner": {
            "accountId": 1,
            "memberId": 1
        },
        "serviceTemplateId": 9,
        "serviceTerms": {
            "0/0 Service Terms": {
                "bssId": 6,
                "serviceTermsName": "0/0 Service Terms",
                "holdPeriodInDays": 0,
                "gracePeriodInDays": 0
            },
            "Default": {
                "bssId": 0,
                "serviceTermsName": "Default",
                "holdPeriodInDays": 30,
                "gracePeriodInDays": 10
            },
            "Domain Service Terms": {
                "bssId": 3,
                "serviceTermsName": "Domain Service Terms",
                "holdPeriodInDays": 0,
                "gracePeriodInDays": 30
            },
            "Hosting Service Terms": {
                "bssId": 2,
                "serviceTermsName": "Hosting Service Terms",
                "holdPeriodInDays": 30,
                "gracePeriodInDays": 10
            },
            "In-House Products for Resellers": {
                "bssId": 4,
                "serviceTermsName": "In-House Products for Resellers",
                "holdPeriodInDays": 0,
                "gracePeriodInDays": 0
            }
        },
        "existingPdiPlans": {
            "teamleader eu (monthly plan)": {
                "aps": {
                    "id": "01431d51-b012-4558-91b1-468f7326531d",
                    "type": "http://com.odin.platform/inhouse-products/pdiPlan/1.0",
                    "status": "aps:ready",
                    "subscription": null,
                    "revision": 2,
                    "modified": 1649431014000,
                    "schema": null,
                    "package": null
                },
                "products": null,
                "operatingUnits": null,
                "account": null,
                "productLine": null,
                "name": {
                    "de_DE": "Teamleader EU (Monatsplan)",
                    "en_US": "Teamleader EU (Monthly Plan)",
                    "es_ES": "Teamleader EU (Monthly Plan)",
                    "fr_FR": "Teamleader EU (Monthly Plan)",
                    "it_IT": "Teamleader EU (Monthly Plan)",
                    "nl_NL": "Teamleader EU (Monthly Plan)",
                    "pt_BR": "Teamleader EU (Monthly Plan)",
                    "pt_PT": "Teamleader EU (Monthly Plan)",
                    "tr_TR": "Teamleader EU (Monthly Plan)"
                },
                "description": {
                    "de_DE": "Der monatliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                    "en_US": "The monthly service gives companies a majority of the same benefits that on-premises deployments provide.",
                    "es_ES": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                    "fr_FR": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                    "it_IT": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                    "nl_NL": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                    "pt_BR": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "pt_PT": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "tr_TR": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                },
                "bssServicePlanId": 12,
                "serviceTemplateId": 9,
                "isDefault": false,
                "customIconUrl": null,
                "billingPeriod": 3,
                "billingPeriodType": "psd",
                "pricePeriodType": "billing period",
                "planCategory": "Software & Licenses",
                "appId": null,
                "billingModel": "charge before billing period",
                "autoRenewType": "Before Expiration",
                "renewOrderInterval": 1,
                "vendorTimezone": null,
                "subscriptionPeriods": [
                    {
                        "bssId": 16,
                        "period": 6,
                        "periodType": "month",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "10",
                        "afterRefundPeriod": "refund_prorated_recurring_fee",
                        "fullRefundPeriod": 1,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": true,
                        "trial": false
                    },
                    {
                        "bssId": 17,
                        "period": 12,
                        "periodType": "month",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "",
                        "afterRefundPeriod": "no_refund",
                        "fullRefundPeriod": 3,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": false,
                        "trial": false
                    }
                ],
                "salesCategories": [
                    {
                        "id": 10,
                        "name": {
                            "de": "TeamleaderEU",
                            "en": "TeamleaderEU",
                            "es": "",
                            "fr": "",
                            "it": "",
                            "nl": "",
                            "pt": "",
                            "tr": ""
                        },
                        "description": {
                            "de": "Der Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten. Durch die Integration in den Cloud-Service können Unternehmen ihren Marktanteil ausbauen, wiederkehrende Umsätze automatisieren und steigern, die Kundenzufriedenheit steigern und gleichzeitig die Betriebskosten senken.",
                            "en": "The service gives companies a majority of the same benefits that on-premises deployments provide. By integrating with the cloud service, companies can expand their market share, automate and grow recurring revenue, increase customer satisfaction, and cut operational costs at the same time.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                        },
                        "parent": {
                            "id": 9,
                            "name": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "parent": null,
                            "expand": true,
                            "inCCP": true
                        },
                        "expand": true,
                        "inCCP": true
                    }
                ],
                "serviceTerms": {
                    "bssId": 0,
                    "serviceTermsName": "Default",
                    "holdPeriodInDays": 30,
                    "gracePeriodInDays": 10
                },
                "termsAndConditions": [
                    {
                        "id": null,
                        "bssId": 7,
                        "name": "Teamleader EU Additional Terms",
                        "value": "Teamleader EU Additional Terms Content",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    },
                    {
                        "id": null,
                        "bssId": 6,
                        "name": "Common",
                        "value": "Common",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    },
                    {
                        "id": null,
                        "bssId": 4,
                        "name": "Provider pre-existing TC",
                        "value": "kp8CVlZAOc",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "Always, on every purchase"
                    }
                ],
                "availableNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome e-mail - Business Class Mail"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "enabledNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome e-mail - Business Class Mail"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "servicePlanUpdateNotificationId": null,
                "alignWithStatementDay": true,
                "isSalesOrderProrated": true,
                "isFirstPeriodForFree": true,
                "customStatementDay": 2,
                "notificationScheduleId": 12,
                "resellerGroups": [],
                "volumePricingRatingMode": true,
                "ratingMode": "Revenue only",
                "default": false,
                "isOneTimeFeeProduct": false,
                "oneTimeFeePlan": false,
                "salesOrderProrated": true,
                "firstPeriodForFree": true,
                "published": true,
                "isPublished": true
            },
            "teamleader eu (yearly plan 2)": {
                "aps": {
                    "id": "7f80c0a3-301e-4b1d-9dd2-09af4719f456",
                    "type": "http://com.odin.platform/inhouse-products/pdiPlan/1.0",
                    "status": "aps:ready",
                    "subscription": null,
                    "revision": 2,
                    "modified": 1649431015000,
                    "schema": null,
                    "package": null
                },
                "products": null,
                "operatingUnits": null,
                "account": null,
                "productLine": null,
                "name": {
                    "de_DE": "Teamleader EU (Jahresplan)",
                    "en_US": "Teamleader EU (Yearly Plan 2)",
                    "es_ES": "Teamleader EU (Yearly Plan 2)",
                    "fr_FR": "Teamleader EU (Yearly Plan 2)",
                    "it_IT": "Teamleader EU (Yearly Plan 2)",
                    "nl_NL": "Teamleader EU (Yearly Plan 2)",
                    "pt_BR": "Teamleader EU (Yearly Plan 2)",
                    "pt_PT": "Teamleader EU (Yearly Plan 2)",
                    "tr_TR": "Teamleader EU (Yearly Plan 2)"
                },
                "description": {
                    "de_DE": "Der jährliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                    "en_US": "The yearly service gives companies a majority of the same benefits that on-premises deployments provide.",
                    "es_ES": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                    "fr_FR": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                    "it_IT": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                    "nl_NL": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                    "pt_BR": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "pt_PT": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "tr_TR": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                },
                "bssServicePlanId": 14,
                "serviceTemplateId": 9,
                "isDefault": false,
                "customIconUrl": null,
                "billingPeriod": 12,
                "billingPeriodType": "psd",
                "pricePeriodType": "month",
                "planCategory": "Software & Licenses",
                "appId": null,
                "billingModel": "charge before billing period",
                "autoRenewType": "On Last Statement Day",
                "renewOrderInterval": 1,
                "vendorTimezone": null,
                "subscriptionPeriods": [
                    {
                        "bssId": 19,
                        "period": 5,
                        "periodType": "year",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "",
                        "afterRefundPeriod": "no_refund",
                        "fullRefundPeriod": 4,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": true,
                        "trial": false
                    }
                ],
                "salesCategories": [
                    {
                        "id": 10,
                        "name": {
                            "de": "TeamleaderEU",
                            "en": "TeamleaderEU",
                            "es": "",
                            "fr": "",
                            "it": "",
                            "nl": "",
                            "pt": "",
                            "tr": ""
                        },
                        "description": {
                            "de": "Der Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten. Durch die Integration in den Cloud-Service können Unternehmen ihren Marktanteil ausbauen, wiederkehrende Umsätze automatisieren und steigern, die Kundenzufriedenheit steigern und gleichzeitig die Betriebskosten senken.",
                            "en": "The service gives companies a majority of the same benefits that on-premises deployments provide. By integrating with the cloud service, companies can expand their market share, automate and grow recurring revenue, increase customer satisfaction, and cut operational costs at the same time.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                        },
                        "parent": {
                            "id": 9,
                            "name": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "parent": null,
                            "expand": true,
                            "inCCP": true
                        },
                        "expand": true,
                        "inCCP": true
                    }
                ],
                "serviceTerms": {
                    "bssId": 0,
                    "serviceTermsName": "Default",
                    "holdPeriodInDays": 30,
                    "gracePeriodInDays": 10
                },
                "termsAndConditions": [
                    {
                        "id": null,
                        "bssId": 7,
                        "name": "Teamleader EU Additional Terms",
                        "value": "Teamleader EU Additional Terms Content",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    }
                ],
                "availableNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "enabledNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "servicePlanUpdateNotificationId": null,
                "alignWithStatementDay": true,
                "isSalesOrderProrated": false,
                "isFirstPeriodForFree": false,
                "customStatementDay": 1,
                "notificationScheduleId": 12,
                "resellerGroups": [],
                "volumePricingRatingMode": false,
                "ratingMode": null,
                "default": false,
                "isOneTimeFeeProduct": false,
                "oneTimeFeePlan": false,
                "salesOrderProrated": false,
                "firstPeriodForFree": false,
                "published": true,
                "isPublished": true
            },
            "teamleader eu (yearly plan)": {
                "aps": {
                    "id": "6b52c392-82e4-44f4-b0b8-4abb7ca0b082",
                    "type": "http://com.odin.platform/inhouse-products/pdiPlan/1.0",
                    "status": "aps:ready",
                    "subscription": null,
                    "revision": 2,
                    "modified": 1649431015000,
                    "schema": null,
                    "package": null
                },
                "products": null,
                "operatingUnits": null,
                "account": null,
                "productLine": null,
                "name": {
                    "de_DE": "Teamleader EU (Jahresplan)",
                    "en_US": "Teamleader EU (Yearly Plan)",
                    "es_ES": "Teamleader EU (Yearly Plan)",
                    "fr_FR": "Teamleader EU (Yearly Plan)",
                    "it_IT": "Teamleader EU (Yearly Plan)",
                    "nl_NL": "Teamleader EU (Yearly Plan)",
                    "pt_BR": "Teamleader EU (Yearly Plan)",
                    "pt_PT": "Teamleader EU (Yearly Plan)",
                    "tr_TR": "Teamleader EU (Yearly Plan)"
                },
                "description": {
                    "de_DE": "Der jährliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                    "en_US": "The yearly service gives companies a majority of the same benefits that on-premises deployments provide.",
                    "es_ES": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                    "fr_FR": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                    "it_IT": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                    "nl_NL": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                    "pt_BR": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "pt_PT": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "tr_TR": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                },
                "bssServicePlanId": 13,
                "serviceTemplateId": 9,
                "isDefault": false,
                "customIconUrl": null,
                "billingPeriod": 12,
                "billingPeriodType": "psd",
                "pricePeriodType": "month",
                "planCategory": "Software & Licenses",
                "appId": null,
                "billingModel": "charge before billing period",
                "autoRenewType": "On Last Statement Day",
                "renewOrderInterval": 1,
                "vendorTimezone": null,
                "subscriptionPeriods": [
                    {
                        "bssId": 18,
                        "period": 4,
                        "periodType": "year",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "",
                        "afterRefundPeriod": "no_refund",
                        "fullRefundPeriod": 2,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": true,
                        "trial": true
                    }
                ],
                "salesCategories": [
                    {
                        "id": 10,
                        "name": {
                            "de": "TeamleaderEU",
                            "en": "TeamleaderEU",
                            "es": "",
                            "fr": "",
                            "it": "",
                            "nl": "",
                            "pt": "",
                            "tr": ""
                        },
                        "description": {
                            "de": "Der Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten. Durch die Integration in den Cloud-Service können Unternehmen ihren Marktanteil ausbauen, wiederkehrende Umsätze automatisieren und steigern, die Kundenzufriedenheit steigern und gleichzeitig die Betriebskosten senken.",
                            "en": "The service gives companies a majority of the same benefits that on-premises deployments provide. By integrating with the cloud service, companies can expand their market share, automate and grow recurring revenue, increase customer satisfaction, and cut operational costs at the same time.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                        },
                        "parent": {
                            "id": 9,
                            "name": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "parent": null,
                            "expand": true,
                            "inCCP": true
                        },
                        "expand": true,
                        "inCCP": true
                    }
                ],
                "serviceTerms": {
                    "bssId": 0,
                    "serviceTermsName": "Default",
                    "holdPeriodInDays": 30,
                    "gracePeriodInDays": 10
                },
                "termsAndConditions": [
                    {
                        "id": null,
                        "bssId": 7,
                        "name": "Teamleader EU Additional Terms",
                        "value": "Teamleader EU Additional Terms Content",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    }
                ],
                "availableNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "enabledNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "servicePlanUpdateNotificationId": null,
                "alignWithStatementDay": true,
                "isSalesOrderProrated": false,
                "isFirstPeriodForFree": false,
                "customStatementDay": 1,
                "notificationScheduleId": 12,
                "resellerGroups": [],
                "volumePricingRatingMode": false,
                "ratingMode": null,
                "default": false,
                "isOneTimeFeeProduct": false,
                "oneTimeFeePlan": false,
                "salesOrderProrated": false,
                "firstPeriodForFree": false,
                "published": true,
                "isPublished": true
            }
        },
        "excelConfig": {
            "resources": [
                {
                    "value": {
                        "resourceType": {
                            "name": {
                                "en": "Teamleader EU: Teamleader - monthly billing"
                            },
                            "resClass": null,
                            "actParams": null,
                            "description": {}
                        },
                        "resourceCategory": {
                            "id": 1,
                            "name": {
                                "de": "",
                                "pt": "",
                                "en": "Additional Resources",
                                "it": "",
                                "fr": "",
                                "es": "",
                                "nl": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "pt": "",
                                "en": "Additional Resources",
                                "it": "",
                                "fr": "Additional Resources",
                                "nl": "",
                                "tr": "",
                                "es": ""
                            },
                            "parent": null,
                            "taxCatId": "All products"
                        },
                        "uom": "unit",
                        "measurable": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "resourceType": {
                            "name": {
                                "en": "Teamleader EU: Teamleader - yearly billing"
                            },
                            "resClass": null,
                            "actParams": null,
                            "description": {}
                        },
                        "resourceCategory": {
                            "id": 11,
                            "name": {
                                "de": "",
                                "pt": "",
                                "en": "Other Resources",
                                "it": "",
                                "fr": "",
                                "es": "",
                                "nl": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "pt": "",
                                "en": "Other Resources",
                                "it": "",
                                "fr": "Other Resources",
                                "nl": "",
                                "tr": "",
                                "es": ""
                            },
                            "parent": {
                                "id": 5,
                                "name": {
                                    "en": "Other Products"
                                },
                                "description": null,
                                "parent": null,
                                "taxCatId": null
                            },
                            "taxCatId": "All products"
                        },
                        "uom": "unit",
                        "measurable": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                }
            ],
            "serviceTemplates": [],
            "servicePlans": [
                {
                    "value": {
                        "name": {
                            "de": "Teamleader EU (Monatsplan)",
                            "pt": "Teamleader EU (Monthly Plan)",
                            "en": "Teamleader EU (Monthly Plan)",
                            "it": "Teamleader EU (Monthly Plan)",
                            "fr": "Teamleader EU (Monthly Plan)",
                            "tr": "Teamleader EU (Monthly Plan)",
                            "nl": "Teamleader EU (Monthly Plan)",
                            "es": "Teamleader EU (Monthly Plan)"
                        },
                        "planBillingPeriod": null,
                        "planBillingPeriodType": null,
                        "pricePeriodType": "billing period",
                        "autoRenewType": null,
                        "renewOrderInterval": null,
                        "vendorTimezone": null,
                        "billingModel": null,
                        "serviceTemplateId": null,
                        "serviceTemplateName": null,
                        "description": {
                            "de": "Der monatliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "en": "Testing renamed description",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo."
                        },
                        "resources": [],
                        "subscriptionPeriods": [
                            {
                                "value": {
                                    "trial": false,
                                    "periodType": "month",
                                    "refundType": "refund_prorated_recurring_fee",
                                    "period": 6,
                                    "fullRefundPeriod": 1,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "10",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": true,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            },
                            {
                                "value": {
                                    "trial": false,
                                    "periodType": "month",
                                    "refundType": "no_refund",
                                    "period": 12,
                                    "fullRefundPeriod": 3,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": false,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            },
                            {
                                "value": {
                                    "trial": true,
                                    "periodType": "month",
                                    "refundType": "refund_prorated_recurring_fee",
                                    "period": 9,
                                    "fullRefundPeriod": 6,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "10",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": false,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "ADD",
                                "edit": false,
                                "add": true
                            }
                        ],
                        "planCategory": null,
                        "salesCategories": [],
                        "serviceTerms": "Default",
                        "welcomeNotificationTemplate": "Welcome Email - Wedge Networks2",
                        "expirationNotificationTemplate": "Subscription has Expired - Wedge Networks2",
                        "notificationScheduleId": null,
                        "termsConditions": [],
                        "vendorId": 1,
                        "vendorName": null,
                        "isAvailableForSale": null,
                        "cloneFrom": null,
                        "delegatedServicePlans": [
                            {
                                "value": {
                                    "name": {
                                        "en": "Teamleader EU (Monthly Plan)"
                                    },
                                    "planBillingPeriod": null,
                                    "planBillingPeriodType": null,
                                    "pricePeriodType": null,
                                    "autoRenewType": null,
                                    "renewOrderInterval": null,
                                    "vendorTimezone": null,
                                    "billingModel": null,
                                    "serviceTemplateId": null,
                                    "serviceTemplateName": null,
                                    "description": null,
                                    "resources": [],
                                    "subscriptionPeriods": [],
                                    "planCategory": null,
                                    "salesCategories": [],
                                    "serviceTerms": null,
                                    "welcomeNotificationTemplate": null,
                                    "expirationNotificationTemplate": null,
                                    "notificationScheduleId": null,
                                    "termsConditions": [],
                                    "vendorId": 1000002,
                                    "vendorName": "MICHAEL Legros, Crona",
                                    "isAvailableForSale": null,
                                    "cloneFrom": null,
                                    "delegatedServicePlans": [],
                                    "isEnableVolumePricingModel": null,
                                    "ratingMode": null,
                                    "alignWithStatementDay": null,
                                    "isSalesOrderProrated": null,
                                    "isFirstPeriodForFree": null,
                                    "customStatementDay": null,
                                    "upgrades": [],
                                    "isPublished": null,
                                    "resellerGroups": [],
                                    "enName": "Teamleader EU (Monthly Plan)"
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "isEnableVolumePricingModel": true,
                        "ratingMode": null,
                        "alignWithStatementDay": null,
                        "isSalesOrderProrated": null,
                        "isFirstPeriodForFree": null,
                        "customStatementDay": null,
                        "upgrades": [
                            {
                                "value": {
                                    "toServicePlanId": null,
                                    "toServicePlanName": "Teamleader EU (Yearly Plan)",
                                    "remainCurrentSubscriptionStartDate": true
                                },
                                "action": "ADD",
                                "edit": false,
                                "add": true
                            }
                        ],
                        "isPublished": null,
                        "resellerGroups": [],
                        "enName": "Teamleader EU (Monthly Plan)"
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "name": {
                            "de": "Teamleader EU (Jahresplan)",
                            "pt": "Teamleader EU (Yearly Plan)",
                            "en": "Teamleader EU (Yearly Plan)",
                            "it": "Teamleader EU (Yearly Plan)",
                            "fr": "Teamleader EU (Yearly Plan)",
                            "tr": "Teamleader EU (Yearly Plan)",
                            "nl": "Teamleader EU (Yearly Plan)",
                            "es": "Teamleader EU (Yearly Plan)"
                        },
                        "planBillingPeriod": null,
                        "planBillingPeriodType": null,
                        "pricePeriodType": "month",
                        "autoRenewType": null,
                        "renewOrderInterval": null,
                        "vendorTimezone": null,
                        "billingModel": null,
                        "serviceTemplateId": null,
                        "serviceTemplateName": null,
                        "description": {
                            "de": "Der jährliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "en": "Testing renamed description",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo."
                        },
                        "resources": [
                            {
                                "value": {
                                    "name": {
                                        "en": "Teamleader EU: Teamleader - monthly billing"
                                    },
                                    "description": null,
                                    "composite": false,
                                    "createPlanRatePeriods": false,
                                    "unitOfMeasure": "unit",
                                    "inCP": true,
                                    "published": null,
                                    "setupFee": null,
                                    "overFee": null,
                                    "rtID": null,
                                    "resourceType": {
                                        "name": {
                                            "en": "Teamleader EU: Teamleader - monthly billing"
                                        },
                                        "resClass": "rc.saas.countedlenk",
                                        "actParams": null,
                                        "description": null
                                    },
                                    "billingResourceID": null,
                                    "externalBillingResourceID": null,
                                    "max": 5000,
                                    "min": 1,
                                    "measurable": false,
                                    "instore": true,
                                    "recFee": null,
                                    "resourceCategory": {
                                        "id": 1,
                                        "name": {
                                            "de": "",
                                            "pt": "",
                                            "en": "Additional Resources",
                                            "it": "",
                                            "fr": "",
                                            "es": "",
                                            "nl": "",
                                            "tr": ""
                                        },
                                        "description": {
                                            "de": "",
                                            "pt": "",
                                            "en": "Additional Resources",
                                            "it": "",
                                            "fr": "Additional Resources",
                                            "nl": "",
                                            "tr": "",
                                            "es": ""
                                        },
                                        "parent": null,
                                        "taxCatId": "All products"
                                    },
                                    "periods": [],
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpOveruseFee": null,
                                    "rfeeShowZeroPrice": false,
                                    "rfeePerUnit": false,
                                    "ofeeShowZeroPrice": false,
                                    "sfeePerUnit": false,
                                    "sfeeShowZeroPrice": false
                                },
                                "action": "ADD",
                                "edit": false,
                                "add": true
                            }
                        ],
                        "subscriptionPeriods": [
                            {
                                "value": {
                                    "trial": true,
                                    "periodType": "year",
                                    "refundType": "no_refund",
                                    "period": 4,
                                    "fullRefundPeriod": 2,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": true,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "planCategory": null,
                        "salesCategories": [],
                        "serviceTerms": "Default",
                        "welcomeNotificationTemplate": "Welcome Email - Wedge Networks2",
                        "expirationNotificationTemplate": "Subscription has Expired - Wedge Networks2",
                        "notificationScheduleId": null,
                        "termsConditions": [],
                        "vendorId": 1,
                        "vendorName": null,
                        "isAvailableForSale": null,
                        "cloneFrom": null,
                        "delegatedServicePlans": [
                            {
                                "value": {
                                    "name": {
                                        "en": "Teamleader EU (Yearly Plan)"
                                    },
                                    "planBillingPeriod": null,
                                    "planBillingPeriodType": null,
                                    "pricePeriodType": null,
                                    "autoRenewType": null,
                                    "renewOrderInterval": null,
                                    "vendorTimezone": null,
                                    "billingModel": null,
                                    "serviceTemplateId": null,
                                    "serviceTemplateName": null,
                                    "description": null,
                                    "resources": [],
                                    "subscriptionPeriods": [],
                                    "planCategory": null,
                                    "salesCategories": [],
                                    "serviceTerms": null,
                                    "welcomeNotificationTemplate": null,
                                    "expirationNotificationTemplate": null,
                                    "notificationScheduleId": null,
                                    "termsConditions": [],
                                    "vendorId": 1000002,
                                    "vendorName": "MICHAEL Legros, Crona",
                                    "isAvailableForSale": null,
                                    "cloneFrom": null,
                                    "delegatedServicePlans": [],
                                    "isEnableVolumePricingModel": null,
                                    "ratingMode": null,
                                    "alignWithStatementDay": null,
                                    "isSalesOrderProrated": null,
                                    "isFirstPeriodForFree": null,
                                    "customStatementDay": null,
                                    "upgrades": [],
                                    "isPublished": null,
                                    "resellerGroups": [],
                                    "enName": "Teamleader EU (Yearly Plan)"
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "isEnableVolumePricingModel": true,
                        "ratingMode": null,
                        "alignWithStatementDay": null,
                        "isSalesOrderProrated": null,
                        "isFirstPeriodForFree": null,
                        "customStatementDay": null,
                        "upgrades": [
                            {
                                "value": {
                                    "toServicePlanId": null,
                                    "toServicePlanName": "Teamleader EU (Yearly Plan 2)",
                                    "remainCurrentSubscriptionStartDate": false
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "isPublished": null,
                        "resellerGroups": [],
                        "enName": "Teamleader EU (Yearly Plan)"
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                }
            ],
            "termsConditionsDetails": {
                "Teamleader EU Additional Terms": {
                    "id": -2147483648,
                    "name": "Teamleader EU Additional Terms",
                    "acceptType": "On first purchase and after every T&C change",
                    "active": true,
                    "text": "<p><strong>Additional Terms and Conditions for TeamleaderEU Subscriptions</strong></p>\n<p><strong>&nbsp;</strong></p>\n<p>The following additional terms and conditions apply to Your purchase of WedgeARP™ Secure Home Office (&ldquo;Vendor&rdquo;) subscriptions and to the use of such Services by You and Your customers.</p>\n<p>&nbsp;</p>\n<h2><a name=\"_Toc381085506\"></a><a name=\"_Toc342658188\"></a>1.&nbsp;&nbsp;&nbsp;&nbsp; Term and Termination</h2>\n<h2>&nbsp;</h2>\n<p><a name=\"_Toc294012771\"></a><a name=\"_Toc285537541\"></a>Services start once provisioned through the marketplace. You may cancel the Services through the marketplace so long as no Service commitments are active hereunder (i.e. You or one or more of Your customers are employing any active Services).&nbsp; <a name=\"_Toc362955805\"></a><a name=\"_Toc362955620\"></a>You may only terminate the Service if there are no existing term commitments for Services. If You or Your customer terminates its use of a Service prior to the expiration of the term commitment for the selected service, You will remain responsible to Ingram Micro for all remaining and accrued charges for such Service pursuant to the selected term commitment.&nbsp;</p>\n<p>&nbsp;</p>\n<p><a name=\"_Toc362955804\"></a><a name=\"_Toc362955619\"></a>Services are available for minimum commitment of one month.&nbsp; Services will auto renew for an additional month, unless You cancel the Services one (1) business days prior to the expiration of the term commitment for the selected Service.</p>\n<p>&nbsp;</p>\n<h2>2.&nbsp;&nbsp;&nbsp;&nbsp; Fees</h2>\n<h2>&nbsp;</h2>\n<p><a name=\"_Toc320601176\"></a><a name=\"_Toc329005647\"></a><a name=\"_Toc328553059\"></a><a name=\"_Toc328552976\"></a><a name=\"_Toc327868816\"></a><a name=\"_Toc320697822\"></a>You agree to pay the fees and charges for the Services as outlined in the registration process and that appear on the Site, as may be amended from time to time.&nbsp; If You or Your customer exceeds the usage limits applicable to the Service subscription, You agree to pay for the fees and charges for such over usage. For any extension of a subscription term or the provisioning of a Service upgrade, the then-current price will apply, unless otherwise mutually agreed in writing by You and Ingram Micro. Ingram Micro, may, from time to time in its sole discretion, change the fees it charges for the Service. &nbsp;Any increase in the fees will take effect at the beginning of the new subscription term. Ingram Micro will notify You of any such changes by updating the Site or sending notice by e-mail or regular mail.</p>\n<p>&nbsp;</p>\n<h2>3.&nbsp;&nbsp;&nbsp;&nbsp; Territory Restriction</h2>\n<p>&nbsp;</p>\n<p>You may only resell and/or market the Services in Canada.</p>\n<h2>&nbsp;</h2>\n<h2>4.&nbsp;&nbsp;&nbsp;&nbsp; Terms of Sale &amp; Terms of Use</h2>\n<h2>&nbsp;</h2>\n<p><strong>All purchases are subject to the sales terms set forth at </strong><a href=\"https://ca.cloud.im/legal\"><strong>https://at.cloud.im/legal</strong></a><strong> and service setup information, including but not limited to pricing, (where applicable) set forth in the marketplace. </strong>For the avoidance of doubt, notwithstanding the presence or acceptance by Ingram Micro of Your order, such shall be for administrative purposes only and the parties agree that the governing terms and conditions shall be those set forth at <a href=\"https://at.cloud.im/legal\"><strong>https://at.cloud.im/legal</strong></a> unless otherwise agreed to in writing by Ingram Micro and You.</p>\n<h2>&nbsp;</h2>\n<p><strong>The Services are provided by the Vendor.&nbsp; All terms of use and/or service as established by the Vendor and as set forth at </strong><a href=\"https://wedgenetworks.com/eula.aspx\">https://wedgenetworks.com/eula.aspx</a></p>\n<p><strong>shall apply, as applicable, to Your resale activity and to You and Your customers&rsquo; use of the Services (&ldquo;Terms of Use&rdquo;).&nbsp; You covenant, represent and warrant that You will present the Terms of Use to each of Your customers and obtain their enforceable agreement to the Terms of Use before permitting them to access or use the Service.&nbsp; You covenant, represent and warrant that no subscription for the Services shall be activated for or used by Your customers before the customer agrees to the Terms of Use.&nbsp; </strong>You will track and record acceptance by Your customers of the Terms of Use and will provide such information to Ingram Micro upon request.</p>\n<p>&nbsp;</p>\n<p>Ingram Micro may at any time modify these terms and conditions.&nbsp; You and Your customers must regularly monitor the Site for any such modifications.&nbsp; The modified terms and conditions will be effective immediately after it is posted on the Site. Your purchase and resale of the Services and You and Your customers&rsquo; use of the Services after any such modification will be deemed acceptance of such modification.</p>"
                },
                "Common": {
                    "id": -2147483647,
                    "name": "Common",
                    "acceptType": "On first purchase and after every T&C change",
                    "active": true,
                    "text": "On first purchase and after every T&C change"
                }
            },
            "subscriptionNotificationTemplates": [
                {
                    "name": "Welcome Email - Wedge Networks2",
                    "locale": "en",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Welcome Email - Wedge Networks2</title>",
                    "plainText": "Welcome Email - Wedge Networks2",
                    "subject": "Your account for @@Subscription_Name@ is ready!",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                },
                {
                    "name": "Welcome Email - Wedge Networks2",
                    "locale": "fr",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Welcome Email - Wedge Networks2 fr</title>",
                    "plainText": "Welcome Email - Wedge Networks2 fr",
                    "subject": "Votre compte @@ nom_souscription @ est prêt !",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                },
                {
                    "name": "Subscription has Expired - Wedge Networks2",
                    "locale": "en",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Subscription has Expired - Wedge Networks2</title>",
                    "plainText": "Subscription has Expired - Wedge Networks2",
                    "subject": "Subscription has expired",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                },
                {
                    "name": "Subscription has Expired - Wedge Networks2",
                    "locale": "fr",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Subscription has Expired - Wedge Networks2 fr</title>",
                    "plainText": "Subscription has Expired - Wedge Networks2 fr",
                    "subject": "L'abonnement a expiré",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                }
            ],
            "resourceDependencies": [
                {
                    "value": {
                        "childResourceName": "Teamleader EU: Teamleader - monthly billing",
                        "parentResourceName": "Teamleader EU: Teamleader - yearly billing",
                        "dependenceKind": "CONFLICTS_ON_SUBSCRIPTION_LEVEL",
                        "childResourceId": null,
                        "parentResourceId": null,
                        "dependenceMultiplier": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "childResourceName": "Teamleader EU: Teamleader - monthly billing",
                        "parentResourceName": "Teamleader EU: Teamleader - yearly billing 2",
                        "dependenceKind": "CONFLICTS_ON_ACCOUNT_LEVEL",
                        "childResourceId": null,
                        "parentResourceId": null,
                        "dependenceMultiplier": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "childResourceName": "Teamleader EU: Teamleader - yearly billing",
                        "parentResourceName": "Teamleader EU: Teamleader - yearly billing 2",
                        "dependenceKind": "REQUIRES",
                        "childResourceId": null,
                        "parentResourceId": null,
                        "dependenceMultiplier": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                }
            ]
        },
        "appInfo": {
            "appId": null,
            "appCustomIconUrl": "/aps/2/applications/7047edc8-bcdb-4c42-9350-a2a0534c6200/aps/icon",
            "impersonationUid": "cdd11205-aa5e-4d43-9e6e-64e62f947fef"
        }
    }
    
  3. Call the applyConfig custom operation of the PLM component’s APS application and pass the ConfigurationInfo JSON object that you received in the previous step. To do that, make a request like this:

    POST /aps/2/resources/ca9685cb-d067-441b-b14d-146325aa2e53/applyConfig
    
    {
        "owner": {
            "accountId": 1,
            "memberId": 1
        },
        "serviceTemplateId": 9,
        "serviceTerms": {
            "0/0 Service Terms": {
                "bssId": 6,
                "serviceTermsName": "0/0 Service Terms",
                "holdPeriodInDays": 0,
                "gracePeriodInDays": 0
            },
            "Default": {
                "bssId": 0,
                "serviceTermsName": "Default",
                "holdPeriodInDays": 30,
                "gracePeriodInDays": 10
            },
            "Domain Service Terms": {
                "bssId": 3,
                "serviceTermsName": "Domain Service Terms",
                "holdPeriodInDays": 0,
                "gracePeriodInDays": 30
            },
            "Hosting Service Terms": {
                "bssId": 2,
                "serviceTermsName": "Hosting Service Terms",
                "holdPeriodInDays": 30,
                "gracePeriodInDays": 10
            },
            "In-House Products for Resellers": {
                "bssId": 4,
                "serviceTermsName": "In-House Products for Resellers",
                "holdPeriodInDays": 0,
                "gracePeriodInDays": 0
            }
        },
        "existingPdiPlans": {
            "teamleader eu (monthly plan)": {
                "aps": {
                    "id": "01431d51-b012-4558-91b1-468f7326531d",
                    "type": "http://com.odin.platform/inhouse-products/pdiPlan/1.0",
                    "status": "aps:ready",
                    "subscription": null,
                    "revision": 2,
                    "modified": 1649431014000,
                    "schema": null,
                    "package": null
                },
                "products": null,
                "operatingUnits": null,
                "account": null,
                "productLine": null,
                "name": {
                    "de_DE": "Teamleader EU (Monatsplan)",
                    "en_US": "Teamleader EU (Monthly Plan)",
                    "es_ES": "Teamleader EU (Monthly Plan)",
                    "fr_FR": "Teamleader EU (Monthly Plan)",
                    "it_IT": "Teamleader EU (Monthly Plan)",
                    "nl_NL": "Teamleader EU (Monthly Plan)",
                    "pt_BR": "Teamleader EU (Monthly Plan)",
                    "pt_PT": "Teamleader EU (Monthly Plan)",
                    "tr_TR": "Teamleader EU (Monthly Plan)"
                },
                "description": {
                    "de_DE": "Der monatliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                    "en_US": "The monthly service gives companies a majority of the same benefits that on-premises deployments provide.",
                    "es_ES": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                    "fr_FR": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                    "it_IT": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                    "nl_NL": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                    "pt_BR": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "pt_PT": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "tr_TR": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                },
                "bssServicePlanId": 12,
                "serviceTemplateId": 9,
                "isDefault": false,
                "customIconUrl": null,
                "billingPeriod": 3,
                "billingPeriodType": "psd",
                "pricePeriodType": "billing period",
                "planCategory": "Software & Licenses",
                "appId": null,
                "billingModel": "charge before billing period",
                "autoRenewType": "Before Expiration",
                "renewOrderInterval": 1,
                "vendorTimezone": null,
                "subscriptionPeriods": [
                    {
                        "bssId": 16,
                        "period": 6,
                        "periodType": "month",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "10",
                        "afterRefundPeriod": "refund_prorated_recurring_fee",
                        "fullRefundPeriod": 1,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": true,
                        "trial": false
                    },
                    {
                        "bssId": 17,
                        "period": 12,
                        "periodType": "month",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "",
                        "afterRefundPeriod": "no_refund",
                        "fullRefundPeriod": 3,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": false,
                        "trial": false
                    }
                ],
                "salesCategories": [
                    {
                        "id": 10,
                        "name": {
                            "de": "TeamleaderEU",
                            "en": "TeamleaderEU",
                            "es": "",
                            "fr": "",
                            "it": "",
                            "nl": "",
                            "pt": "",
                            "tr": ""
                        },
                        "description": {
                            "de": "Der Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten. Durch die Integration in den Cloud-Service können Unternehmen ihren Marktanteil ausbauen, wiederkehrende Umsätze automatisieren und steigern, die Kundenzufriedenheit steigern und gleichzeitig die Betriebskosten senken.",
                            "en": "The service gives companies a majority of the same benefits that on-premises deployments provide. By integrating with the cloud service, companies can expand their market share, automate and grow recurring revenue, increase customer satisfaction, and cut operational costs at the same time.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                        },
                        "parent": {
                            "id": 9,
                            "name": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "parent": null,
                            "expand": true,
                            "inCCP": true
                        },
                        "expand": true,
                        "inCCP": true
                    }
                ],
                "serviceTerms": {
                    "bssId": 0,
                    "serviceTermsName": "Default",
                    "holdPeriodInDays": 30,
                    "gracePeriodInDays": 10
                },
                "termsAndConditions": [
                    {
                        "id": null,
                        "bssId": 7,
                        "name": "Teamleader EU Additional Terms",
                        "value": "Teamleader EU Additional Terms Content",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    },
                    {
                        "id": null,
                        "bssId": 6,
                        "name": "Common",
                        "value": "Common",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    },
                    {
                        "id": null,
                        "bssId": 4,
                        "name": "Provider pre-existing TC",
                        "value": "kp8CVlZAOc",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "Always, on every purchase"
                    }
                ],
                "availableNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome e-mail - Business Class Mail"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "enabledNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome e-mail - Business Class Mail"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "servicePlanUpdateNotificationId": null,
                "alignWithStatementDay": true,
                "isSalesOrderProrated": true,
                "isFirstPeriodForFree": true,
                "customStatementDay": 2,
                "notificationScheduleId": 12,
                "resellerGroups": [],
                "volumePricingRatingMode": true,
                "ratingMode": "Revenue only",
                "default": false,
                "isOneTimeFeeProduct": false,
                "oneTimeFeePlan": false,
                "salesOrderProrated": true,
                "firstPeriodForFree": true,
                "published": true,
                "isPublished": true
            },
            "teamleader eu (yearly plan 2)": {
                "aps": {
                    "id": "7f80c0a3-301e-4b1d-9dd2-09af4719f456",
                    "type": "http://com.odin.platform/inhouse-products/pdiPlan/1.0",
                    "status": "aps:ready",
                    "subscription": null,
                    "revision": 2,
                    "modified": 1649431015000,
                    "schema": null,
                    "package": null
                },
                "products": null,
                "operatingUnits": null,
                "account": null,
                "productLine": null,
                "name": {
                    "de_DE": "Teamleader EU (Jahresplan)",
                    "en_US": "Teamleader EU (Yearly Plan 2)",
                    "es_ES": "Teamleader EU (Yearly Plan 2)",
                    "fr_FR": "Teamleader EU (Yearly Plan 2)",
                    "it_IT": "Teamleader EU (Yearly Plan 2)",
                    "nl_NL": "Teamleader EU (Yearly Plan 2)",
                    "pt_BR": "Teamleader EU (Yearly Plan 2)",
                    "pt_PT": "Teamleader EU (Yearly Plan 2)",
                    "tr_TR": "Teamleader EU (Yearly Plan 2)"
                },
                "description": {
                    "de_DE": "Der jährliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                    "en_US": "The yearly service gives companies a majority of the same benefits that on-premises deployments provide.",
                    "es_ES": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                    "fr_FR": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                    "it_IT": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                    "nl_NL": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                    "pt_BR": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "pt_PT": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "tr_TR": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                },
                "bssServicePlanId": 14,
                "serviceTemplateId": 9,
                "isDefault": false,
                "customIconUrl": null,
                "billingPeriod": 12,
                "billingPeriodType": "psd",
                "pricePeriodType": "month",
                "planCategory": "Software & Licenses",
                "appId": null,
                "billingModel": "charge before billing period",
                "autoRenewType": "On Last Statement Day",
                "renewOrderInterval": 1,
                "vendorTimezone": null,
                "subscriptionPeriods": [
                    {
                        "bssId": 19,
                        "period": 5,
                        "periodType": "year",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "",
                        "afterRefundPeriod": "no_refund",
                        "fullRefundPeriod": 4,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": true,
                        "trial": false
                    }
                ],
                "salesCategories": [
                    {
                        "id": 10,
                        "name": {
                            "de": "TeamleaderEU",
                            "en": "TeamleaderEU",
                            "es": "",
                            "fr": "",
                            "it": "",
                            "nl": "",
                            "pt": "",
                            "tr": ""
                        },
                        "description": {
                            "de": "Der Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten. Durch die Integration in den Cloud-Service können Unternehmen ihren Marktanteil ausbauen, wiederkehrende Umsätze automatisieren und steigern, die Kundenzufriedenheit steigern und gleichzeitig die Betriebskosten senken.",
                            "en": "The service gives companies a majority of the same benefits that on-premises deployments provide. By integrating with the cloud service, companies can expand their market share, automate and grow recurring revenue, increase customer satisfaction, and cut operational costs at the same time.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                        },
                        "parent": {
                            "id": 9,
                            "name": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "parent": null,
                            "expand": true,
                            "inCCP": true
                        },
                        "expand": true,
                        "inCCP": true
                    }
                ],
                "serviceTerms": {
                    "bssId": 0,
                    "serviceTermsName": "Default",
                    "holdPeriodInDays": 30,
                    "gracePeriodInDays": 10
                },
                "termsAndConditions": [
                    {
                        "id": null,
                        "bssId": 7,
                        "name": "Teamleader EU Additional Terms",
                        "value": "Teamleader EU Additional Terms Content",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    }
                ],
                "availableNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "enabledNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "servicePlanUpdateNotificationId": null,
                "alignWithStatementDay": true,
                "isSalesOrderProrated": false,
                "isFirstPeriodForFree": false,
                "customStatementDay": 1,
                "notificationScheduleId": 12,
                "resellerGroups": [],
                "volumePricingRatingMode": false,
                "ratingMode": null,
                "default": false,
                "isOneTimeFeeProduct": false,
                "oneTimeFeePlan": false,
                "salesOrderProrated": false,
                "firstPeriodForFree": false,
                "published": true,
                "isPublished": true
            },
            "teamleader eu (yearly plan)": {
                "aps": {
                    "id": "6b52c392-82e4-44f4-b0b8-4abb7ca0b082",
                    "type": "http://com.odin.platform/inhouse-products/pdiPlan/1.0",
                    "status": "aps:ready",
                    "subscription": null,
                    "revision": 2,
                    "modified": 1649431015000,
                    "schema": null,
                    "package": null
                },
                "products": null,
                "operatingUnits": null,
                "account": null,
                "productLine": null,
                "name": {
                    "de_DE": "Teamleader EU (Jahresplan)",
                    "en_US": "Teamleader EU (Yearly Plan)",
                    "es_ES": "Teamleader EU (Yearly Plan)",
                    "fr_FR": "Teamleader EU (Yearly Plan)",
                    "it_IT": "Teamleader EU (Yearly Plan)",
                    "nl_NL": "Teamleader EU (Yearly Plan)",
                    "pt_BR": "Teamleader EU (Yearly Plan)",
                    "pt_PT": "Teamleader EU (Yearly Plan)",
                    "tr_TR": "Teamleader EU (Yearly Plan)"
                },
                "description": {
                    "de_DE": "Der jährliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                    "en_US": "The yearly service gives companies a majority of the same benefits that on-premises deployments provide.",
                    "es_ES": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                    "fr_FR": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                    "it_IT": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                    "nl_NL": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                    "pt_BR": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "pt_PT": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                    "tr_TR": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                },
                "bssServicePlanId": 13,
                "serviceTemplateId": 9,
                "isDefault": false,
                "customIconUrl": null,
                "billingPeriod": 12,
                "billingPeriodType": "psd",
                "pricePeriodType": "month",
                "planCategory": "Software & Licenses",
                "appId": null,
                "billingModel": "charge before billing period",
                "autoRenewType": "On Last Statement Day",
                "renewOrderInterval": 1,
                "vendorTimezone": null,
                "subscriptionPeriods": [
                    {
                        "bssId": 18,
                        "period": 4,
                        "periodType": "year",
                        "cancellationFeeType": "none",
                        "cancellationFeeValue": "",
                        "afterRefundPeriod": "no_refund",
                        "fullRefundPeriod": 2,
                        "cancelationPolicies": null,
                        "downsizePolicies": null,
                        "autoRenewPeriod": true,
                        "trial": true
                    }
                ],
                "salesCategories": [
                    {
                        "id": 10,
                        "name": {
                            "de": "TeamleaderEU",
                            "en": "TeamleaderEU",
                            "es": "",
                            "fr": "",
                            "it": "",
                            "nl": "",
                            "pt": "",
                            "tr": ""
                        },
                        "description": {
                            "de": "Der Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten. Durch die Integration in den Cloud-Service können Unternehmen ihren Marktanteil ausbauen, wiederkehrende Umsätze automatisieren und steigern, die Kundenzufriedenheit steigern und gleichzeitig die Betriebskosten senken.",
                            "en": "The service gives companies a majority of the same benefits that on-premises deployments provide. By integrating with the cloud service, companies can expand their market share, automate and grow recurring revenue, increase customer satisfaction, and cut operational costs at the same time.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir."
                        },
                        "parent": {
                            "id": 9,
                            "name": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "en": "Security",
                                "es": "",
                                "fr": "",
                                "it": "",
                                "nl": "",
                                "pt": "",
                                "tr": ""
                            },
                            "parent": null,
                            "expand": true,
                            "inCCP": true
                        },
                        "expand": true,
                        "inCCP": true
                    }
                ],
                "serviceTerms": {
                    "bssId": 0,
                    "serviceTermsName": "Default",
                    "holdPeriodInDays": 30,
                    "gracePeriodInDays": 10
                },
                "termsAndConditions": [
                    {
                        "id": null,
                        "bssId": 7,
                        "name": "Teamleader EU Additional Terms",
                        "value": "Teamleader EU Additional Terms Content",
                        "isDeleted": false,
                        "type": "plain_text",
                        "ownerAccountId": 1,
                        "acceptType": "On first purchase and after every T&C change"
                    }
                ],
                "availableNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "enabledNotifications": [
                    {
                        "templateType": "welcome_email",
                        "templateName": "Welcome Email - Wedge Networks"
                    },
                    {
                        "templateType": "expiration_email",
                        "templateName": "Subscription has Expired - Wedge Networks"
                    }
                ],
                "servicePlanUpdateNotificationId": null,
                "alignWithStatementDay": true,
                "isSalesOrderProrated": false,
                "isFirstPeriodForFree": false,
                "customStatementDay": 1,
                "notificationScheduleId": 12,
                "resellerGroups": [],
                "volumePricingRatingMode": false,
                "ratingMode": null,
                "default": false,
                "isOneTimeFeeProduct": false,
                "oneTimeFeePlan": false,
                "salesOrderProrated": false,
                "firstPeriodForFree": false,
                "published": true,
                "isPublished": true
            }
        },
        "excelConfig": {
            "resources": [
                {
                    "value": {
                        "resourceType": {
                            "name": {
                                "en": "Teamleader EU: Teamleader - monthly billing"
                            },
                            "resClass": null,
                            "actParams": null,
                            "description": {}
                        },
                        "resourceCategory": {
                            "id": 1,
                            "name": {
                                "de": "",
                                "pt": "",
                                "en": "Additional Resources",
                                "it": "",
                                "fr": "",
                                "es": "",
                                "nl": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "pt": "",
                                "en": "Additional Resources",
                                "it": "",
                                "fr": "Additional Resources",
                                "nl": "",
                                "tr": "",
                                "es": ""
                            },
                            "parent": null,
                            "taxCatId": "All products"
                        },
                        "uom": "unit",
                        "measurable": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "resourceType": {
                            "name": {
                                "en": "Teamleader EU: Teamleader - yearly billing"
                            },
                            "resClass": null,
                            "actParams": null,
                            "description": {}
                        },
                        "resourceCategory": {
                            "id": 11,
                            "name": {
                                "de": "",
                                "pt": "",
                                "en": "Other Resources",
                                "it": "",
                                "fr": "",
                                "es": "",
                                "nl": "",
                                "tr": ""
                            },
                            "description": {
                                "de": "",
                                "pt": "",
                                "en": "Other Resources",
                                "it": "",
                                "fr": "Other Resources",
                                "nl": "",
                                "tr": "",
                                "es": ""
                            },
                            "parent": {
                                "id": 5,
                                "name": {
                                    "en": "Other Products"
                                },
                                "description": null,
                                "parent": null,
                                "taxCatId": null
                            },
                            "taxCatId": "All products"
                        },
                        "uom": "unit",
                        "measurable": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                }
            ],
            "serviceTemplates": [],
            "servicePlans": [
                {
                    "value": {
                        "name": {
                            "de": "Teamleader EU (Monatsplan)",
                            "pt": "Teamleader EU (Monthly Plan)",
                            "en": "Teamleader EU (Monthly Plan)",
                            "it": "Teamleader EU (Monthly Plan)",
                            "fr": "Teamleader EU (Monthly Plan)",
                            "tr": "Teamleader EU (Monthly Plan)",
                            "nl": "Teamleader EU (Monthly Plan)",
                            "es": "Teamleader EU (Monthly Plan)"
                        },
                        "planBillingPeriod": null,
                        "planBillingPeriodType": null,
                        "pricePeriodType": "billing period",
                        "autoRenewType": null,
                        "renewOrderInterval": null,
                        "vendorTimezone": null,
                        "billingModel": null,
                        "serviceTemplateId": null,
                        "serviceTemplateName": null,
                        "description": {
                            "de": "Der monatliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "en": "Testing renamed description",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo."
                        },
                        "resources": [],
                        "subscriptionPeriods": [
                            {
                                "value": {
                                    "trial": false,
                                    "periodType": "month",
                                    "refundType": "refund_prorated_recurring_fee",
                                    "period": 6,
                                    "fullRefundPeriod": 1,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "10",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": true,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            },
                            {
                                "value": {
                                    "trial": false,
                                    "periodType": "month",
                                    "refundType": "no_refund",
                                    "period": 12,
                                    "fullRefundPeriod": 3,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": false,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            },
                            {
                                "value": {
                                    "trial": true,
                                    "periodType": "month",
                                    "refundType": "refund_prorated_recurring_fee",
                                    "period": 9,
                                    "fullRefundPeriod": 6,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "10",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": false,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "ADD",
                                "edit": false,
                                "add": true
                            }
                        ],
                        "planCategory": null,
                        "salesCategories": [],
                        "serviceTerms": "Default",
                        "welcomeNotificationTemplate": "Welcome Email - Wedge Networks2",
                        "expirationNotificationTemplate": "Subscription has Expired - Wedge Networks2",
                        "notificationScheduleId": null,
                        "termsConditions": [],
                        "vendorId": 1,
                        "vendorName": null,
                        "isAvailableForSale": null,
                        "cloneFrom": null,
                        "delegatedServicePlans": [
                            {
                                "value": {
                                    "name": {
                                        "en": "Teamleader EU (Monthly Plan)"
                                    },
                                    "planBillingPeriod": null,
                                    "planBillingPeriodType": null,
                                    "pricePeriodType": null,
                                    "autoRenewType": null,
                                    "renewOrderInterval": null,
                                    "vendorTimezone": null,
                                    "billingModel": null,
                                    "serviceTemplateId": null,
                                    "serviceTemplateName": null,
                                    "description": null,
                                    "resources": [],
                                    "subscriptionPeriods": [],
                                    "planCategory": null,
                                    "salesCategories": [],
                                    "serviceTerms": null,
                                    "welcomeNotificationTemplate": null,
                                    "expirationNotificationTemplate": null,
                                    "notificationScheduleId": null,
                                    "termsConditions": [],
                                    "vendorId": 1000002,
                                    "vendorName": "MICHAEL Legros, Crona",
                                    "isAvailableForSale": null,
                                    "cloneFrom": null,
                                    "delegatedServicePlans": [],
                                    "isEnableVolumePricingModel": null,
                                    "ratingMode": null,
                                    "alignWithStatementDay": null,
                                    "isSalesOrderProrated": null,
                                    "isFirstPeriodForFree": null,
                                    "customStatementDay": null,
                                    "upgrades": [],
                                    "isPublished": null,
                                    "resellerGroups": [],
                                    "enName": "Teamleader EU (Monthly Plan)"
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "isEnableVolumePricingModel": true,
                        "ratingMode": null,
                        "alignWithStatementDay": null,
                        "isSalesOrderProrated": null,
                        "isFirstPeriodForFree": null,
                        "customStatementDay": null,
                        "upgrades": [
                            {
                                "value": {
                                    "toServicePlanId": null,
                                    "toServicePlanName": "Teamleader EU (Yearly Plan)",
                                    "remainCurrentSubscriptionStartDate": true
                                },
                                "action": "ADD",
                                "edit": false,
                                "add": true
                            }
                        ],
                        "isPublished": null,
                        "resellerGroups": [],
                        "enName": "Teamleader EU (Monthly Plan)"
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "name": {
                            "de": "Teamleader EU (Jahresplan)",
                            "pt": "Teamleader EU (Yearly Plan)",
                            "en": "Teamleader EU (Yearly Plan)",
                            "it": "Teamleader EU (Yearly Plan)",
                            "fr": "Teamleader EU (Yearly Plan)",
                            "tr": "Teamleader EU (Yearly Plan)",
                            "nl": "Teamleader EU (Yearly Plan)",
                            "es": "Teamleader EU (Yearly Plan)"
                        },
                        "planBillingPeriod": null,
                        "planBillingPeriodType": null,
                        "pricePeriodType": "month",
                        "autoRenewType": null,
                        "renewOrderInterval": null,
                        "vendorTimezone": null,
                        "billingModel": null,
                        "serviceTemplateId": null,
                        "serviceTemplateName": null,
                        "description": {
                            "de": "Der jährliche Service bietet Unternehmen die meisten Vorteile, die lokale Bereitstellungen bieten.",
                            "pt": "O serviço oferece às empresas a maioria dos mesmos benefícios que as implantações locais fornecem. Ao integrar-se ao serviço de nuvem, as empresas podem expandir sua participação no mercado, automatizar e aumentar a receita recorrente, aumentar a satisfação do cliente e cortar custos operacionais ao mesmo tempo.",
                            "en": "Testing renamed description",
                            "it": "Il servizio offre alle aziende la maggior parte degli stessi vantaggi offerti dalle distribuzioni locali. Integrandosi con il servizio cloud, le aziende possono espandere la propria quota di mercato, automatizzare e aumentare i ricavi ricorrenti, aumentare la soddisfazione dei clienti e ridurre i costi operativi allo stesso tempo.",
                            "fr": "Le service offre aux entreprises la majorité des mêmes avantages que les déploiements sur site. En s'intégrant au service cloud, les entreprises peuvent accroître leur part de marché, automatiser et augmenter les revenus récurrents, augmenter la satisfaction client et réduire les coûts d'exploitation en même temps.",
                            "tr": "Hizmet, şirket içi dağıtımların sağladığı faydaların çoğunu şirketlere verir. Bulut hizmetine entegre olarak, şirketler pazar paylarını artırabilir, yinelenen geliri otomatikleştirip büyütebilir, müşteri memnuniyetini artırabilir ve aynı zamanda operasyonel maliyetleri azaltabilir.",
                            "nl": "De service biedt bedrijven een meerderheid van dezelfde voordelen die on-premises implementaties bieden. Door te integreren met de cloudservice kunnen bedrijven hun marktaandeel vergroten, terugkerende inkomsten automatiseren en laten groeien, de klanttevredenheid verhogen en tegelijkertijd de operationele kosten verlagen.",
                            "es": "El servicio brinda a las empresas la mayoría de los mismos beneficios que brindan las implementaciones locales. Al integrarse con el servicio en la nube, las empresas pueden ampliar su participación en el mercado, automatizar y aumentar los ingresos recurrentes, aumentar la satisfacción del cliente y reducir los costos operativos al mismo tiempo."
                        },
                        "resources": [
                            {
                                "value": {
                                    "name": {
                                        "en": "Teamleader EU: Teamleader - monthly billing"
                                    },
                                    "description": null,
                                    "composite": false,
                                    "createPlanRatePeriods": false,
                                    "unitOfMeasure": "unit",
                                    "inCP": true,
                                    "published": null,
                                    "setupFee": null,
                                    "overFee": null,
                                    "rtID": null,
                                    "resourceType": {
                                        "name": {
                                            "en": "Teamleader EU: Teamleader - monthly billing"
                                        },
                                        "resClass": "rc.saas.countedlenk",
                                        "actParams": null,
                                        "description": null
                                    },
                                    "billingResourceID": null,
                                    "externalBillingResourceID": null,
                                    "max": 5000,
                                    "min": 1,
                                    "measurable": false,
                                    "instore": true,
                                    "recFee": null,
                                    "resourceCategory": {
                                        "id": 1,
                                        "name": {
                                            "de": "",
                                            "pt": "",
                                            "en": "Additional Resources",
                                            "it": "",
                                            "fr": "",
                                            "es": "",
                                            "nl": "",
                                            "tr": ""
                                        },
                                        "description": {
                                            "de": "",
                                            "pt": "",
                                            "en": "Additional Resources",
                                            "it": "",
                                            "fr": "Additional Resources",
                                            "nl": "",
                                            "tr": "",
                                            "es": ""
                                        },
                                        "parent": null,
                                        "taxCatId": "All products"
                                    },
                                    "periods": [],
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpOveruseFee": null,
                                    "rfeeShowZeroPrice": false,
                                    "rfeePerUnit": false,
                                    "ofeeShowZeroPrice": false,
                                    "sfeePerUnit": false,
                                    "sfeeShowZeroPrice": false
                                },
                                "action": "ADD",
                                "edit": false,
                                "add": true
                            }
                        ],
                        "subscriptionPeriods": [
                            {
                                "value": {
                                    "trial": true,
                                    "periodType": "year",
                                    "refundType": "no_refund",
                                    "period": 4,
                                    "fullRefundPeriod": 2,
                                    "renewalFee": 0,
                                    "recurringFee": 0,
                                    "depositFee": 0,
                                    "setupFee": 0,
                                    "transferFee": 0,
                                    "cancellationFeeType": "none",
                                    "cancellationFeeValue": "",
                                    "msrpSetupFee": null,
                                    "msrpRecurringFee": null,
                                    "msrpRenewalFee": null,
                                    "msrpTransferFee": null,
                                    "isAutoRenewPeriod": true,
                                    "cancelationPolicies": null,
                                    "downsizePolicies": null
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "planCategory": null,
                        "salesCategories": [],
                        "serviceTerms": "Default",
                        "welcomeNotificationTemplate": "Welcome Email - Wedge Networks2",
                        "expirationNotificationTemplate": "Subscription has Expired - Wedge Networks2",
                        "notificationScheduleId": null,
                        "termsConditions": [],
                        "vendorId": 1,
                        "vendorName": null,
                        "isAvailableForSale": null,
                        "cloneFrom": null,
                        "delegatedServicePlans": [
                            {
                                "value": {
                                    "name": {
                                        "en": "Teamleader EU (Yearly Plan)"
                                    },
                                    "planBillingPeriod": null,
                                    "planBillingPeriodType": null,
                                    "pricePeriodType": null,
                                    "autoRenewType": null,
                                    "renewOrderInterval": null,
                                    "vendorTimezone": null,
                                    "billingModel": null,
                                    "serviceTemplateId": null,
                                    "serviceTemplateName": null,
                                    "description": null,
                                    "resources": [],
                                    "subscriptionPeriods": [],
                                    "planCategory": null,
                                    "salesCategories": [],
                                    "serviceTerms": null,
                                    "welcomeNotificationTemplate": null,
                                    "expirationNotificationTemplate": null,
                                    "notificationScheduleId": null,
                                    "termsConditions": [],
                                    "vendorId": 1000002,
                                    "vendorName": "MICHAEL Legros, Crona",
                                    "isAvailableForSale": null,
                                    "cloneFrom": null,
                                    "delegatedServicePlans": [],
                                    "isEnableVolumePricingModel": null,
                                    "ratingMode": null,
                                    "alignWithStatementDay": null,
                                    "isSalesOrderProrated": null,
                                    "isFirstPeriodForFree": null,
                                    "customStatementDay": null,
                                    "upgrades": [],
                                    "isPublished": null,
                                    "resellerGroups": [],
                                    "enName": "Teamleader EU (Yearly Plan)"
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "isEnableVolumePricingModel": true,
                        "ratingMode": null,
                        "alignWithStatementDay": null,
                        "isSalesOrderProrated": null,
                        "isFirstPeriodForFree": null,
                        "customStatementDay": null,
                        "upgrades": [
                            {
                                "value": {
                                    "toServicePlanId": null,
                                    "toServicePlanName": "Teamleader EU (Yearly Plan 2)",
                                    "remainCurrentSubscriptionStartDate": false
                                },
                                "action": "EDIT",
                                "edit": true,
                                "add": false
                            }
                        ],
                        "isPublished": null,
                        "resellerGroups": [],
                        "enName": "Teamleader EU (Yearly Plan)"
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                }
            ],
            "termsConditionsDetails": {
                "Teamleader EU Additional Terms": {
                    "id": -2147483648,
                    "name": "Teamleader EU Additional Terms",
                    "acceptType": "On first purchase and after every T&C change",
                    "active": true,
                    "text": "<p><strong>Additional Terms and Conditions for TeamleaderEU Subscriptions</strong></p>\n<p><strong>&nbsp;</strong></p>\n<p>The following additional terms and conditions apply to Your purchase of WedgeARP™ Secure Home Office (&ldquo;Vendor&rdquo;) subscriptions and to the use of such Services by You and Your customers.</p>\n<p>&nbsp;</p>\n<h2><a name=\"_Toc381085506\"></a><a name=\"_Toc342658188\"></a>1.&nbsp;&nbsp;&nbsp;&nbsp; Term and Termination</h2>\n<h2>&nbsp;</h2>\n<p><a name=\"_Toc294012771\"></a><a name=\"_Toc285537541\"></a>Services start once provisioned through the marketplace. You may cancel the Services through the marketplace so long as no Service commitments are active hereunder (i.e. You or one or more of Your customers are employing any active Services).&nbsp; <a name=\"_Toc362955805\"></a><a name=\"_Toc362955620\"></a>You may only terminate the Service if there are no existing term commitments for Services. If You or Your customer terminates its use of a Service prior to the expiration of the term commitment for the selected service, You will remain responsible to Ingram Micro for all remaining and accrued charges for such Service pursuant to the selected term commitment.&nbsp;</p>\n<p>&nbsp;</p>\n<p><a name=\"_Toc362955804\"></a><a name=\"_Toc362955619\"></a>Services are available for minimum commitment of one month.&nbsp; Services will auto renew for an additional month, unless You cancel the Services one (1) business days prior to the expiration of the term commitment for the selected Service.</p>\n<p>&nbsp;</p>\n<h2>2.&nbsp;&nbsp;&nbsp;&nbsp; Fees</h2>\n<h2>&nbsp;</h2>\n<p><a name=\"_Toc320601176\"></a><a name=\"_Toc329005647\"></a><a name=\"_Toc328553059\"></a><a name=\"_Toc328552976\"></a><a name=\"_Toc327868816\"></a><a name=\"_Toc320697822\"></a>You agree to pay the fees and charges for the Services as outlined in the registration process and that appear on the Site, as may be amended from time to time.&nbsp; If You or Your customer exceeds the usage limits applicable to the Service subscription, You agree to pay for the fees and charges for such over usage. For any extension of a subscription term or the provisioning of a Service upgrade, the then-current price will apply, unless otherwise mutually agreed in writing by You and Ingram Micro. Ingram Micro, may, from time to time in its sole discretion, change the fees it charges for the Service. &nbsp;Any increase in the fees will take effect at the beginning of the new subscription term. Ingram Micro will notify You of any such changes by updating the Site or sending notice by e-mail or regular mail.</p>\n<p>&nbsp;</p>\n<h2>3.&nbsp;&nbsp;&nbsp;&nbsp; Territory Restriction</h2>\n<p>&nbsp;</p>\n<p>You may only resell and/or market the Services in Canada.</p>\n<h2>&nbsp;</h2>\n<h2>4.&nbsp;&nbsp;&nbsp;&nbsp; Terms of Sale &amp; Terms of Use</h2>\n<h2>&nbsp;</h2>\n<p><strong>All purchases are subject to the sales terms set forth at </strong><a href=\"https://ca.cloud.im/legal\"><strong>https://at.cloud.im/legal</strong></a><strong> and service setup information, including but not limited to pricing, (where applicable) set forth in the marketplace. </strong>For the avoidance of doubt, notwithstanding the presence or acceptance by Ingram Micro of Your order, such shall be for administrative purposes only and the parties agree that the governing terms and conditions shall be those set forth at <a href=\"https://at.cloud.im/legal\"><strong>https://at.cloud.im/legal</strong></a> unless otherwise agreed to in writing by Ingram Micro and You.</p>\n<h2>&nbsp;</h2>\n<p><strong>The Services are provided by the Vendor.&nbsp; All terms of use and/or service as established by the Vendor and as set forth at </strong><a href=\"https://wedgenetworks.com/eula.aspx\">https://wedgenetworks.com/eula.aspx</a></p>\n<p><strong>shall apply, as applicable, to Your resale activity and to You and Your customers&rsquo; use of the Services (&ldquo;Terms of Use&rdquo;).&nbsp; You covenant, represent and warrant that You will present the Terms of Use to each of Your customers and obtain their enforceable agreement to the Terms of Use before permitting them to access or use the Service.&nbsp; You covenant, represent and warrant that no subscription for the Services shall be activated for or used by Your customers before the customer agrees to the Terms of Use.&nbsp; </strong>You will track and record acceptance by Your customers of the Terms of Use and will provide such information to Ingram Micro upon request.</p>\n<p>&nbsp;</p>\n<p>Ingram Micro may at any time modify these terms and conditions.&nbsp; You and Your customers must regularly monitor the Site for any such modifications.&nbsp; The modified terms and conditions will be effective immediately after it is posted on the Site. Your purchase and resale of the Services and You and Your customers&rsquo; use of the Services after any such modification will be deemed acceptance of such modification.</p>"
                },
                "Common": {
                    "id": -2147483647,
                    "name": "Common",
                    "acceptType": "On first purchase and after every T&C change",
                    "active": true,
                    "text": "On first purchase and after every T&C change"
                }
            },
            "subscriptionNotificationTemplates": [
                {
                    "name": "Welcome Email - Wedge Networks2",
                    "locale": "en",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Welcome Email - Wedge Networks2</title>",
                    "plainText": "Welcome Email - Wedge Networks2",
                    "subject": "Your account for @@Subscription_Name@ is ready!",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                },
                {
                    "name": "Welcome Email - Wedge Networks2",
                    "locale": "fr",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Welcome Email - Wedge Networks2 fr</title>",
                    "plainText": "Welcome Email - Wedge Networks2 fr",
                    "subject": "Votre compte @@ nom_souscription @ est prêt !",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                },
                {
                    "name": "Subscription has Expired - Wedge Networks2",
                    "locale": "en",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Subscription has Expired - Wedge Networks2</title>",
                    "plainText": "Subscription has Expired - Wedge Networks2",
                    "subject": "Subscription has expired",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                },
                {
                    "name": "Subscription has Expired - Wedge Networks2",
                    "locale": "fr",
                    "messageCategory": "RENEWAL_AND_EXPIRATION_NOTICES",
                    "htmlText": "<title>Subscription has Expired - Wedge Networks2 fr</title>",
                    "plainText": "Subscription has Expired - Wedge Networks2 fr",
                    "subject": "L'abonnement a expiré",
                    "toAddress": "@@Cust_Account_BillingContact_Email@",
                    "toName": "@@Cust_Account_CompanyName@",
                    "bccAddress": "",
                    "fromAddress": "@@Vend_Account_TechContact_Email@",
                    "fromName": "@@Vend_Account_CompanyName@",
                    "pdfAttachmentName": "",
                    "active": true,
                    "condition": "",
                    "visibleToResellers": true,
                    "secureBody": false
                }
            ],
            "resourceDependencies": [
                {
                    "value": {
                        "childResourceName": "Teamleader EU: Teamleader - monthly billing",
                        "parentResourceName": "Teamleader EU: Teamleader - yearly billing",
                        "dependenceKind": "CONFLICTS_ON_SUBSCRIPTION_LEVEL",
                        "childResourceId": null,
                        "parentResourceId": null,
                        "dependenceMultiplier": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "childResourceName": "Teamleader EU: Teamleader - monthly billing",
                        "parentResourceName": "Teamleader EU: Teamleader - yearly billing 2",
                        "dependenceKind": "CONFLICTS_ON_ACCOUNT_LEVEL",
                        "childResourceId": null,
                        "parentResourceId": null,
                        "dependenceMultiplier": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                },
                {
                    "value": {
                        "childResourceName": "Teamleader EU: Teamleader - yearly billing",
                        "parentResourceName": "Teamleader EU: Teamleader - yearly billing 2",
                        "dependenceKind": "REQUIRES",
                        "childResourceId": null,
                        "parentResourceId": null,
                        "dependenceMultiplier": null
                    },
                    "action": "EDIT",
                    "edit": true,
                    "add": false
                }
            ]
        },
        "appInfo": {
            "appId": null,
            "appCustomIconUrl": "/aps/2/applications/7047edc8-bcdb-4c42-9350-a2a0534c6200/aps/icon",
            "impersonationUid": "cdd11205-aa5e-4d43-9e6e-64e62f947fef"
        }
    }
    

    As a result, you will receive HTTP status code 202.

Obtaining Notification Templates

To obtain a list of notification templates used by PLM, make a request like this:

GET /aps/2/resources?implementing(http://com.odin.platform/inhouse-products/notificationTemplate/1.0)

As a result, you will receive a response like this:

HTTP/1.1 200 OK

[
    {
        "content": "...",
        "templateName": "Welcome e-mail - other products",
        "templateType": "welcome_email",
        "aps": {
            "modified": "2022-04-21T07:13:16Z",
            "id": "b22b0399-cfe7-433b-b128-ede173887b52",
            "type": "http://com.odin.platform/inhouse-products/notificationTemplate/1.0",
            "status": "aps:ready",
            "revision": 3
        }
    },
    {
        "content": "...",
        "templateName": "Subscription has Expired - other products",
        "templateType": "expiration_email",
        "aps": {
            "modified": "2022-04-21T07:13:16Z",
            "id": "526d8c2e-5910-4c05-8828-2c763c60d2c0",
            "type": "http://com.odin.platform/inhouse-products/notificationTemplate/1.0",
            "status": "aps:ready",
            "revision": 3
        }
    }
]