{
  "openapi": "3.0.1",
  "info": {
    "title": "TMF 651 - Agreement Management ",
    "description": "This is Swagger UI environment generated for the TMF Agreement Management specification",
    "license": {
      "name": "Apache 2.0",
      "url": "https://osl.etsi.org"
    },
    "version": "2.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": []
    }
  ],
  "tags": [
    {
      "name": "agreement",
      "description": "the agreement API"
    },
    {
      "name": "agreementSpecification",
      "description": "the agreementSpecification API"
    },
    {
      "name": "hub",
      "description": "the hub API"
    }
  ],
  "paths": {
    "/agreementManagement/v2/hub": {
      "post": {
        "tags": [
          "hub",
          "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": {
              "schema": {
                "$ref": "#/components/schemas/EventSubscriptionInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "400": {
            "description": "Subscribed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventSubscription"
                }
              }
            }
          }
        }
      }
    },
    "/agreementManagement/v2/agreement": {
      "get": {
        "tags": [
          "agreement"
        ],
        "summary": "List or find 'Agreement' objects",
        "operationId": "listAgreement",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "description": "Comma separated properties to display 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": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "agreement"
        ],
        "summary": "Creates a 'Agreement'",
        "operationId": "createAgreement",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgreementCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "400": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          }
        }
      }
    },
    "/agreementManagement/v2/agreementSpecification": {
      "get": {
        "tags": [
          "agreementSpecification"
        ],
        "summary": "List or find 'AgreementSpecification' objects",
        "operationId": "listAgreementSpecification",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "description": "Comma separated properties to display 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": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "agreementSpecification"
        ],
        "summary": "Creates a 'AgreementSpecification'",
        "operationId": "createAgreementSpecification",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgreementSpecificationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "400": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          }
        }
      }
    },
    "/agreementManagement/v2/agreementSpecification/{id}": {
      "get": {
        "tags": [
          "agreementSpecification"
        ],
        "summary": "Retrieves a 'AgreementSpecification' by Id",
        "operationId": "retrieveAgreementSpecification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Agreement Specification",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AgreementSpecification"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "agreementSpecification"
        ],
        "summary": "Deletes a 'AgreementSpecification' by Id",
        "operationId": "deleteAgreementSpecification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Agreement Specification",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "500": {
            "description": "Internal Server Error"
          },
          "204": {
            "description": "Deleted"
          },
          "409": {
            "description": "Conflict"
          },
          "404": {
            "description": "Not Found"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "Bad Request"
          },
          "405": {
            "description": "Method Not allowed"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      },
      "patch": {
        "tags": [
          "agreementSpecification"
        ],
        "summary": "Updates partially a 'AgreementSpecification' by Id",
        "operationId": "patchAgreementSpecification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Agreement Specification",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgreementSpecificationUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreementSpecification"
                }
              }
            }
          }
        }
      }
    },
    "/agreementManagement/v2/agreement/{id}": {
      "get": {
        "tags": [
          "agreement"
        ],
        "summary": "Retrieves a 'Agreement' by Id",
        "operationId": "retrieveAgreement",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Agreement",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Agreement"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "agreement"
        ],
        "summary": "Deletes a 'Agreement' by Id",
        "operationId": "deleteAgreement",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Agreement",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "500": {
            "description": "Internal Server Error"
          },
          "204": {
            "description": "Deleted"
          },
          "409": {
            "description": "Conflict"
          },
          "404": {
            "description": "Not Found"
          },
          "403": {
            "description": "Forbidden"
          },
          "400": {
            "description": "Bad Request"
          },
          "405": {
            "description": "Method Not allowed"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      },
      "patch": {
        "tags": [
          "agreement"
        ],
        "summary": "Updates partially a 'Agreement' by Id",
        "operationId": "patchAgreement",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the Agreement",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AgreementUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "200": {
            "description": "Updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Agreement"
                }
              }
            }
          }
        }
      }
    },
    "/agreementManagement/v2/hub/{id}": {
      "delete": {
        "tags": [
          "hub",
          "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": {
          "500": {
            "description": "Internal Server Error"
          },
          "400": {
            "description": "Bad request"
          },
          "204": {
            "description": "Deleted"
          },
          "405": {
            "description": "Method not allowed"
          },
          "404": {
            "description": "Not Found"
          },
          "403": {
            "description": "Forbidden"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "EventSubscriptionInput": {
        "required": [
          "callback"
        ],
        "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"
      },
      "EventSubscription": {
        "required": [
          "callback",
          "id"
        ],
        "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"
          }
        }
      },
      "AgreementAuthorization": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "signatureRepresentation": {
            "type": "string",
            "description": "Indication that represents whether the signature is a physical paper signature or a digital signature."
          },
          "state": {
            "type": "string",
            "description": "Current status of the authorization, for example in process, approved, rejected."
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          }
        },
        "description": "A business participant that is responsible for approving the agreement."
      },
      "AgreementCreate": {
        "required": [
          "agreementItem",
          "engagedPartyRole",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "agreementPeriod": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "completionDate": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "description": {
            "type": "string",
            "description": "Narrative that explains the agreement and details about the it , such as why the agreement is taking place."
          },
          "documentNumber": {
            "type": "integer",
            "description": "A reference number assigned to an Agreement that follows a prescribed numbering system.",
            "format": "int32"
          },
          "initialDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "A human-readable name for the agreement"
          },
          "statementOfIntent": {
            "type": "string",
            "description": "An overview and goals of the Agreement."
          },
          "status": {
            "type": "string",
            "description": "The current status of the agreement. Typical values are: in process, approved and rejected."
          },
          "type": {
            "type": "string",
            "description": "The type of the agreement. For example \"commercial\"."
          },
          "version": {
            "type": "string",
            "description": "A string identifying the version of the agreement."
          },
          "agreementSpecification": {
            "$ref": "#/components/schemas/AgreementSpecificationRef"
          },
          "agreementItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItem"
            }
          },
          "engagedPartyRole": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartyRoleRef"
            }
          },
          "agreementAuthorization": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementAuthorization"
            }
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "associatedAgreement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementRef"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A link to the schema describing a resource (for type extension)."
          },
          "@baseType": {
            "type": "string",
            "description": "The base type for use in polymorphic collections"
          }
        },
        "description": "The Agreement to be created"
      },
      "AgreementItem": {
        "type": "object",
        "properties": {
          "productOffering": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOfferingRef"
            }
          },
          "termOrCondition": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementTermOrCondition"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          }
        },
        "description": "A part of the agreement expressed in terms of a product offering and possibly including specific terms and conditions."
      },
      "AgreementRef": {
        "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": "Identifier of the agreement"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "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."
      },
      "AgreementSpecificationRef": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail what the agreement specification is about."
          },
          "href": {
            "type": "string",
            "description": "Reference URL of the agreement specification"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the agreement specification"
          },
          "name": {
            "type": "string",
            "description": "Name of the agreement specification"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "AgreementSpecification reference. An AgreementSpecification represents a template of an agreement that can be used when establishing partnerships."
      },
      "AgreementTermOrCondition": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Text that explains the term or condition of the agreement."
          },
          "id": {
            "type": "string",
            "description": "Unique number assigned for reference."
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          }
        },
        "description": "Aspects of the agreement not formally specified elsewhere in the agreement and that cannot be captured elsewhere in a formal notation, or automatically monitored and require a more human level of management."
      },
      "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."
      },
      "PartyRoleRef": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "Reference of the product"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the product"
          },
          "name": {
            "type": "string",
            "description": "The name of the referred party role."
          },
          "partyId": {
            "type": "string",
            "description": "The identifier of the engaged party that is linked to the PartyRole object."
          },
          "partyName": {
            "type": "string",
            "description": "The name of the engaged party that is linked to the PartyRole object."
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "Party role reference. A party role represents the part played by a party in a given context."
      },
      "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."
      },
      "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"
      },
      "Agreement": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "agreementPeriod": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "completionDate": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "description": {
            "type": "string",
            "description": "Narrative that explains the agreement and details about the it , such as why the agreement is taking place."
          },
          "documentNumber": {
            "type": "integer",
            "description": "A reference number assigned to an Agreement that follows a prescribed numbering system.",
            "format": "int32"
          },
          "href": {
            "type": "string",
            "description": "Unique url identifying the agreement as a resource"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier for the agreement"
          },
          "initialDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "A human-readable name for the agreement"
          },
          "statementOfIntent": {
            "type": "string",
            "description": "An overview and goals of the Agreement."
          },
          "status": {
            "type": "string",
            "description": "The current status of the agreement. Typical values are: in process, approved and rejected."
          },
          "type": {
            "type": "string",
            "description": "The type of the agreement. For example \"commercial\"."
          },
          "version": {
            "type": "string",
            "description": "A string identifying the version of the agreement."
          },
          "agreementSpecification": {
            "$ref": "#/components/schemas/AgreementSpecificationRef"
          },
          "agreementItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItem"
            }
          },
          "engagedPartyRole": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartyRoleRef"
            }
          },
          "agreementAuthorization": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementAuthorization"
            }
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "associatedAgreement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementRef"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A link to the schema describing a resource (for type extension)."
          },
          "@baseType": {
            "type": "string",
            "description": "The base type for use in polymorphic collections"
          }
        },
        "description": "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."
      },
      "AgreementAttachment": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "Reference of the attachment"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the attachment"
          },
          "type": {
            "type": "string",
            "description": "Attachment type such as video, picture"
          },
          "url": {
            "type": "string",
            "description": "Uniform Resource Locator, is a web page address (a subset of URI)"
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          }
        },
        "description": "Represents a complementary piece of information to describe the agreement. Could be a document, picture, a video or any kind of multimedia content."
      },
      "AgreementSpecCharacteristic": {
        "type": "object",
        "properties": {
          "configurable": {
            "type": "boolean",
            "description": "If true, the Boolean indicates that the characteristic is configurable"
          },
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail what the characteristic is"
          },
          "name": {
            "type": "string",
            "description": "Name of the characteristic being specified."
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "valueType": {
            "type": "string",
            "description": "A kind of value that the characteristic can take on, such as numeric, text and so forth"
          },
          "specCharacteristicValue": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementSpecCharacteristicValue"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A link to the schema describing a resource (for type extension)."
          }
        },
        "description": "A characteristic quality or distinctive feature of an agreement."
      },
      "AgreementSpecCharacteristicValue": {
        "type": "object",
        "properties": {
          "default": {
            "type": "boolean",
            "description": "Indicates if the value is the default value for a characteristic"
          },
          "unitOfMeasure": {
            "type": "string",
            "description": "Unit of measure for the characteristic, such as minutes, gigabytes (GB) and so on."
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "value": {
            "type": "string",
            "description": "A discrete value that the characteristic can take on"
          },
          "valueFrom": {
            "type": "string",
            "description": "The low range value that a characteristic can take on"
          },
          "valueTo": {
            "type": "string",
            "description": "The upper range value that a characteristic can take on"
          },
          "valueType": {
            "type": "string",
            "description": "A kind of value that the characteristic can take on, such as numeric, text, and so forth"
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          }
        },
        "description": "A number or text that can be assigned to an agreement specification characteristic."
      },
      "AgreementSpecificationCreate": {
        "required": [
          "attachment",
          "name"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail what the agreement specification is about."
          },
          "isBundle": {
            "type": "boolean",
            "description": "Indicates that this agreement specification is a grouping of other agreement specifications. The list of bundled agreement specifications is provided via the specificationRelationship property."
          },
          "lastUpdate": {
            "type": "string",
            "format": "date-time"
          },
          "lifecycleStatus": {
            "type": "string",
            "description": "Indicates the current lifecycle status"
          },
          "name": {
            "type": "string",
            "description": "Name of the agreement specification"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "version": {
            "type": "string",
            "description": "Agreement specification version"
          },
          "serviceCategory": {
            "$ref": "#/components/schemas/CategoryRef"
          },
          "specCharacteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementSpecCharacteristic"
            }
          },
          "relatedParty": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPartyRef"
            }
          },
          "attachment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementAttachment"
            }
          },
          "specificationRelationship": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementSpecificationRelationship"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A link to the schema describing a resource (for type extension)."
          },
          "@baseType": {
            "type": "string",
            "description": "The base type for use in polymorphic collections"
          }
        },
        "description": "The Agreement Specification to be created"
      },
      "AgreementSpecificationRelationship": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "Reference of an agreement specification."
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the related agreement specification."
          },
          "type": {
            "type": "string",
            "description": "Type of relationship such as, substitution or dependency."
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          }
        },
        "description": "A relationship between agreement specifications. Typical relationships are substitution and dependency."
      },
      "CategoryRef": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "Hypertext Reference of the category"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of category"
          },
          "name": {
            "type": "string",
            "description": "Name of the category."
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "The category for grouping recommendations"
      },
      "RelatedPartyRef": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "Reference of the related party, could be a party reference or a party role reference"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of a related party"
          },
          "name": {
            "type": "string",
            "description": "Name of the related party"
          },
          "role": {
            "type": "string",
            "description": "Role of the related party."
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          }
        },
        "description": "RelatedParty reference. A related party defines party or party role linked to a specific entity."
      },
      "AgreementSpecification": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail what the agreement specification is about."
          },
          "href": {
            "type": "string",
            "description": "Reference of the agreement specification"
          },
          "id": {
            "type": "string",
            "description": "Unique identifier of the agreement specification"
          },
          "isBundle": {
            "type": "boolean",
            "description": "Indicates that this agreement specification is a grouping of other agreement specifications. The list of bundled agreement specifications is provided via the specificationRelationship property."
          },
          "lastUpdate": {
            "type": "string",
            "format": "date-time"
          },
          "lifecycleStatus": {
            "type": "string",
            "description": "Indicates the current lifecycle status"
          },
          "name": {
            "type": "string",
            "description": "Name of the agreement specification"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "version": {
            "type": "string",
            "description": "Agreement specification version"
          },
          "serviceCategory": {
            "$ref": "#/components/schemas/CategoryRef"
          },
          "specCharacteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementSpecCharacteristic"
            }
          },
          "relatedParty": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPartyRef"
            }
          },
          "attachment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementAttachment"
            }
          },
          "specificationRelationship": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementSpecificationRelationship"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A link to the schema describing a resource (for type extension)."
          },
          "@baseType": {
            "type": "string",
            "description": "The base type for use in polymorphic collections"
          }
        },
        "description": "A template of an agreement that can be used when establishing partnerships."
      },
      "AgreementSpecificationUpdate": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A narrative that explains in detail what the agreement specification is about."
          },
          "isBundle": {
            "type": "boolean",
            "description": "Indicates that this agreement specification is a grouping of other agreement specifications. The list of bundled agreement specifications is provided via the specificationRelationship property."
          },
          "lastUpdate": {
            "type": "string",
            "format": "date-time"
          },
          "lifecycleStatus": {
            "type": "string",
            "description": "Indicates the current lifecycle status"
          },
          "name": {
            "type": "string",
            "description": "Name of the agreement specification"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "version": {
            "type": "string",
            "description": "Agreement specification version"
          },
          "serviceCategory": {
            "$ref": "#/components/schemas/CategoryRef"
          },
          "specCharacteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementSpecCharacteristic"
            }
          },
          "relatedParty": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPartyRef"
            }
          },
          "attachment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementAttachment"
            }
          },
          "specificationRelationship": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementSpecificationRelationship"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A link to the schema describing a resource (for type extension)."
          },
          "@baseType": {
            "type": "string",
            "description": "The base type for use in polymorphic collections"
          }
        },
        "description": "The Agreement Specification to be updated"
      },
      "AgreementUpdate": {
        "type": "object",
        "properties": {
          "agreementPeriod": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "description": {
            "type": "string",
            "description": "Narrative that explains the agreement and details about the it , such as why the agreement is taking place."
          },
          "documentNumber": {
            "type": "integer",
            "description": "A reference number assigned to an Agreement that follows a prescribed numbering system.",
            "format": "int32"
          },
          "initialDate": {
            "type": "string",
            "format": "date-time"
          },
          "name": {
            "type": "string",
            "description": "A human-readable name for the agreement"
          },
          "statementOfIntent": {
            "type": "string",
            "description": "An overview and goals of the Agreement."
          },
          "status": {
            "type": "string",
            "description": "The current status of the agreement. Typical values are: in process, approved and rejected."
          },
          "type": {
            "type": "string",
            "description": "The type of the agreement. For example \"commercial\"."
          },
          "version": {
            "type": "string",
            "description": "A string identifying the version of the agreement."
          },
          "agreementSpecification": {
            "$ref": "#/components/schemas/AgreementSpecificationRef"
          },
          "agreementItem": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementItem"
            }
          },
          "engagedPartyRole": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartyRoleRef"
            }
          },
          "agreementAuthorization": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementAuthorization"
            }
          },
          "characteristic": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Characteristic"
            }
          },
          "associatedAgreement": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreementRef"
            }
          },
          "@type": {
            "type": "string",
            "description": "The class type of the actual resource (for type extension)."
          },
          "@schemaLocation": {
            "type": "string",
            "description": "A link to the schema describing a resource (for type extension)."
          },
          "@baseType": {
            "type": "string",
            "description": "The base type for use in polymorphic collections"
          }
        },
        "description": "The Agreement 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"
            }
          }
        }
      }
    }
  }
}