{
  "openapi": "3.0.1",
  "info": {
    "title": "Openslice LCMRules specification API",
    "description": "This is Swagger UI environment for LCM Rules",
    "license": {
      "name": "Apache 2.0",
      "url": "https://osl.etsi.org"
    },
    "version": "4.0.0"
  },
  "externalDocs": {
    "description": "Openslice",
    "url": "https://osl.etsi.org"
  },
  "servers": [
    {
      "url": "https://portal.openslice.eu/tmf-api",
      "description": "Generated server url"
    }
  ],
  "security": [
    {
      "security_auth": []
    }
  ],
  "paths": {
    "/lcmrulesmanagement/v1/lcmRuleSpecification": {
      "get": {
        "tags": [
          "lcmRuleSpecification"
        ],
        "summary": "List or find LCM RuleSpecification objects",
        "description": "This operation list or find LCM RuleSpecification entities",
        "operationId": "listLCMRuleSpecification",
        "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": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "lcmRuleSpecification"
        ],
        "summary": "Creates a LCM RuleSpecification",
        "description": "This operation creates a LCM RuleSpecification entity.",
        "operationId": "createLCMRuleSpecification",
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/LCMRuleSpecificationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "400": {
            "description": "Created",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          }
        }
      }
    },
    "/lcmrulesmanagement/v1/lcmRuleSpecification/{id}": {
      "get": {
        "tags": [
          "lcmRuleSpecification"
        ],
        "summary": "Retrieves a LCM RuleSpecification by ID",
        "description": "This operation retrieves a LCM RuleSpecification entity. Attribute selection is enabled for all first level attributes.",
        "operationId": "retrieveLCMRuleSpecification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the LCM RuleSpecification",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Comma-separated properties to provide in response",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "lcmRuleSpecification"
        ],
        "summary": "Deletes a LCM RuleSpecification",
        "description": "This operation deletes a LCM RuleSpecification entity.",
        "operationId": "deleteLCMRuleSpecification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the RuleSpecification",
            "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": [
          "lcmRuleSpecification"
        ],
        "summary": "Updates partially a LCM RuleSpecification",
        "description": "This operation updates partially a LCM RuleSpecification entity.",
        "operationId": "patchLCMRuleSpecification",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the LCM RuleSpecification",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json;charset=utf-8": {
              "schema": {
                "$ref": "#/components/schemas/LCMRuleSpecificationUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "200": {
            "description": "Updated",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/LCMRuleSpecification"
                }
              }
            }
          }
        }
      }
    },
    "/lcmrulesmanagement/v1/lcmRuleSpecification/serviceSpec/{id}": {
      "get": {
        "tags": [
          "lcmRuleSpecification"
        ],
        "summary": "List or find LCM RuleSpecification objects by Service Specification ID",
        "description": "This operation list or find LCM RuleSpecification entities by SpecID",
        "operationId": "listLCMRuleSpecificationsByServiceSpecID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identifier of the ServiceSpecification Id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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": {
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method Not allowed",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "200": {
            "description": "Success",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json;charset=utf-8": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LCMRuleSpecification"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "LCMRuleSpecificationCreate": {
        "type": "object",
        "properties": {
          "lcmrulephase": {
            "type": "string"
          },
          "serviceSpecs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSpecificationRef"
            }
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "lifecycleStatus": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "@baseType": {
            "type": "string"
          },
          "@schemaLocation": {
            "type": "string"
          },
          "@type": {
            "type": "string"
          }
        },
        "description": "The RuleSpecification to be created"
      },
      "ServiceSpecificationRef": {
        "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"
          },
          "version": {
            "type": "string",
            "description": "Service specification version"
          },
          "targetServiceSchema": {
            "$ref": "#/components/schemas/TargetServiceSchema"
          },
          "@referredType": {
            "type": "string",
            "description": "The actual type of the target instance when needed for disambiguation."
          },
          "id": {
            "type": "string"
          }
        },
        "description": "Service specification reference: ServiceSpecification(s) required to realize a ProductSpecification."
      },
      "TargetServiceSchema": {
        "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"
          }
        },
        "description": "The reference object to the schema and type of target service which is described by service 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"
      },
      "LCMRuleSpecification": {
        "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"
          },
          "lcmrulephase": {
            "type": "string"
          },
          "serviceSpecs": {
            "uniqueItems": true,
            "type": "array",
            "description": "List of service specs associated with this rule",
            "items": {
              "$ref": "#/components/schemas/ServiceSpecificationRef"
            }
          },
          "content": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "A LCM RuleSpecification is an entity that describes a LCM rule to apply during the LCM of a service."
      },
      "LCMRuleSpecificationUpdate": {
        "type": "object",
        "properties": {
          "lcmrulephase": {
            "type": "string"
          },
          "serviceSpecs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSpecificationRef"
            }
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "lifecycleStatus": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "validFor": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "@baseType": {
            "type": "string"
          },
          "@schemaLocation": {
            "type": "string"
          },
          "@type": {
            "type": "string"
          }
        },
        "description": "The LCM RuleSpecification 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"
            }
          }
        }
      }
    }
  }
}