{
  "openapi": "3.0.1",
  "info": {
    "title": "TMF 637 Product Inventory Management",
    "description": "**TMF API Reference : TMF 637 - Product Inventory Management**  Release : 19.0 - June 2019\n\nThe Product Inventory Management API provides standardized mechanism for product inventory management such as creation, update and retrieval of the representation of a product in the inventory. It also allows the notification of events related to product lifecycle  **Product resource** A product offering procured by a customer or other interested party playing a party role. A product is realized as one or more service(s) and / or resource(s).  Product Inventory API performs the following operations on product : - Retrieval of a product or a collection of products depending on filter criteria - Partial update of a product (including updating rules and for administration purpose) - Creation of a product (including default values and creation rules and for administration purpose) - Deletion of a product (for administration purposes) - Notification of events on product.  Copyright \u00a9 TM Forum 2019. All Rights Reserved   ",
    "license": {
      "name": "Apache 2.0",
      "url": "https://osl.etsi.org"
    },
    "version": "4.0.0"
  },
  "externalDocs": {
    "description": "TMF API Tables",
    "url": "https://www.tmforum.org/oda/open-apis/table"
  },
  "servers": [
    {
      "url": "https://portal.openslice.eu/tmf-api",
      "description": "Generated server url"
    }
  ],
  "security": [
    {
      "security_auth": []
    }
  ],
  "paths": {
    "/productInventoryManagement/v4/product": {
      "get": {
        "tags": [
          "product"
        ],
        "summary": "List or find Product objects",
        "description": "This operation list or find Product entities",
        "operationId": "listProduct",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "description": "Comma-separated properties to be provided in response",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Requested index for start of resources to be provided in response",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Requested number of resources to be provided in response",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Product"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "product"
        ],
        "summary": "Creates a Product",
        "description": "This operation creates a Product entity.",
        "operationId": "createProduct",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ProductCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/productInventoryManagement/v4/listener/productStateChangeEvent": {
      "post": {
        "tags": [
          "notification listeners (client side)"
        ],
        "summary": "Client listener for entity ProductStateChangeEvent",
        "description": "Example of a client listener for receiving the notification ProductStateChangeEvent",
        "operationId": "listenToProductStateChangeEvent",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ProductStateChangeEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "201": {
            "description": "Notified",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/productInventoryManagement/v4/listener/productDeleteEvent": {
      "post": {
        "tags": [
          "notification listeners (client side)"
        ],
        "summary": "Client listener for entity ProductDeleteEvent",
        "description": "Example of a client listener for receiving the notification ProductDeleteEvent",
        "operationId": "listenToProductDeleteEvent",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ProductDeleteEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "201": {
            "description": "Notified",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/productInventoryManagement/v4/listener/productCreateEvent": {
      "post": {
        "tags": [
          "notification listeners (client side)"
        ],
        "summary": "Client listener for entity ProductCreateEvent",
        "description": "Example of a client listener for receiving the notification ProductCreateEvent",
        "operationId": "listenToProductCreateEvent",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ProductCreateEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "201": {
            "description": "Notified",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/productInventoryManagement/v4/listener/productBatchEvent": {
      "post": {
        "tags": [
          "notification listeners (client side)"
        ],
        "summary": "Client listener for entity ProductBatchEvent",
        "description": "Example of a client listener for receiving the notification ProductBatchEvent",
        "operationId": "listenToProductBatchEvent",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ProductBatchEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "201": {
            "description": "Notified",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/productInventoryManagement/v4/listener/productAttributeValueChangeEvent": {
      "post": {
        "tags": [
          "notification listeners (client side)"
        ],
        "summary": "Client listener for entity ProductAttributeValueChangeEvent",
        "description": "Example of a client listener for receiving the notification ProductAttributeValueChangeEvent",
        "operationId": "listenToProductAttributeValueChangeEvent",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ProductAttributeValueChangeEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "201": {
            "description": "Notified",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/hub": {
      "post": {
        "tags": [
          "events subscription"
        ],
        "summary": "Register a listener",
        "description": "Sets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.",
        "operationId": "registerListener",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/EventSubscriptionInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "201": {
            "description": "Subscribed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/productInventoryManagement/v4/product/{id}": {
      "get": {
        "tags": [
          "product"
        ],
        "summary": "Retrieves a Product by ID",
        "description": "This operation retrieves a Product entity. Attribute selection is enabled for all first level attributes.",
        "operationId": "retrieveProduct",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Product",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Comma-separated properties to provide in response",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "product"
        ],
        "summary": "Deletes a Product",
        "description": "This operation deletes a Product entity.",
        "operationId": "deleteProduct",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Product",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "product"
        ],
        "summary": "Updates partially a Product",
        "description": "This operation updates partially a Product entity.",
        "operationId": "patchProduct",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Product",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "200": {
            "description": "Updated",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/hub/{id}": {
      "delete": {
        "tags": [
          "events subscription"
        ],
        "summary": "Unregister a listener",
        "description": "Resets the communication endpoint address the service instance must use to deliver information about its health state, execution state, failures and metrics.",
        "operationId": "unregisterListener",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the registered listener",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deleted"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset&#x3D;utf-8": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AgreementItemRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "atReferredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "agreementItemId": {
            "type": "string"
          },
          "@referredType": {
            "type": "string"
          }
        },
        "description": "Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications."
      },
      "BillingAccountRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "atBaseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "atSchemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "atType": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "atReferredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Reference of the billing account"
          },
          "name": {
            "type": "string",
            "description": "Name of the billing account"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the billing account"
          },
          "@referredType": {
            "type": "string"
          }
        },
        "description": "BillingAccount reference. A BillingAccount is a detailed description of a bill structure."
      },
      "Characteristic": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "value": {
            "type": "object",
            "description": "The value of the characteristic"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "valueType": {
            "type": "string",
            "description": "Data type of the value of the characteristic"
          }
        },
        "description": "Describes a given characteristic of an object or entity through a name/value pair."
      },
      "Money": {
        "required": [
          "unit",
          "value"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "unit": {
            "type": "string",
            "description": "Currency (ISO4217 norm uses 3 letters to define the currency)"
          },
          "value": {
            "type": "number",
            "description": "A positive floating point number",
            "format": "float"
          }
        },
        "description": "A base / value business entity used to represent money"
      },
      "Price": {
        "required": [
          "atBaseType",
          "atSchemaLocation",
          "atType",
          "dutyFreeAmount",
          "percentage",
          "taxIncludedAmount",
          "taxRate"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "atBaseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "atSchemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "atType": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "percentage": {
            "type": "number",
            "description": "Percentage to apply for ProdOfferPriceAlteration",
            "format": "float"
          },
          "taxRate": {
            "type": "number",
            "description": "Tax rate",
            "format": "float"
          },
          "dutyFreeAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "taxIncludedAmount": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "description": "Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for Price Alteration."
      },
      "PriceAlteration": {
        "required": [
          "applicationDuration",
          "description",
          "name",
          "price",
          "priceType",
          "priority",
          "productOfferingPrice",
          "recurringChargePeriod",
          "unitOfMeasure"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the order item price alteration"
          },
          "applicationDuration": {
            "type": "integer",
            "description": "Duration during which the alteration applies on the order item price (for instance 2 months free of charge for the recurring charge)",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail the semantics of this order item price alteration"
          },
          "priceType": {
            "type": "string",
            "description": "A category that describes the price such as recurring, one time and usage."
          },
          "priority": {
            "type": "integer",
            "description": "Priority level for applying this alteration among all the defined alterations on the order item price",
            "format": "int32"
          },
          "recurringChargePeriod": {
            "type": "string",
            "description": "Could be month, week..."
          },
          "unitOfMeasure": {
            "type": "string",
            "description": "Could be minutes, GB..."
          },
          "price": {
            "$ref": "#/components/schemas/Price"
          },
          "productOfferingPrice": {
            "$ref": "#/components/schemas/ProductOfferingPriceRef"
          }
        },
        "description": "Is an amount, usually of money, that modifies the price charged for an order item."
      },
      "ProductCreate": {
        "required": [
          "agreement",
          "atBaseType",
          "atSchemaLocation",
          "atType",
          "billingAccount",
          "description",
          "isBundle",
          "isCustomerVisible",
          "name",
          "orderDate",
          "place",
          "product",
          "productCharacteristic",
          "productOffering",
          "productOrderItem",
          "productPrice",
          "productRelationship",
          "productSerialNumber",
          "productSpecification",
          "productTerm",
          "realizingResource",
          "realizingService",
          "relatedParty",
          "startDate",
          "status",
          "terminationDate"
        ],
        "type": "object",
        "properties": {
          "atBaseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "atSchemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "atType": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "description": {
            "type": "string",
            "description": "Is the description of the product. It could be copied from the description of the Product Offering."
          },
          "isBundle": {
            "type": "boolean",
            "description": "If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering."
          },
          "isCustomerVisible": {
            "type": "boolean",
            "description": "If true, the product is visible by the customer."
          },
          "name": {
            "type": "string",
            "description": "Name of the product. It could be the same as the name of the product offering"
          },
          "orderDate": {
            "type": "string",
            "description": "Is the date when the product was ordered",
            "format": "date-time"
          },
          "productSerialNumber": {
            "type": "string",
            "description": "Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router."
          },
          "startDate": {
            "type": "string",
            "description": "Is the date from which the product starts",
            "format": "date-time"
          },
          "terminationDate": {
            "type": "string",
            "description": "Is the date when the product was terminated",
            "format": "date-time"
          },
          "agreement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItemRef"
            }
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "place": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPlaceRefOrValue"
            }
          },
          "product": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRefOrValue"
            }
          },
          "productCharacteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "productOffering": {
            "$ref": "#/components/schemas/ProductOfferingRef"
          },
          "productOrderItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductOrderItem"
            }
          },
          "productPrice": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPrice"
            }
          },
          "productRelationship": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRelationship"
            }
          },
          "productSpecification": {
            "$ref": "#/components/schemas/ProductSpecificationRef"
          },
          "productTerm": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductTerm"
            }
          },
          "realizingResource": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceRef"
            }
          },
          "realizingService": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceRef"
            }
          },
          "relatedParty": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "PENDINGACTIVE",
              "CANCELLED",
              "ACTIVE",
              "PENDINGTERMINATE",
              "TERMINATED",
              "SUSPENDED",
              "ABORTED_ "
            ]
          },
          "@baseType": {
            "type": "string"
          },
          "@schemaLocation": {
            "type": "string"
          },
          "@type": {
            "type": "string"
          }
        },
        "description": "The Product to be created"
      },
      "ProductOfferingPriceRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "lastUpdate": {
            "type": "string",
            "description": "Date and time of the last update"
          },
          "lifecycleStatusEnum": {
            "type": "string",
            "writeOnly": true,
            "enum": [
              "In study",
              "In design",
              "In test",
              "Active",
              "Launched",
              "Retired",
              "Obsolete",
              "Rejected"
            ]
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "description": {
            "type": "string",
            "description": "Description of this catalog"
          },
          "lifecycleStatus": {
            "type": "string",
            "description": "Used to indicate the current lifecycle status"
          },
          "version": {
            "type": "string",
            "description": "Entity version"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "ProductPriceOffering reference. An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased"
      },
      "ProductOfferingRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information."
      },
      "ProductPrice": {
        "required": [
          "billingAccount",
          "description",
          "name",
          "price",
          "priceType",
          "productOfferingPrice",
          "productPriceAlteration",
          "recurringChargePeriod",
          "unitOfMeasure"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "A short descriptive name such as \"Subscription price\"."
          },
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail the semantics of this product price."
          },
          "priceType": {
            "type": "string",
            "description": "A category that describes the price, such as recurring, discount, allowance, penalty, and so forth."
          },
          "recurringChargePeriod": {
            "type": "string",
            "description": "Could be month, week..."
          },
          "unitOfMeasure": {
            "type": "string",
            "description": "Could be minutes, GB..."
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "price": {
            "$ref": "#/components/schemas/Price"
          },
          "productOfferingPrice": {
            "$ref": "#/components/schemas/ProductOfferingPriceRef"
          },
          "productPriceAlteration": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceAlteration"
            }
          }
        },
        "description": "An amount, usually of money, that represents the actual price paid by a Customer for a purchase, a rent or a lease of a Product. The price is valid for a defined period of time."
      },
      "ProductRefOrValue": {
        "required": [
          "agreement",
          "billingAccount",
          "description",
          "href",
          "id",
          "isBundle",
          "isCustomerVisible",
          "name",
          "orderDate",
          "place",
          "productCharacteristic",
          "productOffering",
          "productOrderItem",
          "productPrice",
          "productRelationship",
          "productSerialNumber",
          "productSpecification",
          "productTerm",
          "realizingResource",
          "realizingService",
          "relatedParty",
          "startDate",
          "status",
          "terminationDate"
        ],
        "type": "object",
        "properties": {
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Reference of the product"
          },
          "name": {
            "type": "string",
            "description": "Name of the product. It could be the same as the name of the product offering"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the product"
          },
          "description": {
            "type": "string",
            "description": "Is the description of the product. It could be copied from the description of the Product Offering."
          },
          "isBundle": {
            "type": "boolean",
            "description": "If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering."
          },
          "isCustomerVisible": {
            "type": "boolean",
            "description": "If true, the product is visible by the customer."
          },
          "orderDate": {
            "type": "string",
            "description": "Is the date when the product was ordered",
            "format": "date-time"
          },
          "productSerialNumber": {
            "type": "string",
            "description": "Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router."
          },
          "startDate": {
            "type": "string",
            "description": "Is the date from which the product starts",
            "format": "date-time"
          },
          "terminationDate": {
            "type": "string",
            "description": "Is the date when the product was terminated",
            "format": "date-time"
          },
          "agreement": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItemRef"
            }
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "place": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPlaceRefOrValue"
            }
          },
          "productCharacteristic": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "productOffering": {
            "$ref": "#/components/schemas/ProductOfferingRef"
          },
          "productOrderItem": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductOrderItem"
            }
          },
          "productPrice": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPrice"
            }
          },
          "productRelationship": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRelationship"
            }
          },
          "productSpecification": {
            "$ref": "#/components/schemas/ProductSpecificationRef"
          },
          "productTerm": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductTerm"
            }
          },
          "realizingResource": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceRef"
            }
          },
          "realizingService": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceRef"
            }
          },
          "relatedParty": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "PENDINGACTIVE",
              "CANCELLED",
              "ACTIVE",
              "PENDINGTERMINATE",
              "TERMINATED",
              "SUSPENDED",
              "ABORTED_ "
            ]
          }
        },
        "description": "A product to be created defined by value or existing defined by reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the product entity and not the RelatedProductRefOrValue class itself"
      },
      "ProductRelationship": {
        "required": [
          "product",
          "relationshipType"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "relationshipType": {
            "type": "string",
            "description": "Type of the product relationship, such as [bundled] if the product is a bundle and you want to describe the bundled products inside this bundle; [reliesOn] if the product needs another already owned product to rely on (e.g. an option on an already owned mobile access product) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"
          },
          "product": {
            "$ref": "#/components/schemas/ProductRefOrValue"
          }
        },
        "description": "Linked products to the one instantiate, such as [bundled] if the product is a bundle and you want to describe the bundled products inside this bundle; [reliesOn] if the product needs another already owned product to rely on (e.g. an option on an already owned mobile access product) [targets] or [isTargeted] (depending on the way of expressing the link) for any other kind of links that may be useful"
      },
      "ProductSpecificationRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "lastUpdate": {
            "type": "string",
            "description": "Date and time of the last update"
          },
          "lifecycleStatusEnum": {
            "type": "string",
            "writeOnly": true,
            "enum": [
              "In study",
              "In design",
              "In test",
              "Active",
              "Launched",
              "Retired",
              "Obsolete",
              "Rejected"
            ]
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "description": {
            "type": "string",
            "description": "Description of this catalog"
          },
          "lifecycleStatus": {
            "type": "string",
            "description": "Used to indicate the current lifecycle status"
          },
          "version": {
            "type": "string",
            "description": "Entity version"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "targetProductSchema": {
            "$ref": "#/components/schemas/TargetProductSchema"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role."
      },
      "ProductTerm": {
        "required": [
          "description",
          "duration",
          "name",
          "validFor"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the productTerm"
          },
          "description": {
            "type": "string",
            "description": "Description of the productTerm"
          },
          "duration": {
            "$ref": "#/components/schemas/Quantity"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          }
        },
        "description": "Description of a productTerm linked to this product. This represent a commitment with a duration"
      },
      "Quantity": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Numeric value in a given unit",
            "format": "float"
          },
          "units": {
            "type": "string",
            "description": "Unit"
          }
        },
        "description": "An amount in a given unit"
      },
      "RelatedParty": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "role": {
            "type": "string",
            "description": "Role of the related party."
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "id": {
            "type": "string"
          },
          "extendedInfo": {
            "type": "string"
          }
        },
        "description": "RelatedParty reference. A related party defines party or party role linked to a specific entity."
      },
      "RelatedPlaceRefOrValue": {
        "required": [
          "atReferredType",
          "href",
          "id",
          "name",
          "role"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "atReferredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the place"
          },
          "name": {
            "type": "string",
            "description": "A user-friendly name for the place, such as [Paris Store], [London Store], [Main Home]"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the place"
          },
          "role": {
            "type": "string"
          },
          "@referredType": {
            "type": "string"
          }
        },
        "description": "Related Entity reference. A related place defines a place described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the place entity and not the RelatedPlaceRefOrValue class itself"
      },
      "RelatedProductOrderItem": {
        "required": [
          "orderItemId",
          "productOrderId"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "atBaseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "atSchemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "atType": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "atReferredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "orderItemAction": {
            "type": "string",
            "description": "Action of the order item for this product"
          },
          "orderItemId": {
            "type": "string",
            "description": "Identifier of the order item where the product was managed"
          },
          "productOrderHref": {
            "type": "string",
            "description": "Reference of the related entity."
          },
          "productOrderId": {
            "type": "string",
            "description": "Unique identifier of a related entity."
          },
          "role": {
            "type": "string",
            "description": "role of the product order item for this product"
          },
          "@referredType": {
            "type": "string"
          }
        },
        "description": "RelatedProductOrderItem (ProductOrder item) .The product order item which triggered product creation/change/termination."
      },
      "ResourceRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the supporting resource"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        }
      },
      "ServiceRef": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          },
          "name": {
            "type": "string",
            "description": "Name of the entity"
          },
          "id": {
            "type": "string",
            "description": "Id of the service"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "Service reference, for when Service is used by other entities"
      },
      "TargetProductSchema": {
        "type": "object",
        "properties": {
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Unique reference of the entity"
          }
        },
        "description": "The reference object to the schema and type of target product which is described by product specification"
      },
      "TimePeriod": {
        "type": "object",
        "properties": {
          "endDateTime": {
            "type": "string",
            "description": "End of the time period, using IETC-RFC-3339 format"
          },
          "startDateTime": {
            "type": "string",
            "description": "Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end"
          }
        },
        "description": "A period of time, either as a deadline (endDateTime only) a startDateTime only, or both"
      },
      "Product": {
        "required": [
          "agreement",
          "billingAccount",
          "description",
          "href",
          "id",
          "isBundle",
          "isCustomerVisible",
          "name",
          "orderDate",
          "place",
          "product",
          "productCharacteristic",
          "productOffering",
          "productOrderItem",
          "productPrice",
          "productRelationship",
          "productSerialNumber",
          "productSpecification",
          "productTerm",
          "realizingResource",
          "realizingService",
          "relatedParty",
          "startDate",
          "status",
          "terminationDate"
        ],
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string"
          },
          "@baseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "@type": {
            "type": "string"
          },
          "href": {
            "type": "string",
            "description": "Reference of the product"
          },
          "name": {
            "type": "string",
            "description": "Name of the product. It could be the same as the name of the product offering"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the product"
          },
          "description": {
            "type": "string",
            "description": "Is the description of the product. It could be copied from the description of the Product Offering."
          },
          "isBundle": {
            "type": "boolean",
            "description": "If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering."
          },
          "isCustomerVisible": {
            "type": "boolean",
            "description": "If true, the product is visible by the customer."
          },
          "orderDate": {
            "type": "string",
            "description": "Is the date when the product was ordered",
            "format": "date-time"
          },
          "productSerialNumber": {
            "type": "string",
            "description": "Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router."
          },
          "startDate": {
            "type": "string",
            "description": "Is the date from which the product starts",
            "format": "date-time"
          },
          "terminationDate": {
            "type": "string",
            "description": "Is the date when the product was terminated",
            "format": "date-time"
          },
          "agreement": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItemRef"
            }
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "place": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPlaceRefOrValue"
            }
          },
          "product": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRefOrValue"
            }
          },
          "productCharacteristic": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "productOffering": {
            "$ref": "#/components/schemas/ProductOfferingRef"
          },
          "productOrderItem": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductOrderItem"
            }
          },
          "productPrice": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPrice"
            }
          },
          "productRelationship": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRelationship"
            }
          },
          "productSpecification": {
            "$ref": "#/components/schemas/ProductSpecificationRef"
          },
          "productTerm": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductTerm"
            }
          },
          "realizingResource": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceRef"
            }
          },
          "realizingService": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceRef"
            }
          },
          "relatedParty": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "PENDINGACTIVE",
              "CANCELLED",
              "ACTIVE",
              "PENDINGTERMINATE",
              "TERMINATED",
              "SUSPENDED",
              "ABORTED_ "
            ]
          }
        },
        "description": "A product offering procured by a customer or other interested party playing a party role. A product is realized as one or more service(s) and / or resource(s)."
      },
      "ProductStateChangeEvent": {
        "required": [
          "correlationId",
          "description",
          "domain",
          "event",
          "eventId",
          "eventTime",
          "eventType",
          "href",
          "id",
          "priority",
          "timeOcurred",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the Process flow"
          },
          "href": {
            "type": "string",
            "description": "Reference of the ProcessFlow"
          },
          "eventId": {
            "type": "string",
            "description": "The identifier of the notification."
          },
          "eventTime": {
            "type": "string",
            "description": "Time of the event occurrence.",
            "format": "date-time"
          },
          "eventType": {
            "type": "string",
            "description": "The type of the notification."
          },
          "correlationId": {
            "type": "string",
            "description": "The correlation id for this event."
          },
          "domain": {
            "type": "string",
            "description": "The domain of the event."
          },
          "title": {
            "type": "string",
            "description": "The title of the event."
          },
          "description": {
            "type": "string",
            "description": "An explnatory of the event."
          },
          "priority": {
            "type": "string",
            "description": "A priority."
          },
          "timeOcurred": {
            "type": "string",
            "description": "The time the event occured.",
            "format": "date-time"
          },
          "event": {
            "$ref": "#/components/schemas/ProductStateChangeEventPayload"
          }
        },
        "description": "The event data"
      },
      "ProductStateChangeEventPayload": {
        "required": [
          "product"
        ],
        "type": "object",
        "properties": {
          "product": {
            "$ref": "#/components/schemas/Product"
          }
        },
        "description": "The event data structure"
      },
      "EventSubscription": {
        "required": [
          "callback",
          "id",
          "query"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of the listener"
          },
          "callback": {
            "type": "string",
            "description": "The callback being registered."
          },
          "query": {
            "type": "string",
            "description": "additional data to be passed"
          }
        },
        "description": "Sets the communication endpoint address the service instance must use to deliver notification information"
      },
      "ProductDeleteEvent": {
        "required": [
          "correlationId",
          "description",
          "domain",
          "event",
          "eventId",
          "eventTime",
          "eventType",
          "href",
          "id",
          "priority",
          "timeOcurred",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the Process flow"
          },
          "href": {
            "type": "string",
            "description": "Reference of the ProcessFlow"
          },
          "eventId": {
            "type": "string",
            "description": "The identifier of the notification."
          },
          "eventTime": {
            "type": "string",
            "description": "Time of the event occurrence.",
            "format": "date-time"
          },
          "eventType": {
            "type": "string",
            "description": "The type of the notification."
          },
          "correlationId": {
            "type": "string",
            "description": "The correlation id for this event."
          },
          "domain": {
            "type": "string",
            "description": "The domain of the event."
          },
          "title": {
            "type": "string",
            "description": "The title of the event."
          },
          "description": {
            "type": "string",
            "description": "An explnatory of the event."
          },
          "priority": {
            "type": "string",
            "description": "A priority."
          },
          "timeOcurred": {
            "type": "string",
            "description": "The time the event occured.",
            "format": "date-time"
          },
          "event": {
            "$ref": "#/components/schemas/ProductDeleteEventPayload"
          }
        },
        "description": "The event data"
      },
      "ProductDeleteEventPayload": {
        "required": [
          "product"
        ],
        "type": "object",
        "properties": {
          "product": {
            "$ref": "#/components/schemas/Product"
          }
        },
        "description": "The event data structure"
      },
      "ProductCreateEvent": {
        "required": [
          "correlationId",
          "description",
          "domain",
          "event",
          "eventId",
          "eventTime",
          "eventType",
          "href",
          "id",
          "priority",
          "timeOcurred",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the Process flow"
          },
          "href": {
            "type": "string",
            "description": "Reference of the ProcessFlow"
          },
          "eventId": {
            "type": "string",
            "description": "The identifier of the notification."
          },
          "eventTime": {
            "type": "string",
            "description": "Time of the event occurrence.",
            "format": "date-time"
          },
          "eventType": {
            "type": "string",
            "description": "The type of the notification."
          },
          "correlationId": {
            "type": "string",
            "description": "The correlation id for this event."
          },
          "domain": {
            "type": "string",
            "description": "The domain of the event."
          },
          "title": {
            "type": "string",
            "description": "The title of the event."
          },
          "description": {
            "type": "string",
            "description": "An explnatory of the event."
          },
          "priority": {
            "type": "string",
            "description": "A priority."
          },
          "timeOcurred": {
            "type": "string",
            "description": "The time the event occured.",
            "format": "date-time"
          },
          "event": {
            "$ref": "#/components/schemas/ProductCreateEventPayload"
          }
        },
        "description": "The event data"
      },
      "ProductCreateEventPayload": {
        "required": [
          "product"
        ],
        "type": "object",
        "properties": {
          "product": {
            "$ref": "#/components/schemas/Product"
          }
        },
        "description": "The event data structure"
      },
      "ProductBatchEvent": {
        "required": [
          "correlationId",
          "description",
          "domain",
          "event",
          "eventId",
          "eventTime",
          "eventType",
          "href",
          "id",
          "priority",
          "timeOcurred",
          "title"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the Process flow"
          },
          "href": {
            "type": "string",
            "description": "Reference of the ProcessFlow"
          },
          "eventId": {
            "type": "string",
            "description": "The identifier of the notification."
          },
          "eventTime": {
            "type": "string",
            "description": "Time of the event occurrence.",
            "format": "date-time"
          },
          "eventType": {
            "type": "string",
            "description": "The type of the notification."
          },
          "correlationId": {
            "type": "string",
            "description": "The correlation id for this event."
          },
          "domain": {
            "type": "string",
            "description": "The domain of the event."
          },
          "title": {
            "type": "string",
            "description": "The title of the event."
          },
          "description": {
            "type": "string",
            "description": "An explnatory of the event."
          },
          "priority": {
            "type": "string",
            "description": "A priority."
          },
          "timeOcurred": {
            "type": "string",
            "description": "The time the event occured.",
            "format": "date-time"
          },
          "event": {
            "$ref": "#/components/schemas/ProductBatchEventPayload"
          }
        },
        "description": "The event data"
      },
      "ProductBatchEventPayload": {
        "required": [
          "product"
        ],
        "type": "object",
        "properties": {
          "product": {
            "$ref": "#/components/schemas/Product"
          }
        },
        "description": "The event data structure"
      },
      "ProductAttributeValueChangeEvent": {
        "required": [
          "correlationId",
          "description",
          "domain",
          "event",
          "eventId",
          "eventTime",
          "eventType",
          "fieldPath",
          "priority",
          "timeOcurred",
          "title"
        ],
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "description": "The identifier of the notification."
          },
          "eventTime": {
            "type": "string",
            "description": "Time of the event occurrence.",
            "format": "date-time"
          },
          "eventType": {
            "type": "string",
            "description": "The type of the notification."
          },
          "correlationId": {
            "type": "string",
            "description": "The correlation id for this event."
          },
          "domain": {
            "type": "string",
            "description": "The domain of the event."
          },
          "title": {
            "type": "string",
            "description": "The title of the event."
          },
          "description": {
            "type": "string",
            "description": "An explnatory of the event."
          },
          "priority": {
            "type": "string",
            "description": "A priority."
          },
          "timeOcurred": {
            "type": "string",
            "description": "The time the event occured.",
            "format": "date-time"
          },
          "fieldPath": {
            "type": "string",
            "description": "The path identifying the object field concerned by this notification."
          },
          "event": {
            "$ref": "#/components/schemas/ProductAttributeValueChangeEventPayload"
          }
        },
        "description": "The event data"
      },
      "ProductAttributeValueChangeEventPayload": {
        "required": [
          "product"
        ],
        "type": "object",
        "properties": {
          "product": {
            "$ref": "#/components/schemas/Product"
          }
        },
        "description": "The event data structure"
      },
      "EventSubscriptionInput": {
        "required": [
          "callback",
          "query"
        ],
        "type": "object",
        "properties": {
          "callback": {
            "type": "string",
            "description": "The callback being registered."
          },
          "query": {
            "type": "string",
            "description": "additional data to be passed"
          }
        },
        "description": "Data containing the callback endpoint to deliver the information"
      },
      "ProductUpdate": {
        "required": [
          "agreement",
          "atBaseType",
          "atSchemaLocation",
          "atType",
          "billingAccount",
          "description",
          "isBundle",
          "isCustomerVisible",
          "name",
          "orderDate",
          "place",
          "product",
          "productCharacteristic",
          "productOffering",
          "productOrderItem",
          "productPrice",
          "productRelationship",
          "productSerialNumber",
          "productSpecification",
          "productTerm",
          "realizingResource",
          "realizingService",
          "relatedParty",
          "startDate",
          "status",
          "terminationDate"
        ],
        "type": "object",
        "properties": {
          "atBaseType": {
            "type": "string",
            "description": "When sub-classing, this defines the super-class"
          },
          "atSchemaLocation": {
            "type": "string",
            "description": "A URI to a JSON-Schema file that defines additional attributes and relationships"
          },
          "atType": {
            "type": "string",
            "description": "When sub-classing, this defines the sub-class entity name"
          },
          "description": {
            "type": "string",
            "description": "Is the description of the product. It could be copied from the description of the Product Offering."
          },
          "isBundle": {
            "type": "boolean",
            "description": "If true, the product is a ProductBundle which is an instantiation of a BundledProductOffering. If false, the product is a ProductComponent which is an instantiation of a SimpleProductOffering."
          },
          "isCustomerVisible": {
            "type": "boolean",
            "description": "If true, the product is visible by the customer."
          },
          "name": {
            "type": "string",
            "description": "Name of the product. It could be the same as the name of the product offering"
          },
          "orderDate": {
            "type": "string",
            "description": "Is the date when the product was ordered",
            "format": "date-time"
          },
          "productSerialNumber": {
            "type": "string",
            "description": "Is the serial number for the product. This is typically applicable to tangible products e.g. Broadband Router."
          },
          "startDate": {
            "type": "string",
            "description": "Is the date from which the product starts",
            "format": "date-time"
          },
          "terminationDate": {
            "type": "string",
            "description": "Is the date when the product was terminated",
            "format": "date-time"
          },
          "agreement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItemRef"
            }
          },
          "billingAccount": {
            "$ref": "#/components/schemas/BillingAccountRef"
          },
          "place": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPlaceRefOrValue"
            }
          },
          "product": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRefOrValue"
            }
          },
          "productCharacteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "productOffering": {
            "$ref": "#/components/schemas/ProductOfferingRef"
          },
          "productOrderItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedProductOrderItem"
            }
          },
          "productPrice": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductPrice"
            }
          },
          "productRelationship": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductRelationship"
            }
          },
          "productSpecification": {
            "$ref": "#/components/schemas/ProductSpecificationRef"
          },
          "productTerm": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductTerm"
            }
          },
          "realizingResource": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceRef"
            }
          },
          "realizingService": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceRef"
            }
          },
          "relatedParty": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedParty"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "PENDINGACTIVE",
              "CANCELLED",
              "ACTIVE",
              "PENDINGTERMINATE",
              "TERMINATED",
              "SUSPENDED",
              "ABORTED_ "
            ]
          },
          "@baseType": {
            "type": "string"
          },
          "@schemaLocation": {
            "type": "string"
          },
          "@type": {
            "type": "string"
          }
        },
        "description": "The Product to be updated"
      }
    },
    "securitySchemes": {
      "security_auth": {
        "type": "oauth2",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://portal.openslice.eu/auth/realms/openslice/protocol/openid-connect/auth",
            "tokenUrl": "https://portal.openslice.eu/auth/realms/openslice/protocol/openid-connect/token",
            "scopes": {
              "read": "read scope",
              "write": "write scope"
            }
          }
        }
      }
    }
  }
}