{
  "openapi": "3.1.0",
  "info": {
    "title": "Paramify REST API Documentation",
    "version": "0.2.0",
    "description": "This is the REST API documentation for the Paramify application."
  },
  "servers": [
    {
      "url": "https://app.paramify.com/api/v0",
      "description": "The production server for the Paramify application."
    }
  ],
  "security": [
    {
      "authorization": [],
      "apiKey_DEPRECATED": []
    }
  ],
  "paths": {
    "/projects": {
      "get": {
        "tags": [
          "Projects (\"Programs\" in the Paramify application)"
        ],
        "operationId": "getProjects",
        "summary": "Get all projects accessible to the api key.",
        "description": "Returns all projects accessible to the api key. These are referred to as `Programs` in the Paramify application.The `id` value of any of the projects listed is referred to as the `projectId` query parameter in other routes or request bodies.",
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "getProjects": {
                "$ref": "#/components/links/getProjects"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projects": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProjectResponseObject"
                      }
                    }
                  },
                  "required": [
                    "projects"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/projects/{projectId}": {
      "get": {
        "tags": [
          "Projects (\"Programs\" in the Paramify application)"
        ],
        "operationId": "getProjectById",
        "summary": "Get the project specified by the projectId.",
        "description": "Returns the project specified by the `projectId` query parameter and accessible to the api key. A project is called a `Program` in the Paramify application.The `id` value of the project returned can be used as the `projectId` parameter in other routes or request bodies.",
        "parameters": [
          {
            "in": "path",
            "name": "projectId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "getProjectById": {
                "$ref": "#/components/links/getProjectById"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectResponseObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues": {
      "get": {
        "tags": [
          "Issues"
        ],
        "operationId": "getIssues",
        "summary": "Get issues within a project filterable by query parameters.",
        "description": "Gets all issues within the project specified by the query parameter `projectId`, and optionally filtered by `poamId` or `id`. A specific issue can also be retrieved by id without the projectId.",
        "parameters": [
          {
            "in": "query",
            "name": "projectId",
            "description": "An id that represents a project within the Paramify application.",
            "schema": {
              "$ref": "#/components/schemas/projectId"
            }
          },
          {
            "in": "query",
            "name": "poamId",
            "description": "A user defined identifier for this issue. If used, the projectId is required.",
            "schema": {
              "$ref": "#/components/schemas/poamId"
            }
          },
          {
            "in": "query",
            "name": "id",
            "description": "An id that represents an issue within the Paramify application.",
            "schema": {
              "$ref": "#/components/schemas/issueId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "getIssues": {
                "$ref": "#/components/links/getIssues"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "issues": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/IssueResponseObject"
                      }
                    }
                  },
                  "required": [
                    "issues"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "post": {
        "tags": [
          "Issues"
        ],
        "operationId": "postIssue",
        "summary": "Create a new issue",
        "description": "Creates a new issue within the project specified by the request body's `projectId`. The `id` value of the issue returned can be used as the `issueId` parameter in other routes or request bodies.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "A uuid that uniquely identifies the project this issue is associated with",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "The title of the issue",
                    "example": "Issue Title Example"
                  },
                  "poamId": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "A user defined identifier for this issue",
                    "example": "FED-1"
                  },
                  "originalLevel": {
                    "type": "string",
                    "enum": [
                      "LOW",
                      "MODERATE",
                      "HIGH",
                      "CRITICAL"
                    ],
                    "description": "The original risk level of the issue",
                    "example": "HIGH"
                  },
                  "pointOfContact": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255
                      },
                      "email": {
                        "type": "string",
                        "format": "email"
                      }
                    },
                    "required": [
                      "name",
                      "email"
                    ],
                    "description": "The point of contact for the issue",
                    "example": {
                      "name": "John Doe",
                      "email": "john@example.com"
                    }
                  },
                  "pluginId": {
                    "type": "string",
                    "description": "The plugin id associated with the issue",
                    "example": "plugin-123"
                  },
                  "cveIds": {
                    "type": [
                      "array",
                      "null"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "description": "The CVE IDs associated with the issue",
                    "example": [
                      "CVE-2022-1234"
                    ]
                  },
                  "links": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ]
                    },
                    "description": "Links associated with the issue",
                    "example": [
                      {
                        "title": "link1",
                        "url": "https://example.com/link1"
                      },
                      {
                        "title": "link2",
                        "url": "https://example.com/link2"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "OPEN",
                      "CLOSED"
                    ],
                    "description": "The current status of the issue",
                    "example": "OPEN"
                  },
                  "statusDate": {
                    "type": "string",
                    "description": "The date the current status was set",
                    "example": "2022-01-01T00:00:00.000Z"
                  },
                  "origins": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 255
                        },
                        "subtype": {
                          "type": "string",
                          "enum": [
                            "COM_AGREEMENT",
                            "COM_CUSTOMER_MANAGED",
                            "COM_FEDRAMP_SYSTEM",
                            "COM_HARDWARE",
                            "COM_IAAS",
                            "COM_INTERCONNECTION",
                            "COM_PAAS",
                            "COM_PLAN",
                            "COM_POLICY",
                            "COM_PROCEDURE",
                            "COM_PROCESS",
                            "COM_SAAS",
                            "COM_SERVICE",
                            "COM_SOFTWARE",
                            "COM_SUBNET",
                            "COM_VALIDATION",
                            "COM_STACK_PARAMETER",
                            "PAR_ORGANIZATION",
                            "PAR_PERSON",
                            "ROL_NO_LOGICAL_ACCESS",
                            "ROL_NOT_PRIVILEGED",
                            "ROL_PRIVILEGED",
                            "LOC_CAMPUS",
                            "LOC_DATA_CENTER",
                            "LOC_DATA_REGION_CLOUD",
                            "LOC_OTHER",
                            "LOC_REMOTE",
                            "DAT_ACCOUNT_DATA",
                            "DAT_CUSTOMER_DATA",
                            "DAT_METADATA",
                            "DAT_SUPPORT_ADMIN"
                          ]
                        }
                      },
                      "required": [
                        "name",
                        "subtype"
                      ],
                      "description": "The name and subtype of the element within Paramify that created the issue",
                      "example": {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    },
                    "description": "The origins of the issue",
                    "example": [
                      {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    ]
                  },
                  "requirements": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The requirements associated with the issue",
                    "example": [
                      "AC-1 Part a2",
                      "AC-2 Part b"
                    ]
                  },
                  "assets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The assets associated with the issue",
                    "example": [
                      "10.0.0.2",
                      "asset2"
                    ]
                  },
                  "dueDate": {
                    "type": "string",
                    "description": "The date the issue is due",
                    "example": "2022-01-01T00:00:00.000Z"
                  },
                  "description": {
                    "type": "string",
                    "description": "Text describing the issue",
                    "example": "This is a detailed description of the issue."
                  },
                  "remediationDescription": {
                    "type": "string",
                    "description": "Description of the remediation for the issue",
                    "example": "This is a detailed description of the remediation."
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "CONTROL",
                      "VULNERABILITY",
                      "DOCUMENTATION",
                      "CONFIGURATION",
                      "NOT_SET"
                    ],
                    "description": "The type of observation for the issue",
                    "example": "CONTROL"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "The date the issue was created",
                    "example": "2022-01-01T00:00:00.000Z"
                  },
                  "deviations": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "description": {
                          "type": "string",
                          "description": "The description of the deviation"
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "TEST",
                            "EXAMINE",
                            "INTERVIEW",
                            "UNKNOWN"
                          ]
                        },
                        "type": {
                          "$ref": "#/components/schemas/DeviationObservationTypes"
                        },
                        "createdAt": {
                          "type": "string",
                          "description": "The date the deviation was created",
                          "example": "2022-01-01T00:00:00.000Z"
                        },
                        "deviationMetadata": {
                          "type": "object",
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "PENDING",
                                "ACCEPTED",
                                "REJECTED"
                              ]
                            },
                            "adjustedLevel": {
                              "type": "string",
                              "enum": [
                                "LOW",
                                "MODERATE",
                                "HIGH",
                                "CRITICAL"
                              ]
                            }
                          },
                          "required": [
                            "status"
                          ],
                          "description": "Deviation schema"
                        }
                      },
                      "required": [
                        "description",
                        "method",
                        "type",
                        "createdAt",
                        "deviationMetadata"
                      ]
                    },
                    "description": "The deviations associated with the issue",
                    "example": [
                      {
                        "description": "Deviation description",
                        "method": "TEST",
                        "type": "VENDOR_DEPENDENCY",
                        "createdAt": "2022-01-01T00:00:00Z",
                        "deviationMetadata": {
                          "status": "PENDING",
                          "adjustedLevel": "MODERATE"
                        }
                      }
                    ]
                  },
                  "recommendations": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "description": {
                          "type": "string",
                          "description": "The description of the recommendation",
                          "example": "This is a detailed description of the recommendation."
                        },
                        "origins": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                              },
                              "subtype": {
                                "type": "string",
                                "enum": [
                                  "COM_AGREEMENT",
                                  "COM_CUSTOMER_MANAGED",
                                  "COM_FEDRAMP_SYSTEM",
                                  "COM_HARDWARE",
                                  "COM_IAAS",
                                  "COM_INTERCONNECTION",
                                  "COM_PAAS",
                                  "COM_PLAN",
                                  "COM_POLICY",
                                  "COM_PROCEDURE",
                                  "COM_PROCESS",
                                  "COM_SAAS",
                                  "COM_SERVICE",
                                  "COM_SOFTWARE",
                                  "COM_SUBNET",
                                  "COM_VALIDATION",
                                  "COM_STACK_PARAMETER",
                                  "PAR_ORGANIZATION",
                                  "PAR_PERSON",
                                  "ROL_NO_LOGICAL_ACCESS",
                                  "ROL_NOT_PRIVILEGED",
                                  "ROL_PRIVILEGED",
                                  "LOC_CAMPUS",
                                  "LOC_DATA_CENTER",
                                  "LOC_DATA_REGION_CLOUD",
                                  "LOC_OTHER",
                                  "LOC_REMOTE",
                                  "DAT_ACCOUNT_DATA",
                                  "DAT_CUSTOMER_DATA",
                                  "DAT_METADATA",
                                  "DAT_SUPPORT_ADMIN"
                                ]
                              }
                            },
                            "required": [
                              "name",
                              "subtype"
                            ],
                            "description": "The name and subtype of the element within Paramify that created the issue",
                            "example": {
                              "name": "Qualys",
                              "subtype": "COM_SAAS"
                            }
                          },
                          "description": "The origins of the recommendation",
                          "example": [
                            {
                              "name": "Qualys",
                              "subtype": "COM_SAAS"
                            }
                          ]
                        }
                      },
                      "required": [
                        "description"
                      ]
                    },
                    "description": "The recommendations associated with the issue",
                    "example": [
                      {
                        "description": "Recommendation description",
                        "origins": [
                          {
                            "name": "Qualys",
                            "subtype": "COM_SAAS"
                          }
                        ]
                      }
                    ]
                  },
                  "milestones": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/MilestoneObject"
                    },
                    "description": "The milestones associated with the issue",
                    "example": [
                      {
                        "title": "Milestone title",
                        "description": "Milestone description",
                        "dueStart": "2022-01-01T00:00:00.000Z",
                        "dueEnd": "2022-01-01T00:00:00.000Z"
                      }
                    ]
                  }
                },
                "required": [
                  "projectId",
                  "title",
                  "originalLevel",
                  "statusDate",
                  "type",
                  "createdAt"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "postIssue": {
                "$ref": "#/components/links/postIssue"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueResponseObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues/{issueId}": {
      "get": {
        "tags": [
          "Issues"
        ],
        "operationId": "getIssueById",
        "summary": "Gets the issue specified by the issueId",
        "description": "Returns the issue specified by the `issueId` query parameter and accessible to the api key. The `id` value of the issue returned can be used as the `issueId` parameter in other routes or request bodies.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueResponseObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "patch": {
        "tags": [
          "Issues"
        ],
        "operationId": "patchIssueById",
        "summary": "Updates the issue specified by the issueId",
        "description": "Updates the issue specified by the `issueId`. Upon successful operation, all fields that are not arrays will be overwritten. Fields that accept array values will add the provided values to the existing values.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectId": {
                    "type": "string",
                    "description": "A uuid that uniquely identifies the project this issue is associated with",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "The title of the issue",
                    "example": "Issue Title Example"
                  },
                  "poamId": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "A user defined identifier for this issue",
                    "example": "FED-1"
                  },
                  "originalLevel": {
                    "type": "string",
                    "enum": [
                      "LOW",
                      "MODERATE",
                      "HIGH",
                      "CRITICAL"
                    ],
                    "description": "The original risk level of the issue",
                    "example": "HIGH"
                  },
                  "pointOfContact": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255
                      },
                      "email": {
                        "type": "string",
                        "format": "email"
                      }
                    },
                    "required": [
                      "name",
                      "email"
                    ],
                    "description": "The point of contact for the issue",
                    "example": {
                      "name": "John Doe",
                      "email": "john@example.com"
                    }
                  },
                  "pluginId": {
                    "type": "string",
                    "description": "The plugin id associated with the issue",
                    "example": "plugin-123"
                  },
                  "cveIds": {
                    "type": [
                      "array",
                      "null"
                    ],
                    "items": {
                      "type": "string"
                    },
                    "description": "The CVE IDs associated with the issue",
                    "example": [
                      "CVE-2022-1234"
                    ]
                  },
                  "links": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ]
                    },
                    "description": "Links associated with the issue",
                    "example": [
                      {
                        "title": "link1",
                        "url": "https://example.com/link1"
                      },
                      {
                        "title": "link2",
                        "url": "https://example.com/link2"
                      }
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "OPEN",
                      "CLOSED"
                    ],
                    "description": "The current status of the issue",
                    "example": "OPEN"
                  },
                  "statusDate": {
                    "type": "string",
                    "description": "The date the current status was set",
                    "example": "2022-01-01T00:00:00.000Z"
                  },
                  "origins": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 255
                        },
                        "subtype": {
                          "type": "string",
                          "enum": [
                            "COM_AGREEMENT",
                            "COM_CUSTOMER_MANAGED",
                            "COM_FEDRAMP_SYSTEM",
                            "COM_HARDWARE",
                            "COM_IAAS",
                            "COM_INTERCONNECTION",
                            "COM_PAAS",
                            "COM_PLAN",
                            "COM_POLICY",
                            "COM_PROCEDURE",
                            "COM_PROCESS",
                            "COM_SAAS",
                            "COM_SERVICE",
                            "COM_SOFTWARE",
                            "COM_SUBNET",
                            "COM_VALIDATION",
                            "COM_STACK_PARAMETER",
                            "PAR_ORGANIZATION",
                            "PAR_PERSON",
                            "ROL_NO_LOGICAL_ACCESS",
                            "ROL_NOT_PRIVILEGED",
                            "ROL_PRIVILEGED",
                            "LOC_CAMPUS",
                            "LOC_DATA_CENTER",
                            "LOC_DATA_REGION_CLOUD",
                            "LOC_OTHER",
                            "LOC_REMOTE",
                            "DAT_ACCOUNT_DATA",
                            "DAT_CUSTOMER_DATA",
                            "DAT_METADATA",
                            "DAT_SUPPORT_ADMIN"
                          ]
                        }
                      },
                      "required": [
                        "name",
                        "subtype"
                      ],
                      "description": "The name and subtype of the element within Paramify that created the issue",
                      "example": {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    },
                    "description": "The origins of the issue",
                    "example": [
                      {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    ]
                  },
                  "requirements": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The requirements associated with the issue",
                    "example": [
                      "AC-1 Part a2",
                      "AC-2 Part b"
                    ]
                  },
                  "assets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The assets associated with the issue",
                    "example": [
                      "10.0.0.2",
                      "asset2"
                    ]
                  },
                  "dueDate": {
                    "type": "string",
                    "description": "The date the issue is due",
                    "example": "2022-01-01T00:00:00.000Z"
                  },
                  "description": {
                    "type": "string",
                    "description": "Text describing the issue",
                    "example": "This is a detailed description of the issue."
                  },
                  "remediationDescription": {
                    "type": "string",
                    "description": "Description of the remediation for the issue",
                    "example": "This is a detailed description of the remediation."
                  },
                  "type": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/IssueObservationTypes"
                      },
                      {
                        "description": "The type of observation for the issue",
                        "example": "CONTROL"
                      }
                    ]
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "The date the issue was created",
                    "example": "2022-01-01T00:00:00Z"
                  },
                  "deviations": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "description": {
                          "type": "string",
                          "minLength": 1
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "TEST",
                            "EXAMINE",
                            "INTERVIEW",
                            "UNKNOWN"
                          ]
                        },
                        "type": {
                          "$ref": "#/components/schemas/DeviationObservationTypes"
                        },
                        "createdAt": {
                          "type": "string",
                          "description": "The date the deviation was created",
                          "example": "2022-01-01T00:00:00.000Z"
                        },
                        "deviationMetadata": {
                          "$ref": "#/components/schemas/DeviationMetadataObject"
                        }
                      }
                    },
                    "description": "The deviations associated with the issue",
                    "example": [
                      {
                        "id": "123e4567-e89b-12d3-a456-426614174000",
                        "description": "Deviation description",
                        "method": "TEST",
                        "type": "VENDOR_DEPENDENCY",
                        "createdAt": "2022-01-01T00:00:00Z",
                        "deviationMetadata": {
                          "status": "PENDING",
                          "adjustedLevel": "MODERATE"
                        }
                      }
                    ]
                  },
                  "recommendations": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "A uuid that uniquely identifies the recommendation",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "description": {
                          "type": "string",
                          "description": "The description of the recommendation",
                          "example": "This is a detailed description of the recommendation."
                        },
                        "origins": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                              },
                              "subtype": {
                                "type": "string",
                                "enum": [
                                  "COM_AGREEMENT",
                                  "COM_CUSTOMER_MANAGED",
                                  "COM_FEDRAMP_SYSTEM",
                                  "COM_HARDWARE",
                                  "COM_IAAS",
                                  "COM_INTERCONNECTION",
                                  "COM_PAAS",
                                  "COM_PLAN",
                                  "COM_POLICY",
                                  "COM_PROCEDURE",
                                  "COM_PROCESS",
                                  "COM_SAAS",
                                  "COM_SERVICE",
                                  "COM_SOFTWARE",
                                  "COM_SUBNET",
                                  "COM_VALIDATION",
                                  "COM_STACK_PARAMETER",
                                  "PAR_ORGANIZATION",
                                  "PAR_PERSON",
                                  "ROL_NO_LOGICAL_ACCESS",
                                  "ROL_NOT_PRIVILEGED",
                                  "ROL_PRIVILEGED",
                                  "LOC_CAMPUS",
                                  "LOC_DATA_CENTER",
                                  "LOC_DATA_REGION_CLOUD",
                                  "LOC_OTHER",
                                  "LOC_REMOTE",
                                  "DAT_ACCOUNT_DATA",
                                  "DAT_CUSTOMER_DATA",
                                  "DAT_METADATA",
                                  "DAT_SUPPORT_ADMIN"
                                ]
                              }
                            },
                            "required": [
                              "name",
                              "subtype"
                            ],
                            "description": "The name and subtype of the element within Paramify that created the issue",
                            "example": {
                              "name": "Qualys",
                              "subtype": "COM_SAAS"
                            }
                          },
                          "description": "The origins of the recommendation",
                          "example": [
                            {
                              "name": "Qualys",
                              "subtype": "COM_SAAS"
                            }
                          ]
                        }
                      }
                    },
                    "description": "The recommendations associated with the issue",
                    "example": [
                      {
                        "id": "123e4567-e89b-12d3-a456-426614174000",
                        "description": "Recommendation description",
                        "origins": [
                          {
                            "name": "Qualys",
                            "subtype": "COM_SAAS"
                          }
                        ]
                      }
                    ]
                  },
                  "milestones": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "A uuid that uniquely identifies the milestone",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "title": {
                          "type": "string",
                          "description": "The title of the milestone",
                          "example": "Task Title Example"
                        },
                        "description": {
                          "type": "string",
                          "description": "The description of the milestone",
                          "example": "This is a detailed description of the milestone."
                        },
                        "dueStart": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "The start date of the milestone",
                          "example": "2022-01-01T00:00:00.000Z"
                        },
                        "dueEnd": {
                          "type": "string",
                          "description": "The end date of the milestone",
                          "example": "2022-01-01T00:00:00.000Z"
                        }
                      }
                    },
                    "description": "The milestones associated with the issue",
                    "example": [
                      {
                        "id": "123e4567-e89b-12d3-a456-426614174000",
                        "title": "Milestone title",
                        "description": "Milestone description",
                        "dueStart": "2022-01-01T00:00:00.000Z",
                        "dueEnd": "2022-01-01T00:00:00.000Z"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "A uuid that uniquely identifies an individual issue within Paramify",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "title": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255,
                      "description": "The title of the issue",
                      "example": "Issue Title Example"
                    },
                    "poamId": {
                      "type": "string",
                      "maxLength": 255,
                      "description": "A user defined identifier for this issue",
                      "example": "FED-1"
                    },
                    "level": {
                      "type": "string",
                      "enum": [
                        "LOW",
                        "MODERATE",
                        "HIGH",
                        "CRITICAL"
                      ],
                      "description": "The current risk level of the issue",
                      "example": "MODERATE"
                    },
                    "originalLevel": {
                      "type": "string",
                      "enum": [
                        "LOW",
                        "MODERATE",
                        "HIGH",
                        "CRITICAL"
                      ],
                      "description": "The original risk level of the issue",
                      "example": "HIGH"
                    },
                    "pointOfContact": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 255
                        },
                        "email": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "email"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "description": "The point of contact for the issue",
                      "example": {
                        "name": "John Doe",
                        "email": "john@example.com"
                      }
                    },
                    "pluginId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The plugin id associated with the issue",
                      "example": "plugin-123"
                    },
                    "cveIds": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "string"
                      },
                      "description": "The CVE IDs associated with the issue",
                      "example": [
                        "CVE-2022-1234"
                      ]
                    },
                    "links": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "object",
                        "properties": {
                          "url": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ]
                      },
                      "description": "Links associated with the issue",
                      "example": [
                        {
                          "title": "link1",
                          "url": "https://example.com/link1"
                        },
                        {
                          "title": "link2",
                          "url": "https://example.com/link2"
                        }
                      ]
                    },
                    "status": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "OPEN",
                        "CLOSED"
                      ],
                      "description": "The current status of the issue",
                      "example": "OPEN"
                    },
                    "statusDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The date the current status was set",
                      "example": "2022-01-01T00:00:00.000Z"
                    },
                    "origins": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/OriginObject"
                      },
                      "description": "The origins of the issue",
                      "example": [
                        {
                          "name": "Qualys",
                          "subtype": "COM_SAAS"
                        }
                      ]
                    },
                    "requirements": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "string"
                      },
                      "description": "The requirements associated with the issue",
                      "example": [
                        "AC-1 Part a2",
                        "AC-2 Part b"
                      ]
                    },
                    "assets": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "string"
                      },
                      "description": "The assets associated with the issue",
                      "example": [
                        "10.0.0.2",
                        "asset2"
                      ]
                    },
                    "dueDate": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The date the issue is due",
                      "example": "2022-01-01T00:00:00.000Z"
                    },
                    "description": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Text describing the issue",
                      "example": "This is a detailed description of the issue."
                    },
                    "remediationDescription": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Description of the remediation for the issue",
                      "example": "This is a detailed description of the remediation."
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "CONTROL",
                        "VULNERABILITY",
                        "DOCUMENTATION",
                        "CONFIGURATION",
                        "NOT_SET"
                      ],
                      "description": "The type of observation for the issue",
                      "example": "CONTROL"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "The date the issue was created",
                      "example": "2022-01-01T00:00:00Z"
                    },
                    "deviations": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/DeviationResponseObject"
                      },
                      "description": "The deviations associated with the issue",
                      "example": [
                        {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "description": "Deviation description",
                          "method": "TEST",
                          "type": "VENDOR_DEPENDENCY",
                          "createdAt": "2022-01-01T00:00:00Z",
                          "deviationMetadata": {
                            "status": "PENDING",
                            "adjustedLevel": "MODERATE"
                          }
                        }
                      ]
                    },
                    "recommendations": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "$ref": "#/components/schemas/RecommendationResponseObject"
                      },
                      "description": "The recommendations associated with the issue",
                      "example": [
                        {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "description": "Recommendation description",
                          "origins": [
                            {
                              "name": "Qualys",
                              "subtype": "COM_SAAS"
                            }
                          ],
                          "issueId": "123e4567-e89b-12d3-a456-426614174000"
                        }
                      ]
                    },
                    "milestones": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "A uuid that uniquely identifies the milestone",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "title": {
                            "type": "string",
                            "description": "The title of the milestone",
                            "example": "Milestone Title Example"
                          },
                          "description": {
                            "type": "string",
                            "description": "The description of the milestone",
                            "example": "This is a detailed description of the milestone."
                          },
                          "dueStart": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "The start date of the milestone",
                            "example": "2022-01-01T00:00:00.000Z"
                          },
                          "dueEnd": {
                            "type": "string",
                            "description": "The end date of the milestone",
                            "example": "2022-01-01T00:00:00.000Z"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "description",
                          "dueEnd"
                        ]
                      },
                      "description": "The milestones associated with the issue",
                      "example": [
                        {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "title": "Milestone title",
                          "description": "Milestone description",
                          "dueStart": "2022-01-01T00:00:00.000Z",
                          "dueEnd": "2022-01-01T00:00:00.000Z"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "poamId",
                    "level",
                    "originalLevel",
                    "type",
                    "createdAt"
                  ],
                  "description": "The issue as it exists after the operation"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "delete": {
        "tags": [
          "Issues"
        ],
        "operationId": "deleteIssueById",
        "summary": "Deletes the issue specified by the issueId",
        "description": "Deletes the issue specified by the `issueId` query parameter. Warning: This action is irreversible.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues/{issueId}/recommendations": {
      "get": {
        "tags": [
          "Recommendations"
        ],
        "operationId": "getRecommendations",
        "summary": "Get all recommendations for the specified issue",
        "description": "Gets all recommendations within the issue specified by the `issueId`, and optionally filtered by `id`. The `id` value of the recommendation(s) returned can be used as the `recommendationId` parameter in other routes or request bodies.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "id",
            "description": "Filter recommendations by ID. Multiple IDs can be provided to retrieve multiple recommendations at once.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/recommendationId"
              },
              "description": "Filter recommendations by ID. Multiple IDs can be provided to retrieve multiple recommendations at once.",
              "example": [
                "251b4a27-cf85-416d-8364-9c59c1ad0ed5",
                "251b4a27-cf85-416d-8364-9c59c1ad0ed6"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "links": {
              "getRecommendations": {
                "$ref": "#/components/links/getRecommendations"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "recommendations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RecommendationResponseObject"
                      }
                    }
                  },
                  "required": [
                    "recommendations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "post": {
        "tags": [
          "Recommendations"
        ],
        "operationId": "postRecommendation",
        "summary": "Create a new recommendation on the specified issue",
        "description": "Creates a new recommendation within the issue specified by the  `issueId`. The `id` value of the recommendation returned can be used as the `recommendationId` parameter in other routes or request bodies.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string",
                    "description": "The description of the recommendation",
                    "example": "This is a detailed description of the recommendation."
                  },
                  "origins": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 255
                        },
                        "subtype": {
                          "type": "string",
                          "enum": [
                            "COM_AGREEMENT",
                            "COM_CUSTOMER_MANAGED",
                            "COM_FEDRAMP_SYSTEM",
                            "COM_HARDWARE",
                            "COM_IAAS",
                            "COM_INTERCONNECTION",
                            "COM_PAAS",
                            "COM_PLAN",
                            "COM_POLICY",
                            "COM_PROCEDURE",
                            "COM_PROCESS",
                            "COM_SAAS",
                            "COM_SERVICE",
                            "COM_SOFTWARE",
                            "COM_SUBNET",
                            "COM_VALIDATION",
                            "COM_STACK_PARAMETER",
                            "PAR_ORGANIZATION",
                            "PAR_PERSON",
                            "ROL_NO_LOGICAL_ACCESS",
                            "ROL_NOT_PRIVILEGED",
                            "ROL_PRIVILEGED",
                            "LOC_CAMPUS",
                            "LOC_DATA_CENTER",
                            "LOC_DATA_REGION_CLOUD",
                            "LOC_OTHER",
                            "LOC_REMOTE",
                            "DAT_ACCOUNT_DATA",
                            "DAT_CUSTOMER_DATA",
                            "DAT_METADATA",
                            "DAT_SUPPORT_ADMIN"
                          ]
                        }
                      },
                      "required": [
                        "name",
                        "subtype"
                      ],
                      "description": "The name and subtype of the element within Paramify that created the issue",
                      "example": {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    },
                    "description": "The origins of the recommendation",
                    "example": [
                      {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    ]
                  }
                },
                "required": [
                  "description"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 OK",
            "links": {
              "postRecommendation": {
                "$ref": "#/components/links/postRecommendation"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "description": {
                      "type": "string",
                      "description": "The description of the recommendation",
                      "example": "This is a detailed description of the recommendation."
                    },
                    "origins": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 255
                          },
                          "subtype": {
                            "type": "string",
                            "enum": [
                              "COM_AGREEMENT",
                              "COM_CUSTOMER_MANAGED",
                              "COM_FEDRAMP_SYSTEM",
                              "COM_HARDWARE",
                              "COM_IAAS",
                              "COM_INTERCONNECTION",
                              "COM_PAAS",
                              "COM_PLAN",
                              "COM_POLICY",
                              "COM_PROCEDURE",
                              "COM_PROCESS",
                              "COM_SAAS",
                              "COM_SERVICE",
                              "COM_SOFTWARE",
                              "COM_SUBNET",
                              "COM_VALIDATION",
                              "COM_STACK_PARAMETER",
                              "PAR_ORGANIZATION",
                              "PAR_PERSON",
                              "ROL_NO_LOGICAL_ACCESS",
                              "ROL_NOT_PRIVILEGED",
                              "ROL_PRIVILEGED",
                              "LOC_CAMPUS",
                              "LOC_DATA_CENTER",
                              "LOC_DATA_REGION_CLOUD",
                              "LOC_OTHER",
                              "LOC_REMOTE",
                              "DAT_ACCOUNT_DATA",
                              "DAT_CUSTOMER_DATA",
                              "DAT_METADATA",
                              "DAT_SUPPORT_ADMIN"
                            ]
                          }
                        },
                        "required": [
                          "name",
                          "subtype"
                        ],
                        "description": "The name and subtype of the element within Paramify that created the issue",
                        "example": {
                          "name": "Qualys",
                          "subtype": "COM_SAAS"
                        }
                      },
                      "description": "The origins of the recommendation",
                      "example": [
                        {
                          "name": "Qualys",
                          "subtype": "COM_SAAS"
                        }
                      ]
                    }
                  },
                  "required": [
                    "description"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues/{issueId}/recommendations/{recommendationId}": {
      "get": {
        "tags": [
          "Recommendations"
        ],
        "operationId": "getRecommendationById",
        "summary": "Get the recommendation specified by the recommendationId",
        "description": "Gets the recommendation specified by the `recommendationId` within the issue specified by the `issueId`. The `id` value of the recommendation returned can be used as the `recommendationId` parameter in other routes or request bodies.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "recommendationId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecommendationResponseObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "patch": {
        "tags": [
          "Recommendations"
        ],
        "operationId": "patchRecommendationById",
        "summary": "Updates the recommendation specified by the recommendationId",
        "description": "Updates the recommendation specified by the `recommendationId`. Upon successful operation, all fields that are not arrays will be overwritten. Fields that accept array values will add the provided values to the existing values.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "recommendationId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "A uuid that uniquely identifies the recommendation",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the recommendation",
                    "example": "This is a detailed description of the recommendation."
                  },
                  "origins": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 255
                        },
                        "subtype": {
                          "type": "string",
                          "enum": [
                            "COM_AGREEMENT",
                            "COM_CUSTOMER_MANAGED",
                            "COM_FEDRAMP_SYSTEM",
                            "COM_HARDWARE",
                            "COM_IAAS",
                            "COM_INTERCONNECTION",
                            "COM_PAAS",
                            "COM_PLAN",
                            "COM_POLICY",
                            "COM_PROCEDURE",
                            "COM_PROCESS",
                            "COM_SAAS",
                            "COM_SERVICE",
                            "COM_SOFTWARE",
                            "COM_SUBNET",
                            "COM_VALIDATION",
                            "COM_STACK_PARAMETER",
                            "PAR_ORGANIZATION",
                            "PAR_PERSON",
                            "ROL_NO_LOGICAL_ACCESS",
                            "ROL_NOT_PRIVILEGED",
                            "ROL_PRIVILEGED",
                            "LOC_CAMPUS",
                            "LOC_DATA_CENTER",
                            "LOC_DATA_REGION_CLOUD",
                            "LOC_OTHER",
                            "LOC_REMOTE",
                            "DAT_ACCOUNT_DATA",
                            "DAT_CUSTOMER_DATA",
                            "DAT_METADATA",
                            "DAT_SUPPORT_ADMIN"
                          ]
                        }
                      },
                      "required": [
                        "name",
                        "subtype"
                      ],
                      "description": "The name and subtype of the element within Paramify that created the issue",
                      "example": {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    },
                    "description": "The origins of the recommendation",
                    "example": [
                      {
                        "name": "Qualys",
                        "subtype": "COM_SAAS"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "A uuid that uniquely identifies the recommendation",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "description": {
                      "type": "string",
                      "description": "The description of the recommendation",
                      "example": "This is a detailed description of the recommendation."
                    },
                    "origins": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 255
                          },
                          "subtype": {
                            "type": "string",
                            "enum": [
                              "COM_AGREEMENT",
                              "COM_CUSTOMER_MANAGED",
                              "COM_FEDRAMP_SYSTEM",
                              "COM_HARDWARE",
                              "COM_IAAS",
                              "COM_INTERCONNECTION",
                              "COM_PAAS",
                              "COM_PLAN",
                              "COM_POLICY",
                              "COM_PROCEDURE",
                              "COM_PROCESS",
                              "COM_SAAS",
                              "COM_SERVICE",
                              "COM_SOFTWARE",
                              "COM_SUBNET",
                              "COM_VALIDATION",
                              "COM_STACK_PARAMETER",
                              "PAR_ORGANIZATION",
                              "PAR_PERSON",
                              "ROL_NO_LOGICAL_ACCESS",
                              "ROL_NOT_PRIVILEGED",
                              "ROL_PRIVILEGED",
                              "LOC_CAMPUS",
                              "LOC_DATA_CENTER",
                              "LOC_DATA_REGION_CLOUD",
                              "LOC_OTHER",
                              "LOC_REMOTE",
                              "DAT_ACCOUNT_DATA",
                              "DAT_CUSTOMER_DATA",
                              "DAT_METADATA",
                              "DAT_SUPPORT_ADMIN"
                            ]
                          }
                        },
                        "required": [
                          "name",
                          "subtype"
                        ],
                        "description": "The name and subtype of the element within Paramify that created the issue",
                        "example": {
                          "name": "Qualys",
                          "subtype": "COM_SAAS"
                        }
                      },
                      "description": "The origins of the recommendation",
                      "example": [
                        {
                          "name": "Qualys",
                          "subtype": "COM_SAAS"
                        }
                      ]
                    },
                    "issueId": {
                      "type": "string",
                      "format": "uuid",
                      "description": "A uuid that uniquely identifies the issue associated with the recommendation",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    }
                  },
                  "required": [
                    "id",
                    "origins",
                    "issueId"
                  ],
                  "description": "The recommendation as it exists after the operation"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "delete": {
        "tags": [
          "Recommendations"
        ],
        "operationId": "deleteRecommendationById",
        "summary": "Deletes the recommendation specified by the recommendationId",
        "description": "Deletes the recommendation specified by the `recommendationId` within the issue specified by the `issueId`. Warning: This action is irreversible.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "recommendationId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues/{issueId}/deviations": {
      "get": {
        "tags": [
          "Deviations (\"Excuses\" in the Paramify application)"
        ],
        "operationId": "getDeviations",
        "summary": "Get all deviations for the specified issue",
        "description": "This endpoint returns all deviations for the specified issue. You may filter the results by `id` to retrieve several specific deviations at once.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "id",
            "description": "Filter deviations by ID. Multiple IDs can be provided to retrieve multiple deviations at once.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/deviationId"
              },
              "description": "Filter deviations by ID. Multiple IDs can be provided to retrieve multiple deviations at once.",
              "example": [
                "251b4a27-cf85-416d-8364-9c59c1ad0ed5",
                "251b4a27-cf85-416d-8364-9c59c1ad0ed6"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "links": {
              "getDeviations": {
                "$ref": "#/components/links/getDeviations"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deviations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/DeviationResponseObject"
                      }
                    }
                  },
                  "required": [
                    "deviations"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "post": {
        "tags": [
          "Deviations (\"Excuses\" in the Paramify application)"
        ],
        "summary": "Create a new deviation on the specified issue",
        "operationId": "postDeviation",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "TEST",
                      "EXAMINE",
                      "INTERVIEW",
                      "UNKNOWN"
                    ]
                  },
                  "type": {
                    "$ref": "#/components/schemas/DeviationObservationTypes"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "The date the deviation was created",
                    "example": "2022-01-01T00:00:00.000Z"
                  },
                  "deviationMetadata": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "PENDING",
                          "ACCEPTED",
                          "REJECTED"
                        ]
                      },
                      "adjustedLevel": {
                        "type": "string",
                        "enum": [
                          "LOW",
                          "MODERATE",
                          "HIGH",
                          "CRITICAL"
                        ]
                      }
                    },
                    "required": [
                      "status"
                    ],
                    "description": "Deviation schema"
                  }
                },
                "required": [
                  "description",
                  "method",
                  "type",
                  "createdAt",
                  "deviationMetadata"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 OK",
            "links": {
              "postDeviation": {
                "$ref": "#/components/links/postDeviation"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviationResponseObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues/{issueId}/deviations/{deviationId}": {
      "get": {
        "tags": [
          "Deviations (\"Excuses\" in the Paramify application)"
        ],
        "summary": "Get the deviation by ID",
        "operationId": "getDeviationById",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "deviationId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviationResponseObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "patch": {
        "tags": [
          "Deviations (\"Excuses\" in the Paramify application)"
        ],
        "summary": "Updates the deviation by ID",
        "operationId": "patchDeviationById",
        "description": "Updates the deviation specified by the deviationId. Upon successful operation, all fields that are not arrays will be overwritten. Fields that accept array values will add the provided values to the existing values.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "deviationId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1
                  },
                  "method": {
                    "type": "string",
                    "enum": [
                      "TEST",
                      "EXAMINE",
                      "INTERVIEW",
                      "UNKNOWN"
                    ]
                  },
                  "type": {
                    "$ref": "#/components/schemas/DeviationObservationTypes"
                  },
                  "createdAt": {
                    "type": "string",
                    "description": "The date the deviation was created",
                    "example": "2022-01-01T00:00:00.000Z"
                  },
                  "deviationMetadata": {
                    "$ref": "#/components/schemas/DeviationMetadataObject"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "A uuid that uniquely identifies a deviation within Paramify",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "description": {
                      "type": "string",
                      "description": "The description of the deviation"
                    },
                    "method": {
                      "type": "string",
                      "enum": [
                        "TEST",
                        "EXAMINE",
                        "INTERVIEW",
                        "UNKNOWN"
                      ],
                      "description": "The method used to create the deviation",
                      "example": "TEST"
                    },
                    "type": {
                      "$ref": "#/components/schemas/DeviationObservationTypes"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "The date the deviation was created",
                      "example": "2022-01-01T00:00:00.000Z"
                    },
                    "deviationMetadata": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "PENDING",
                            "ACCEPTED",
                            "REJECTED"
                          ]
                        },
                        "adjustedLevel": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "enum": [
                            "LOW",
                            "MODERATE",
                            "HIGH",
                            "CRITICAL"
                          ]
                        }
                      },
                      "required": [
                        "status"
                      ],
                      "description": "Deviation metadata object"
                    }
                  },
                  "required": [
                    "id",
                    "description",
                    "method",
                    "type",
                    "createdAt"
                  ],
                  "description": "The deviation as it exists after the operation"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "delete": {
        "tags": [
          "Deviations (\"Excuses\" in the Paramify application)"
        ],
        "summary": "Permanently deletes the deviation by ID. This operation is irreversible.",
        "operationId": "deleteDeviationById",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "deviationId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues/{issueId}/milestones": {
      "get": {
        "tags": [
          "Milestones (\"Remediation Activities\" in the Paramify application)"
        ],
        "summary": "Retrieves all milestones for the specified issue.",
        "operationId": "getMilestones",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "id",
            "description": "Filter milestones by ID. Multiple IDs can be provided to retrieve multiple milestones at once.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/milestoneId"
              },
              "description": "Filter milestones by ID. Multiple IDs can be provided to retrieve multiple milestones at once.",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000",
                "123e4567-e89b-12d3-a456-426614174001"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "links": {
              "getMilestone": {
                "$ref": "#/components/links/getMilestone"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "milestones": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "A uuid that uniquely identifies the milestone",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "title": {
                            "type": "string",
                            "description": "The title of the milestone",
                            "example": "Milestone Title Example"
                          },
                          "description": {
                            "type": "string",
                            "description": "The description of the milestone",
                            "example": "This is a detailed description of the milestone."
                          },
                          "dueStart": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "The start date of the milestone",
                            "example": "2022-01-01T00:00:00.000Z"
                          },
                          "dueEnd": {
                            "type": "string",
                            "description": "The end date of the milestone",
                            "example": "2022-01-01T00:00:00.000Z"
                          }
                        },
                        "required": [
                          "id",
                          "title",
                          "description",
                          "dueEnd"
                        ]
                      }
                    }
                  },
                  "required": [
                    "milestones"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "post": {
        "tags": [
          "Milestones (\"Remediation Activities\" in the Paramify application)"
        ],
        "operationId": "postMilestone",
        "summary": "Creates a new milestone on the specified issue.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MilestoneObject"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 OK",
            "links": {
              "postMilestone": {
                "$ref": "#/components/links/postMilestone"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "A uuid that uniquely identifies the milestone",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "title": {
                      "type": "string",
                      "description": "The title of the milestone",
                      "example": "Milestone Title Example"
                    },
                    "description": {
                      "type": "string",
                      "description": "The description of the milestone",
                      "example": "This is a detailed description of the milestone."
                    },
                    "dueStart": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The start date of the milestone",
                      "example": "2022-01-01T00:00:00.000Z"
                    },
                    "dueEnd": {
                      "type": "string",
                      "description": "The end date of the milestone",
                      "example": "2022-01-01T00:00:00.000Z"
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "description",
                    "dueEnd"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/issues/{issueId}/milestones/{milestoneId}": {
      "get": {
        "tags": [
          "Milestones (\"Remediation Activities\" in the Paramify application)"
        ],
        "operationId": "getMilestoneById",
        "summary": "Retrieves a milestone by ID.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "milestoneId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid",
                        "description": "A uuid that uniquely identifies the milestone",
                        "example": "123e4567-e89b-12d3-a456-426614174000"
                      },
                      "title": {
                        "type": "string",
                        "description": "The title of the milestone",
                        "example": "Milestone Title Example"
                      },
                      "description": {
                        "type": "string",
                        "description": "The description of the milestone",
                        "example": "This is a detailed description of the milestone."
                      },
                      "dueStart": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "The start date of the milestone",
                        "example": "2022-01-01T00:00:00.000Z"
                      },
                      "dueEnd": {
                        "type": "string",
                        "description": "The end date of the milestone",
                        "example": "2022-01-01T00:00:00.000Z"
                      }
                    },
                    "required": [
                      "id",
                      "title",
                      "description",
                      "dueEnd"
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "patch": {
        "tags": [
          "Milestones (\"Remediation Activities\" in the Paramify application)"
        ],
        "operationId": "patchMilestoneById",
        "summary": "Updates a milestone by ID. Only provided fields are modified.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "milestoneId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MilestoneObject"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "A uuid that uniquely identifies the milestone",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "title": {
                      "type": "string",
                      "description": "The title of the milestone",
                      "example": "Milestone Title Example"
                    },
                    "description": {
                      "type": "string",
                      "description": "The description of the milestone",
                      "example": "This is a detailed description of the milestone."
                    },
                    "dueStart": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The start date of the milestone",
                      "example": "2022-01-01T00:00:00.000Z"
                    },
                    "dueEnd": {
                      "type": "string",
                      "description": "The end date of the milestone",
                      "example": "2022-01-01T00:00:00.000Z"
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "description",
                    "dueEnd"
                  ],
                  "description": "The milestone as it exists after the operation"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "delete": {
        "tags": [
          "Milestones (\"Remediation Activities\" in the Paramify application)"
        ],
        "operationId": "deleteMilestoneById",
        "summary": "Permanently deletes a milestone by ID. This operation is irreversible.",
        "parameters": [
          {
            "in": "path",
            "name": "issueId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "milestoneId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/evidence": {
      "get": {
        "tags": [
          "Evidence"
        ],
        "operationId": "getEvidence",
        "summary": "Get all evidence",
        "description": "Retrieves all evidence records from your workspace. Filter by id (internal UUIDs) or referenceId (custom identifiers like \"EVD-1\"). Returns array of evidence objects with associated artifacts.",
        "parameters": [
          {
            "in": "query",
            "name": "id",
            "description": "Filter by ID. Multiple IDs can be provided to retrieve multiple evidence records.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              },
              "description": "Filter by ID. Multiple IDs can be provided to retrieve multiple evidence records.",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000",
                "123e4567-e89b-12d3-a456-426614174001"
              ]
            }
          },
          {
            "in": "query",
            "name": "referenceId",
            "description": "Filter by reference ID. Multiple reference IDs can be provided to retrieve multiple evidence records.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Filter by reference ID. Multiple reference IDs can be provided to retrieve multiple evidence records.",
              "example": [
                "EVD-1",
                "EVD-2"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "evidences": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Internal UUID identifier for the evidence record",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "referenceId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Human-readable reference identifier (e.g., \"EVD-001\")",
                            "example": "EVD-001"
                          },
                          "name": {
                            "type": "string",
                            "description": "Display name or title of the evidence",
                            "example": "User Access Review"
                          },
                          "description": {
                            "type": "string",
                            "description": "Detailed description of what this evidence represents",
                            "example": "Quarterly review of user access permissions"
                          },
                          "instructions": {
                            "type": "string",
                            "description": "Instructions for how to use or interpret this evidence (converted from rich text)",
                            "example": "Review all user accounts and verify access levels are appropriate"
                          },
                          "remarks": {
                            "type": "string",
                            "description": "Additional notes or comments about the evidence (converted from rich text)",
                            "example": "Special attention needed for new department users"
                          },
                          "artifacts": {
                            "type": "array",
                            "items": {
                              "$ref": "#/components/schemas/ArtifactResponse"
                            },
                            "description": "The artifacts of the evidence",
                            "example": [
                              {
                                "id": "123e4567-e89b-12d3-a456-426614174000",
                                "title": "Artifact Title",
                                "originalFileName": "Artifact Original File Name",
                                "pathname": "Artifact Pathname",
                                "note": "Artifact Note",
                                "isUrl": true,
                                "fileType": "Artifact File Type",
                                "createdAt": "2022-01-01T00:00:00Z",
                                "createdBy": {
                                  "username": "testuser",
                                  "email": "test@example.com"
                                },
                                "effectiveDate": "2022-01-01T00:00:00Z"
                              }
                            ]
                          },
                          "automated": {
                            "type": "boolean",
                            "description": "Indicates whether this evidence was collected through automated processes",
                            "example": true
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "artifacts",
                          "automated"
                        ]
                      }
                    }
                  },
                  "required": [
                    "evidences"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "post": {
        "tags": [
          "Evidence"
        ],
        "operationId": "postEvidence",
        "summary": "Create a new evidence",
        "description": "Creates a new evidence record as a container for artifacts and compliance documentation.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEvidenceSchema"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "postEvidence": {
                "$ref": "#/components/links/postEvidence"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Internal UUID identifier for the evidence record",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "referenceId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Human-readable reference identifier (e.g., \"EVD-001\")",
                      "example": "EVD-001"
                    },
                    "name": {
                      "type": "string",
                      "description": "Display name or title of the evidence",
                      "example": "User Access Review"
                    },
                    "description": {
                      "type": "string",
                      "description": "Detailed description of what this evidence represents",
                      "example": "Quarterly review of user access permissions"
                    },
                    "instructions": {
                      "type": "string",
                      "description": "Instructions for how to use or interpret this evidence (converted from rich text)",
                      "example": "Review all user accounts and verify access levels are appropriate"
                    },
                    "remarks": {
                      "type": "string",
                      "description": "Additional notes or comments about the evidence (converted from rich text)",
                      "example": "Special attention needed for new department users"
                    },
                    "artifacts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ArtifactResponse"
                      },
                      "description": "The artifacts of the evidence",
                      "example": [
                        {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "title": "Artifact Title",
                          "originalFileName": "Artifact Original File Name",
                          "pathname": "Artifact Pathname",
                          "note": "Artifact Note",
                          "isUrl": true,
                          "fileType": "Artifact File Type",
                          "createdAt": "2022-01-01T00:00:00Z",
                          "createdBy": {
                            "username": "testuser",
                            "email": "test@example.com"
                          },
                          "effectiveDate": "2022-01-01T00:00:00Z"
                        }
                      ]
                    },
                    "automated": {
                      "type": "boolean",
                      "description": "Indicates whether this evidence was collected through automated processes",
                      "example": true
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "artifacts",
                    "automated"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/evidence/{evidenceId}": {
      "get": {
        "tags": [
          "Evidence"
        ],
        "operationId": "getEvidenceById",
        "summary": "Get evidence by ID",
        "description": "Retrieves a specific evidence record by its internal ID (UUID). Returns complete evidence object with all associated artifacts. Instructions and remarks are converted from rich text.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Internal UUID identifier for the evidence record",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "referenceId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Human-readable reference identifier (e.g., \"EVD-001\")",
                      "example": "EVD-001"
                    },
                    "name": {
                      "type": "string",
                      "description": "Display name or title of the evidence",
                      "example": "User Access Review"
                    },
                    "description": {
                      "type": "string",
                      "description": "Detailed description of what this evidence represents",
                      "example": "Quarterly review of user access permissions"
                    },
                    "instructions": {
                      "type": "string",
                      "description": "Instructions for how to use or interpret this evidence (converted from rich text)",
                      "example": "Review all user accounts and verify access levels are appropriate"
                    },
                    "remarks": {
                      "type": "string",
                      "description": "Additional notes or comments about the evidence (converted from rich text)",
                      "example": "Special attention needed for new department users"
                    },
                    "artifacts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ArtifactResponse"
                      },
                      "description": "The artifacts of the evidence",
                      "example": [
                        {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "title": "Artifact Title",
                          "originalFileName": "Artifact Original File Name",
                          "pathname": "Artifact Pathname",
                          "note": "Artifact Note",
                          "isUrl": true,
                          "fileType": "Artifact File Type",
                          "createdAt": "2022-01-01T00:00:00Z",
                          "createdBy": {
                            "username": "testuser",
                            "email": "test@example.com"
                          },
                          "effectiveDate": "2022-01-01T00:00:00Z"
                        }
                      ]
                    },
                    "automated": {
                      "type": "boolean",
                      "description": "Indicates whether this evidence was collected through automated processes",
                      "example": true
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "artifacts",
                    "automated"
                  ],
                  "description": "The evidence object with all associated artifacts"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "patch": {
        "tags": [
          "Evidence"
        ],
        "operationId": "patchEvidenceById",
        "summary": "Update evidence by ID",
        "description": "Updates an existing evidence record. Only provided fields are modified, others remain unchanged. `referenceId` must be unique if provided.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "referenceId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "The reference id of the evidence",
                    "example": "EVD-1"
                  },
                  "name": {
                    "type": "string",
                    "description": "The name or title of the evidence",
                    "example": "Example name"
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the evidence",
                    "example": "This evidence is very important"
                  },
                  "instructions": {
                    "type": "string",
                    "description": "Instructions for how to use or interpret this evidence",
                    "example": "Example instructions"
                  },
                  "remarks": {
                    "type": "string",
                    "description": "Additional remarks or notes about the evidence",
                    "example": "Example remarks"
                  },
                  "automated": {
                    "type": "boolean",
                    "description": "Indicates whether this evidence was collected through automated means",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Internal UUID identifier for the evidence record",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "referenceId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Human-readable reference identifier (e.g., \"EVD-001\")",
                      "example": "EVD-001"
                    },
                    "name": {
                      "type": "string",
                      "description": "Display name or title of the evidence",
                      "example": "User Access Review"
                    },
                    "description": {
                      "type": "string",
                      "description": "Detailed description of what this evidence represents",
                      "example": "Quarterly review of user access permissions"
                    },
                    "instructions": {
                      "type": "string",
                      "description": "Instructions for how to use or interpret this evidence (converted from rich text)",
                      "example": "Review all user accounts and verify access levels are appropriate"
                    },
                    "remarks": {
                      "type": "string",
                      "description": "Additional notes or comments about the evidence (converted from rich text)",
                      "example": "Special attention needed for new department users"
                    },
                    "artifacts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ArtifactResponse"
                      },
                      "description": "The artifacts of the evidence",
                      "example": [
                        {
                          "id": "123e4567-e89b-12d3-a456-426614174000",
                          "title": "Artifact Title",
                          "originalFileName": "Artifact Original File Name",
                          "pathname": "Artifact Pathname",
                          "note": "Artifact Note",
                          "isUrl": true,
                          "fileType": "Artifact File Type",
                          "createdAt": "2022-01-01T00:00:00Z",
                          "createdBy": {
                            "username": "testuser",
                            "email": "test@example.com"
                          },
                          "effectiveDate": "2022-01-01T00:00:00Z"
                        }
                      ]
                    },
                    "automated": {
                      "type": "boolean",
                      "description": "Indicates whether this evidence was collected through automated processes",
                      "example": true
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "artifacts",
                    "automated"
                  ],
                  "description": "The updated evidence object as it exists after the operation"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "delete": {
        "tags": [
          "Evidence"
        ],
        "operationId": "deleteEvidenceById",
        "summary": "Delete evidence by ID",
        "description": "Permanently deletes an evidence record and all associated artifacts. This operation is irreversible and creates an activity entry. All artifacts and files are also deleted.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/evidence/{evidenceId}/artifacts": {
      "get": {
        "tags": [
          "Artifacts"
        ],
        "operationId": "getArtifacts",
        "summary": "Get all artifacts for the specified evidence",
        "description": "Retrieves all artifacts associated with a specific evidence record. Artifacts are digital files, documents, or URL references that support and validate evidence.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "id",
            "description": "Filter artifacts by specific artifact IDs. Multiple IDs can be provided to fetch several artifacts in a single request.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/artifactId"
              },
              "description": "Filter artifacts by specific artifact IDs. Multiple IDs can be provided to fetch several artifacts in a single request.",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000",
                "456e7890-e89b-12d3-a456-426614174001"
              ]
            }
          },
          {
            "in": "query",
            "name": "originalFileName",
            "description": "Filter artifacts by their original file names. Multiple file names can be provided to fetch several artifacts in a single request.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Filter artifacts by their original file names. Multiple file names can be provided to fetch several artifacts in a single request.",
              "example": [
                "vulnerability-scan.csv",
                "configuration-report.pdf"
              ]
            }
          },
          {
            "in": "query",
            "name": "createdAt",
            "description": "Filter artifacts created on specific dates. Use this to find artifacts that were uploaded or created on particular dates. Date format should be YYYY-MM-DD. Multiple dates can be provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "date"
              },
              "description": "Filter artifacts created on specific dates. Use this to find artifacts that were uploaded or created on particular dates. Date format should be YYYY-MM-DD. Multiple dates can be provided.",
              "example": [
                "2025-01-01",
                "2025-01-15"
              ]
            }
          },
          {
            "in": "query",
            "name": "effectiveDate",
            "description": "Filter artifacts by their effective dates. The effective date represents when the artifact data was actually valid or captured, which may differ from the upload date. Multiple dates can be provided.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "date"
              },
              "description": "Filter artifacts by their effective dates. The effective date represents when the artifact data was actually valid or captured, which may differ from the upload date. Multiple dates can be provided.",
              "example": [
                "2025-01-01",
                "2025-01-15"
              ]
            }
          },
          {
            "in": "query",
            "name": "isUrl",
            "description": "Filter artifacts by type - whether they are URL references (true) or uploaded files (false). Use true to get only URL artifacts, false to get only file uploads.",
            "schema": {
              "type": "boolean",
              "description": "Filter artifacts by type - whether they are URL references (true) or uploaded files (false). Use true to get only URL artifacts, false to get only file uploads.",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "artifacts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ArtifactResponse"
                      },
                      "description": "Array of artifact objects matching the filter criteria"
                    }
                  },
                  "required": [
                    "artifacts"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/evidence/{evidenceId}/artifacts/upload": {
      "post": {
        "tags": [
          "Artifacts"
        ],
        "operationId": "uploadArtifact",
        "summary": "Upload a new file artifact for the specified evidence",
        "description": "Uploads a file as an artifact and associates it with the specified evidence record. The uploaded file will be securely stored and made available for future reference.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The file to be uploaded as an artifact. Any file type is supported. The original filename will be preserved and used as the default title if no title is specified in the metadata."
                  },
                  "artifact": {
                    "$ref": "#/components/schemas/UploadArtifactSchema"
                  }
                },
                "required": [
                  "file",
                  "artifact"
                ]
              },
              "encoding": {
                "artifact": {
                  "contentType": "application/json",
                  "description": "JSON metadata for the artifact containing optional title, note, and effectiveDate fields"
                },
                "file": {
                  "contentType": "application/octet-stream",
                  "description": "The file to be uploaded as an artifact"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "uploadArtifact": {
                "$ref": "#/components/links/uploadArtifact"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArtifactResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/evidence/{evidenceId}/artifacts/url": {
      "post": {
        "tags": [
          "Artifacts"
        ],
        "operationId": "postUrlArtifact",
        "summary": "Create a URL artifact for the specified evidence",
        "description": "Creates an artifact from a URL reference and associates it with the specified evidence record. The URL artifact will maintain the link to the external resource while storing relevant metadata such as title, notes, and effective date.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostUrlArtifactSchema"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "postUrlArtifact": {
                "$ref": "#/components/links/postUrlArtifact"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArtifactResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/evidence/{evidenceId}/artifacts/{artifactId}": {
      "get": {
        "tags": [
          "Artifacts"
        ],
        "operationId": "getArtifactById",
        "summary": "Get specific artifact by ID",
        "description": "Retrieves a specific artifact by ID.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "artifactId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "artifacts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ArtifactResponse"
                      },
                      "description": "Array containing a single artifact object with detailed metadata and file information"
                    }
                  },
                  "required": [
                    "artifacts"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "patch": {
        "tags": [
          "Artifacts"
        ],
        "operationId": "patchArtifactById",
        "summary": "Update specific artifact by ID",
        "description": "Update a specific artifact by ID. You can modify the title, note, and effective date of an artifact without changing the underlying file or URL. Only the fields provided in the request body will be updated.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "artifactId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchArtifactSchema"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Unique identifier for the artifact",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "title": {
                      "type": "string",
                      "description": "Display title of the artifact. For file uploads, this defaults to the original filename if not provided during creation.",
                      "example": "Q1 2024 Vulnerability Assessment Report"
                    },
                    "originalFileName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The original filename when the artifact was uploaded. This field is null for URL artifacts.",
                      "example": "vulnerability-report-q1-2024.pdf"
                    },
                    "pathname": {
                      "type": "string",
                      "description": "For file artifacts: the direct URL to retrieve the stored file. This link may expire after about 60 minutes; request the artifact again to get a new link. For URL artifacts: this is the full external URL to the resource.",
                      "example": "https://docs.company.com/security/policies/access-control"
                    },
                    "note": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional notes or comments about the artifact. Can be null if no note was provided.",
                      "example": "This report contains the results of the quarterly vulnerability scan conducted on our production infrastructure."
                    },
                    "isUrl": {
                      "type": "boolean",
                      "description": "Indicates the artifact type: true for URL artifacts, false for uploaded file artifacts",
                      "example": false
                    },
                    "fileType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "MIME type of the file (e.g., application/pdf, image/png). This field is null for URL artifacts.",
                      "example": "application/pdf"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "ISO 8601 timestamp when the artifact was created in the system",
                      "example": "2022-01-01T00:00:00Z"
                    },
                    "createdBy": {
                      "type": "object",
                      "properties": {
                        "username": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "email": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "username",
                        "email"
                      ],
                      "description": "Information about the user who created the artifact",
                      "example": {
                        "username": "john.doe",
                        "email": "john.doe@company.com"
                      }
                    },
                    "effectiveDate": {
                      "type": "string",
                      "description": "The date when this artifact was effective or relevant. This may differ from createdAt and represents when the data was actually valid.",
                      "example": "2022-01-01T00:00:00.000Z"
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "pathname",
                    "isUrl",
                    "createdAt",
                    "createdBy"
                  ],
                  "description": "The artifact as it exists after the update operation, including all current metadata"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      },
      "delete": {
        "tags": [
          "Artifacts"
        ],
        "operationId": "deleteArtifactById",
        "summary": "Delete specific artifact by ID",
        "description": "Delete a specific artifact by ID. This operation cannot be undone. If the artifact is a file upload, the file will be removed from storage. If it is a URL artifact, the reference will be deleted. Use this endpoint carefully as it is irreversible.",
        "parameters": [
          {
            "in": "path",
            "name": "evidenceId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "artifactId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK"
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/assessment": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "operationId": "getAssessments",
        "summary": "Get assessments with optional filtering",
        "description": "Get all vulnerability and configuration assessments, with all included assessment cycles, within a workspace. Assessments can be filtered by id, frequency, and type.",
        "parameters": [
          {
            "in": "query",
            "name": "id",
            "description": "Filter assessments by id. If multiple ids are provided, multiple assessments will be returned.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/assessmentId"
              },
              "description": "Filter assessments by id. If multiple ids are provided, multiple assessments will be returned.",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000"
              ]
            }
          },
          {
            "in": "query",
            "name": "frequency",
            "description": "Filter assessments by frequency. If multiple frequencies are provided, assessments with either frequency will be returned.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "MONTHLY",
                  "QUARTERLY",
                  "BIANNUALLY",
                  "ANNUALLY"
                ]
              },
              "description": "Filter assessments by frequency. If multiple frequencies are provided, assessments with either frequency will be returned.",
              "example": [
                "ANNUALLY",
                "MONTHLY"
              ]
            }
          },
          {
            "in": "query",
            "name": "type",
            "description": "Filter assessments by type, either vulnerability or configuration (other assessment types are not supported).",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "CONFIGURATION",
                  "VULNERABILITY"
                ]
              },
              "description": "Filter assessments by type, either vulnerability or configuration (other assessment types are not supported).",
              "example": [
                "VULNERABILITY",
                "CONFIGURATION"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "assessments": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AssessmentResponseObject"
                      },
                      "description": "Array of assessment objects, including all assessment cycles, matching the filter criteria. The `id` from each assessment can be used as an `assessmentId` in other endpoints."
                    }
                  },
                  "required": [
                    "assessments"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/assessment/{assessmentId}": {
      "get": {
        "tags": [
          "Assessments"
        ],
        "operationId": "getAssessment",
        "summary": "Get single assessment by ID",
        "description": "Get a single vulnerability or configuration assessment, including all of its assessment cycles, by its internal id (UUID).",
        "parameters": [
          {
            "in": "path",
            "name": "assessmentId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "The internal UUID of the assessment. This id can be used as an `assessmentId` in other endpoints.",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "name": {
                      "type": "string",
                      "description": "The name of the assessment.",
                      "example": "Vulnerability Assessment Q1 2024"
                    },
                    "mechanism": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "description": "The internal UUID of the assessment mechanism.",
                          "example": "123e4567-e89b-12d3-a456-426614174000"
                        },
                        "name": {
                          "type": "string",
                          "description": "The name of the assessment mechanism.",
                          "example": "Nessus Scanner"
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "description": "The component element used as the mechanism of the assessment."
                    },
                    "targetComponents": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "The internal UUID of the target component.",
                            "example": "123e4567-e89b-12d3-a456-426614174000"
                          },
                          "name": {
                            "type": "string",
                            "description": "The name of the target component.",
                            "example": "Web Application Server"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ]
                      },
                      "description": "The target component(s) assigned to the assessment."
                    },
                    "frequency": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "MONTHLY",
                        "QUARTERLY",
                        "BIANNUALLY",
                        "ANNUALLY"
                      ],
                      "description": "The frequency of the assessment.",
                      "example": "QUARTERLY"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "VULNERABILITY",
                        "CONFIGURATION"
                      ],
                      "description": "The type of assessment, either vulnerability or configuration (other assessment types are not supported).",
                      "example": "VULNERABILITY"
                    },
                    "referenceId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The human-readable reference identifier of the assessment.",
                      "example": "ASSESS-2024-Q1-001"
                    },
                    "cycles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AssessmentCycleResponseObject"
                      },
                      "description": "The cycles associated with the assessment."
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "mechanism",
                    "targetComponents",
                    "frequency",
                    "type",
                    "referenceId",
                    "cycles"
                  ],
                  "description": "The single assessment object, including all of its assessment cycles."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/assessment/{assessmentId}/intake": {
      "post": {
        "tags": [
          "Assessments"
        ],
        "operationId": "postAssessmentIntake",
        "summary": "Submit intake data for an assessment",
        "description": "## Overview\nUploads a CSV file as an artifact and attaches it to the intake on a vulnerability or configuration assessment specified by the `assessmentId`. Only CSV files are supported.\n\n### Effective Date Handling\nThe effective date specified will be used to determine what cycle(s) to upload the artifact to. If no effective date is specified, the current date will be used as the effective date.\n\n### Cycle Creation and Management\nThe artifact will be added to the intake for each cycle on the assessment whose start and end date overlap the artifact's effective date. If no such cycle can be found, a new one will be created. The created cycle's start date will be the beginning of the effective date's month. The cycle's end date will be calculated based on the assessment's frequency.\n\n### Evidence Handling\nIf the intake on the cycle does not have an attached evidence, the evidence from the previous cycle's intake will be used. If there is no previous cycle, a new evidence will be created.\n\n### Multiple Cycle Behavior\nIf multiple cycles fall within the range of the artifact's effective date, the artifact will be attached to each cycle's intake. If the multiple cycle intakes have different evidences, one artifact will be created for each evidence.\n\n### Existing Artifacts\nIf any of the cycle intakes already have artifacts attached, the new artifact will be added without removing existing artifacts.",
        "parameters": [
          {
            "in": "path",
            "name": "assessmentId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The file to be uploaded as an artifact. Any file type is supported. The original filename will be preserved and used as the default title if no title is specified in the metadata."
                  },
                  "artifact": {
                    "$ref": "#/components/schemas/UploadArtifactSchema"
                  }
                },
                "required": [
                  "file",
                  "artifact"
                ]
              },
              "encoding": {
                "artifact": {
                  "contentType": "application/json"
                },
                "file": {
                  "contentType": "application/octet-stream"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "links": {
              "uploadArtifact": {
                "$ref": "#/components/links/uploadArtifact"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "artifacts": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ArtifactResponse"
                      }
                    }
                  },
                  "required": [
                    "artifacts"
                  ],
                  "description": "An array of newly created artifacts. Typically only one artifact will be created, unless multiple assessment cycles overlap the effective date and have different evidences attached to their intakes. At least one artifact will always be created if the request was successful."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/assessment/{assessmentId}/cycle": {
      "get": {
        "tags": [
          "Assessment Cycles"
        ],
        "operationId": "getAssessmentCycles",
        "summary": "Get the assessment cycles on the assessment specified by the assessmentId",
        "description": "Get the assessment cycles on a vulnerability or configuration assessment specified by the `assessmentId`. Assessment cycles can optionally be filtered by id, start date, or end date.",
        "parameters": [
          {
            "in": "path",
            "name": "assessmentId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "cycleId",
            "description": "Filter cycles by internal id (UUID). If multiple ids are provided, multiple cycles will be returned.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              },
              "description": "Filter cycles by internal id (UUID). If multiple ids are provided, multiple cycles will be returned.",
              "example": [
                "123e4567-e89b-12d3-a456-426614174000"
              ]
            }
          },
          {
            "in": "query",
            "name": "startDate",
            "description": "Filter cycles by their start date. Date format should be YYYY-MM-DD. If multiple dates are provided, any cycle with any of those start dates will be returned.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "date"
              },
              "description": "Filter cycles by their start date. Date format should be YYYY-MM-DD. If multiple dates are provided, any cycle with any of those start dates will be returned.",
              "example": [
                "2022-01-01"
              ]
            }
          },
          {
            "in": "query",
            "name": "endDate",
            "description": "Filter cycles by their end date. Date format should be YYYY-MM-DD. If multiple dates are provided, any cycle with any of those end dates will be returned.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "date"
              },
              "description": "Filter cycles by their end date. Date format should be YYYY-MM-DD. If multiple dates are provided, any cycle with any of those end dates will be returned.",
              "example": [
                "2022-01-01"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cycles": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AssessmentCycleResponseObject"
                      }
                    }
                  },
                  "required": [
                    "cycles"
                  ],
                  "description": "Array of assessment cycle objects matching the filter criteria. The `id` from each cycle can be used as a `cycleId` in other endpoints."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/assessment/{assessmentId}/cycle/{cycleId}": {
      "get": {
        "tags": [
          "Assessment Cycles"
        ],
        "operationId": "getAssessmentCycle",
        "summary": "Get the assessment cycle specified by the assessmentId and cycleId",
        "description": "Get a specific assessment cycle from a vulnerability or configuration assessment specified by the `assessmentId` and `cycleId`.",
        "parameters": [
          {
            "in": "path",
            "name": "assessmentId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "cycleId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "200 OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssessmentCycleResponseObject"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    },
    "/assessment/{assessmentId}/cycle/{cycleId}/intake": {
      "post": {
        "tags": [
          "Assessment Cycles"
        ],
        "operationId": "postAssessmentCycleIntake",
        "summary": "Attach an existing CSV artifact to an assessment cycle's intake",
        "description": "## Overview\nAttaches an existing CSV file artifact to the intake of the assessment cycle specified by the `assessmentId` and `cycleId`. Only file artifacts with a CSV file will be accepted. The specified cycle must be a cycle on the specified assessment.\n\n### Evidence Handling\nIf the cycle's intake does not have an attached evidence, the evidence the artifact is attached to will automatically be attached to the intake. If the evidence attached to the cycle's intake is different from the evidence that the artifact is on, an error will be thrown.\n\n### Existing Artifacts\nIf the cycle's intake already has artifacts attached, the new artifact will be added without removing existing artifacts.",
        "parameters": [
          {
            "in": "path",
            "name": "assessmentId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "cycleId",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "artifactId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The internal uuid of the CSV file artifact to attach to the assessment cycle's intake.",
                    "example": "123e4567-e89b-12d3-a456-426614174000"
                  }
                },
                "required": [
                  "artifactId"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200 Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Unique identifier for the artifact",
                      "example": "123e4567-e89b-12d3-a456-426614174000"
                    },
                    "title": {
                      "type": "string",
                      "description": "Display title of the artifact. For file uploads, this defaults to the original filename if not provided during creation.",
                      "example": "Q1 2024 Vulnerability Assessment Report"
                    },
                    "originalFileName": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The original filename when the artifact was uploaded. This field is null for URL artifacts.",
                      "example": "vulnerability-report-q1-2024.pdf"
                    },
                    "pathname": {
                      "type": "string",
                      "description": "For file artifacts: the direct URL to retrieve the stored file. This link may expire after about 60 minutes; request the artifact again to get a new link. For URL artifacts: this is the full external URL to the resource.",
                      "example": "https://docs.company.com/security/policies/access-control"
                    },
                    "note": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Additional notes or comments about the artifact. Can be null if no note was provided.",
                      "example": "This report contains the results of the quarterly vulnerability scan conducted on our production infrastructure."
                    },
                    "isUrl": {
                      "type": "boolean",
                      "description": "Indicates the artifact type: true for URL artifacts, false for uploaded file artifacts",
                      "example": false
                    },
                    "fileType": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "MIME type of the file (e.g., application/pdf, image/png). This field is null for URL artifacts.",
                      "example": "application/pdf"
                    },
                    "createdAt": {
                      "type": "string",
                      "description": "ISO 8601 timestamp when the artifact was created in the system",
                      "example": "2022-01-01T00:00:00Z"
                    },
                    "createdBy": {
                      "type": "object",
                      "properties": {
                        "username": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "email": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "username",
                        "email"
                      ],
                      "description": "Information about the user who created the artifact",
                      "example": {
                        "username": "john.doe",
                        "email": "john.doe@company.com"
                      }
                    },
                    "effectiveDate": {
                      "type": "string",
                      "description": "The date when this artifact was effective or relevant. This may differ from createdAt and represents when the data was actually valid.",
                      "example": "2022-01-01T00:00:00.000Z"
                    }
                  },
                  "required": [
                    "id",
                    "title",
                    "pathname",
                    "isUrl",
                    "createdAt",
                    "createdBy"
                  ],
                  "description": "The artifact that was attached to the assessment cycle's intake."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "501": {
            "$ref": "#/components/responses/NotImplemented"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "authorization": {
        "type": "http",
        "scheme": "bearer",
        "description": "The API key used to authenticate requests."
      },
      "apiKey_DEPRECATED": {
        "type": "apiKey",
        "in": "header",
        "name": "Bearer",
        "description": "The API key used to authenticate requests "
      }
    },
    "links": {
      "getProjects": {
        "operationId": "getProjects",
        "description": "An `id` value of any of the projects listed in the response can be used as the `projectId` parameter in the `issues` route or the `getProjectById` function.",
        "parameters": {
          "projectId": "$response.body#/id"
        }
      },
      "getProjectById": {
        "operationId": "getProjectById",
        "description": "The `id` value of a project can be used as the `projectId` parameter in the `issues` route.",
        "parameters": {
          "projectId": "$response.body#/id"
        }
      },
      "getIssues": {
        "operationId": "getIssues",
        "description": "The `id` value of the issue(s) returned can be used as the `issueId` parameter in the `issues`, `recommendations`, `deviations`, and `milestones` routes.",
        "parameters": {
          "projectId": "$response.body#/id"
        }
      },
      "postIssue": {
        "operationId": "postIssue",
        "description": "The `id` value of the issue returned can be used as the `issueId` parameter in the `issues`, `recommendations`, `deviations`, and `milestones` routes.",
        "parameters": {
          "projectId": "$response.body#/id"
        }
      },
      "getRecommendations": {
        "operationId": "getRecommendations",
        "description": "The `id` value of the recommendation(s) returned can be used as the `recommendationId` parameter in the `recommendations` route.",
        "parameters": {
          "recommendationId": "$response.body#/id"
        }
      },
      "postRecommendation": {
        "operationId": "postRecommendation",
        "description": "The `id` value of the recommendation returned can be used as the `recommendationId` parameter in the `recommendations` route.",
        "parameters": {
          "recommendationId": "$response.body#/id"
        }
      },
      "getDeviations": {
        "operationId": "getDeviations",
        "description": "The `id` value of the deviation(s) returned can be used as the `deviationId` parameter in the `deviations` route.",
        "parameters": {
          "deviationId": "$response.body#/id"
        }
      },
      "postDeviation": {
        "operationId": "postDeviation",
        "description": "The `id` value of the deviation returned can be used as the `deviationId` parameter in the `deviations` route.",
        "parameters": {
          "deviationId": "$response.body#/id"
        }
      },
      "getMilestone": {
        "operationId": "getMilestone",
        "description": "The `id` value of the milestone(s) returned can be used as the `milestoneId` parameter in the `milestones` route.",
        "parameters": {
          "milestoneId": "$response.body#/id"
        }
      },
      "postMilestone": {
        "operationId": "postMilestone",
        "description": "The `id` value of the milestone returned can be used as the `milestoneId` parameter in the `milestones` route.",
        "parameters": {
          "milestoneId": "$response.body#/id"
        }
      },
      "getEvidence": {
        "operationId": "getEvidence",
        "description": "The `id` value of the evidence returned can be used as the `evidenceId` parameter in the `evidence` route.",
        "parameters": {
          "evidenceId": "$response.body#/id"
        }
      },
      "postEvidence": {
        "operationId": "postEvidence",
        "description": "The `id` value of the evidence returned can be used as the `evidenceId` parameter in the `evidence` route.",
        "parameters": {
          "evidenceId": "$response.body#/id"
        }
      },
      "getArtifacts": {
        "operationId": "getArtifacts",
        "description": "The `id` value of the artifact returned can be used as the `artifactId` parameter in the `artifacts` route.",
        "parameters": {
          "artifactId": "$response.body#/id"
        }
      },
      "postArtifacts": {
        "operationId": "postArtifact",
        "description": "The `id` value of the artifact returned can be used as the `artifactId` parameter in the `artifacts` route.",
        "parameters": {
          "artifactId": "$response.body#/id"
        }
      },
      "postUrlArtifact": {
        "operationId": "postUrlArtifact",
        "description": "The `id` value of the artifact returned can be used as the `artifactId` parameter in the `artifacts` route.",
        "parameters": {
          "artifactId": "$response.body#/id"
        }
      },
      "uploadArtifact": {
        "operationId": "uploadArtifact",
        "description": "The `id` value of the artifact returned can be used as the `artifactId` parameter in the `artifacts` route.",
        "parameters": {
          "artifactId": "$response.body#/id"
        }
      },
      "getAssessment": {
        "operationId": "getAssessment",
        "description": "The `assessmentId` value of the assessment returned can be used as the `assessmentId` parameter in assessment-related routes.",
        "parameters": {
          "assessmentId": "$response.body#/assessmentId"
        }
      },
      "postAssessmentIntake": {
        "operationId": "postAssessmentIntake",
        "description": "The `assessmentId` value of the assessment returned can be used as the `assessmentId` parameter in assessment-related routes.",
        "parameters": {
          "assessmentId": "$response.body#/assessmentId"
        }
      }
    },
    "schemas": {
      "ProjectResponseObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "A uuid that uniquely identifies an individual project within Paramify",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "type": {
            "type": "string",
            "enum": [
              "CUSTOM",
              "FEDRAMP_REV_4",
              "FEDRAMP_REV_5",
              "FEDRAMP_20x_P1",
              "DOD_REV_4",
              "DOD_REV_5",
              "STATERAMP",
              "TXRAMP",
              "CMMC_REV_2",
              "ADOBE_CCF_V5",
              "FISMA"
            ],
            "description": "The type of project",
            "example": "FEDRAMP_REV_5"
          },
          "name": {
            "type": "string",
            "description": "The name of the project",
            "example": "FedRAMP Rev 5"
          },
          "projectImpactLevels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "projectImpactLevel": {
                  "type": "string",
                  "enum": [
                    "CMMC_LEVEL_1",
                    "CMMC_LEVEL_2",
                    "CMMC_LEVEL_3",
                    "LI_SAAS",
                    "LOW",
                    "MODERATE",
                    "HIGH",
                    "LOW_SR",
                    "MODERATE_SR",
                    "TX_LEVEL_1",
                    "TX_LEVEL_2",
                    "IL2",
                    "IL4",
                    "IL5",
                    "IL6",
                    "SOC_2_C",
                    "SOC_2_CC",
                    "SOC_2_A",
                    "FISMA_LOW",
                    "FISMA_MODERATE",
                    "FISMA_HIGH",
                    "FEDRAMP_20x_LOW"
                  ]
                },
                "remarks": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "projectImpactLevel",
                "remarks"
              ]
            },
            "example": [
              {
                "projectImpactLevel": "SOC_2_A",
                "remarks": "Low impact"
              },
              {
                "projectImpactLevel": "SOC_2_C",
                "remarks": null
              }
            ],
            "description": "The impact levels of the project"
          },
          "systemName": {
            "type": "string"
          },
          "systemShortName": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "name",
          "projectImpactLevels",
          "systemName",
          "systemShortName"
        ],
        "description": "An object containing information about projects accessible to the API key."
      },
      "ErrorResponseObject": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "format": "uuid",
            "description": "A uuid that uniquely identifies an individual API request.",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "statusMessage": {
            "type": "string",
            "description": "A message describing the returned status."
          },
          "error": {
            "type": "object",
            "properties": {
              "message": {
                "type": "string",
                "description": "An error message providing additional information about the error"
              },
              "path": {
                "type": "string",
                "description": "The path of the request that caused the error."
              },
              "timestamp": {
                "type": "string",
                "description": "The date and time the error occurred as an ISO string.",
                "example": "1955-10-05T00:00:00.000Z"
              }
            },
            "required": [
              "message",
              "path",
              "timestamp"
            ]
          }
        },
        "required": [
          "requestId",
          "statusMessage",
          "error"
        ],
        "description": "An object containing information about an API error."
      },
      "projectId": {
        "type": "string",
        "format": "uuid",
        "description": "An id that represents a project within the Paramify application.",
        "example": "123e4567-e89b-12d3-a456-426614174000"
      },
      "poamId": {
        "type": "string",
        "description": "A user defined identifier for this issue. If used, the projectId is required.",
        "example": "FED-1"
      },
      "issueId": {
        "type": "string",
        "format": "uuid",
        "description": "An id that represents an issue within the Paramify application.",
        "example": "123e4567-e89b-12d3-a456-426614174000"
      },
      "IssueResponseObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "A uuid that uniquely identifies an individual issue within Paramify",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "The title of the issue",
            "example": "Issue Title Example"
          },
          "poamId": {
            "type": "string",
            "maxLength": 255,
            "description": "A user defined identifier for this issue",
            "example": "FED-1"
          },
          "level": {
            "type": "string",
            "enum": [
              "LOW",
              "MODERATE",
              "HIGH",
              "CRITICAL"
            ],
            "description": "The current risk level of the issue",
            "example": "MODERATE"
          },
          "originalLevel": {
            "type": "string",
            "enum": [
              "LOW",
              "MODERATE",
              "HIGH",
              "CRITICAL"
            ],
            "description": "The original risk level of the issue",
            "example": "HIGH"
          },
          "pointOfContact": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              },
              "email": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "email"
              }
            },
            "required": [
              "name"
            ],
            "description": "The point of contact for the issue",
            "example": {
              "name": "John Doe",
              "email": "john@example.com"
            }
          },
          "pluginId": {
            "type": [
              "string",
              "null"
            ],
            "description": "The plugin id associated with the issue",
            "example": "plugin-123"
          },
          "cveIds": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "The CVE IDs associated with the issue",
            "example": [
              "CVE-2022-1234"
            ]
          },
          "links": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                }
              },
              "required": [
                "url"
              ]
            },
            "description": "Links associated with the issue",
            "example": [
              {
                "title": "link1",
                "url": "https://example.com/link1"
              },
              {
                "title": "link2",
                "url": "https://example.com/link2"
              }
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "OPEN",
              "CLOSED"
            ],
            "description": "The current status of the issue",
            "example": "OPEN"
          },
          "statusDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "The date the current status was set",
            "example": "2022-01-01T00:00:00.000Z"
          },
          "origins": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/OriginObject"
            },
            "description": "The origins of the issue",
            "example": [
              {
                "name": "Qualys",
                "subtype": "COM_SAAS"
              }
            ]
          },
          "requirements": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "The requirements associated with the issue",
            "example": [
              "AC-1 Part a2",
              "AC-2 Part b"
            ]
          },
          "assets": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "The assets associated with the issue",
            "example": [
              "10.0.0.2",
              "asset2"
            ]
          },
          "dueDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "The date the issue is due",
            "example": "2022-01-01T00:00:00.000Z"
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Text describing the issue",
            "example": "This is a detailed description of the issue."
          },
          "remediationDescription": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of the remediation for the issue",
            "example": "This is a detailed description of the remediation."
          },
          "type": {
            "type": "string",
            "enum": [
              "CONTROL",
              "VULNERABILITY",
              "DOCUMENTATION",
              "CONFIGURATION",
              "NOT_SET"
            ],
            "description": "The type of observation for the issue",
            "example": "CONTROL"
          },
          "createdAt": {
            "type": "string",
            "description": "The date the issue was created",
            "example": "2022-01-01T00:00:00Z"
          },
          "deviations": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/DeviationResponseObject"
            },
            "description": "The deviations associated with the issue",
            "example": [
              {
                "id": "123e4567-e89b-12d3-a456-426614174000",
                "description": "Deviation description",
                "method": "TEST",
                "type": "VENDOR_DEPENDENCY",
                "createdAt": "2022-01-01T00:00:00Z",
                "deviationMetadata": {
                  "status": "PENDING",
                  "adjustedLevel": "MODERATE"
                }
              }
            ]
          },
          "recommendations": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/RecommendationResponseObject"
            },
            "description": "The recommendations associated with the issue",
            "example": [
              {
                "id": "123e4567-e89b-12d3-a456-426614174000",
                "description": "Recommendation description",
                "origins": [
                  {
                    "name": "Qualys",
                    "subtype": "COM_SAAS"
                  }
                ],
                "issueId": "123e4567-e89b-12d3-a456-426614174000"
              }
            ]
          },
          "milestones": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "A uuid that uniquely identifies the milestone",
                  "example": "123e4567-e89b-12d3-a456-426614174000"
                },
                "title": {
                  "type": "string",
                  "description": "The title of the milestone",
                  "example": "Milestone Title Example"
                },
                "description": {
                  "type": "string",
                  "description": "The description of the milestone",
                  "example": "This is a detailed description of the milestone."
                },
                "dueStart": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The start date of the milestone",
                  "example": "2022-01-01T00:00:00.000Z"
                },
                "dueEnd": {
                  "type": "string",
                  "description": "The end date of the milestone",
                  "example": "2022-01-01T00:00:00.000Z"
                }
              },
              "required": [
                "id",
                "title",
                "description",
                "dueEnd"
              ]
            },
            "description": "The milestones associated with the issue",
            "example": [
              {
                "id": "123e4567-e89b-12d3-a456-426614174000",
                "title": "Milestone title",
                "description": "Milestone description",
                "dueStart": "2022-01-01T00:00:00.000Z",
                "dueEnd": "2022-01-01T00:00:00.000Z"
              }
            ]
          }
        },
        "required": [
          "id",
          "title",
          "poamId",
          "level",
          "originalLevel",
          "type",
          "createdAt"
        ],
        "description": "An object containing information about issues contained within a project"
      },
      "OriginObject": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "subtype": {
            "type": "string",
            "enum": [
              "COM_AGREEMENT",
              "COM_CUSTOMER_MANAGED",
              "COM_FEDRAMP_SYSTEM",
              "COM_HARDWARE",
              "COM_IAAS",
              "COM_INTERCONNECTION",
              "COM_PAAS",
              "COM_PLAN",
              "COM_POLICY",
              "COM_PROCEDURE",
              "COM_PROCESS",
              "COM_SAAS",
              "COM_SERVICE",
              "COM_SOFTWARE",
              "COM_SUBNET",
              "COM_VALIDATION",
              "COM_STACK_PARAMETER",
              "PAR_ORGANIZATION",
              "PAR_PERSON",
              "ROL_NO_LOGICAL_ACCESS",
              "ROL_NOT_PRIVILEGED",
              "ROL_PRIVILEGED",
              "LOC_CAMPUS",
              "LOC_DATA_CENTER",
              "LOC_DATA_REGION_CLOUD",
              "LOC_OTHER",
              "LOC_REMOTE",
              "DAT_ACCOUNT_DATA",
              "DAT_CUSTOMER_DATA",
              "DAT_METADATA",
              "DAT_SUPPORT_ADMIN"
            ]
          }
        },
        "required": [
          "name"
        ],
        "description": "The name and subtype of the element within Paramify that created the issue",
        "example": {
          "name": "Qualys",
          "subtype": "COM_SAAS"
        }
      },
      "DeviationResponseObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "A uuid that uniquely identifies a deviation within Paramify",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "description": {
            "type": "string",
            "description": "The description of the deviation"
          },
          "method": {
            "type": "string",
            "enum": [
              "TEST",
              "EXAMINE",
              "INTERVIEW",
              "UNKNOWN"
            ],
            "description": "The method used to create the deviation",
            "example": "TEST"
          },
          "type": {
            "$ref": "#/components/schemas/DeviationObservationTypes"
          },
          "createdAt": {
            "type": "string",
            "description": "The date the deviation was created",
            "example": "2022-01-01T00:00:00.000Z"
          },
          "deviationMetadata": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "PENDING",
                  "ACCEPTED",
                  "REJECTED"
                ]
              },
              "adjustedLevel": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "LOW",
                  "MODERATE",
                  "HIGH",
                  "CRITICAL"
                ]
              }
            },
            "required": [
              "status"
            ],
            "description": "Deviation metadata object"
          }
        },
        "required": [
          "id",
          "description",
          "method",
          "type",
          "createdAt"
        ]
      },
      "DeviationObservationTypes": {
        "type": "string",
        "enum": [
          "FALSE_POSITIVE",
          "OPERATIONAL_REQUIREMENT",
          "RISK_ADJUSTMENT",
          "VENDOR_DEPENDENCY"
        ],
        "description": "Deviation observation types",
        "example": "VENDOR_DEPENDENCY"
      },
      "RecommendationResponseObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "A uuid that uniquely identifies the recommendation",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "description": {
            "type": "string",
            "description": "The description of the recommendation",
            "example": "This is a detailed description of the recommendation."
          },
          "origins": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255
                },
                "subtype": {
                  "type": "string",
                  "enum": [
                    "COM_AGREEMENT",
                    "COM_CUSTOMER_MANAGED",
                    "COM_FEDRAMP_SYSTEM",
                    "COM_HARDWARE",
                    "COM_IAAS",
                    "COM_INTERCONNECTION",
                    "COM_PAAS",
                    "COM_PLAN",
                    "COM_POLICY",
                    "COM_PROCEDURE",
                    "COM_PROCESS",
                    "COM_SAAS",
                    "COM_SERVICE",
                    "COM_SOFTWARE",
                    "COM_SUBNET",
                    "COM_VALIDATION",
                    "COM_STACK_PARAMETER",
                    "PAR_ORGANIZATION",
                    "PAR_PERSON",
                    "ROL_NO_LOGICAL_ACCESS",
                    "ROL_NOT_PRIVILEGED",
                    "ROL_PRIVILEGED",
                    "LOC_CAMPUS",
                    "LOC_DATA_CENTER",
                    "LOC_DATA_REGION_CLOUD",
                    "LOC_OTHER",
                    "LOC_REMOTE",
                    "DAT_ACCOUNT_DATA",
                    "DAT_CUSTOMER_DATA",
                    "DAT_METADATA",
                    "DAT_SUPPORT_ADMIN"
                  ]
                }
              },
              "required": [
                "name",
                "subtype"
              ],
              "description": "The name and subtype of the element within Paramify that created the issue",
              "example": {
                "name": "Qualys",
                "subtype": "COM_SAAS"
              }
            },
            "description": "The origins of the recommendation",
            "example": [
              {
                "name": "Qualys",
                "subtype": "COM_SAAS"
              }
            ]
          },
          "issueId": {
            "type": "string",
            "format": "uuid",
            "description": "A uuid that uniquely identifies the issue associated with the recommendation",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        },
        "required": [
          "id",
          "origins",
          "issueId"
        ]
      },
      "MilestoneObject": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the task",
            "example": "Task Title Example"
          },
          "description": {
            "type": "string",
            "description": "The description of the task",
            "example": "This is a detailed description of the task."
          },
          "dueStart": {
            "type": [
              "string",
              "null"
            ],
            "description": "The start date of the task",
            "example": "2022-01-01T00:00:00.000Z"
          },
          "dueEnd": {
            "type": "string",
            "description": "The end date of the task",
            "example": "2022-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "title",
          "description",
          "dueEnd"
        ]
      },
      "IssueObservationTypes": {
        "type": "string",
        "enum": [
          "CONTROL",
          "VULNERABILITY",
          "DOCUMENTATION",
          "CONFIGURATION",
          "NOT_SET"
        ],
        "description": "Issue observation types",
        "example": "CONTROL"
      },
      "DeviationMetadataObject": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "ACCEPTED",
              "REJECTED"
            ]
          },
          "adjustedLevel": {
            "type": "string",
            "enum": [
              "LOW",
              "MODERATE",
              "HIGH",
              "CRITICAL"
            ]
          }
        },
        "description": "Deviation metadata object"
      },
      "recommendationId": {
        "type": "string",
        "format": "uuid",
        "description": "An id that represents a recommendation within the Paramify application.",
        "example": "123e4567-e89b-12d3-a456-426614174000"
      },
      "deviationId": {
        "type": "string",
        "format": "uuid",
        "description": "An id that represents a deviation (\"Excuse\") within the Paramify application.",
        "example": "123e4567-e89b-12d3-a456-426614174000"
      },
      "milestoneId": {
        "type": "string",
        "format": "uuid",
        "description": "An id that represents a milestone within the Paramify application.",
        "example": "123e4567-e89b-12d3-a456-426614174000"
      },
      "ArtifactResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the artifact",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "title": {
            "type": "string",
            "description": "Display title of the artifact. For file uploads, this defaults to the original filename if not provided during creation.",
            "example": "Q1 2024 Vulnerability Assessment Report"
          },
          "originalFileName": {
            "type": [
              "string",
              "null"
            ],
            "description": "The original filename when the artifact was uploaded. This field is null for URL artifacts.",
            "example": "vulnerability-report-q1-2024.pdf"
          },
          "pathname": {
            "type": "string",
            "description": "For file artifacts: the direct URL to retrieve the stored file. This link may expire after about 60 minutes; request the artifact again to get a new link. For URL artifacts: this is the full external URL to the resource.",
            "example": "https://docs.company.com/security/policies/access-control"
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "description": "Additional notes or comments about the artifact. Can be null if no note was provided.",
            "example": "This report contains the results of the quarterly vulnerability scan conducted on our production infrastructure."
          },
          "isUrl": {
            "type": "boolean",
            "description": "Indicates the artifact type: true for URL artifacts, false for uploaded file artifacts",
            "example": false
          },
          "fileType": {
            "type": [
              "string",
              "null"
            ],
            "description": "MIME type of the file (e.g., application/pdf, image/png). This field is null for URL artifacts.",
            "example": "application/pdf"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 timestamp when the artifact was created in the system",
            "example": "2022-01-01T00:00:00Z"
          },
          "createdBy": {
            "type": "object",
            "properties": {
              "username": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "email": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "username",
              "email"
            ],
            "description": "Information about the user who created the artifact",
            "example": {
              "username": "john.doe",
              "email": "john.doe@company.com"
            }
          },
          "effectiveDate": {
            "type": "string",
            "description": "The date when this artifact was effective or relevant. This may differ from createdAt and represents when the data was actually valid.",
            "example": "2022-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "id",
          "title",
          "pathname",
          "isUrl",
          "createdAt",
          "createdBy"
        ],
        "description": "Complete artifact object containing all metadata, file information, and creation details. Artifacts can be either uploaded files or URL references."
      },
      "PostEvidenceSchema": {
        "type": "object",
        "properties": {
          "referenceId": {
            "type": "string",
            "description": "A custom reference identifier for the evidence. Must be unique. If not provided, a system-generated ID will be used.",
            "example": "EVD-1"
          },
          "name": {
            "type": "string",
            "description": "The name or title of the evidence",
            "example": "Example name"
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the evidence",
            "example": "Example description"
          },
          "instructions": {
            "type": "string",
            "description": "Instructions for how to use or interpret this evidence",
            "example": "Example instructions"
          },
          "remarks": {
            "type": "string",
            "description": "Additional remarks or notes about the evidence",
            "example": "Example remarks"
          },
          "automated": {
            "type": "boolean",
            "description": "Indicates whether this evidence was collected through automated means",
            "example": true
          }
        },
        "required": [
          "name"
        ],
        "description": "Schema for creating new evidence records"
      },
      "artifactId": {
        "type": "string",
        "format": "uuid",
        "description": "An id that represents an artifact within the Paramify application.",
        "example": "123e4567-e89b-12d3-a456-426614174000"
      },
      "UploadArtifactSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "A descriptive title for the artifact. If not provided, the original filename will be used as the title.",
            "example": "Q1 2024 Vulnerability Assessment Report"
          },
          "note": {
            "type": "string",
            "description": "Additional notes or comments about the artifact. Use this field to provide context, explanations, or any relevant information about the artifact.",
            "example": "This report contains the results of the quarterly vulnerability scan conducted on our production infrastructure."
          },
          "effectiveDate": {
            "type": "string",
            "description": "The date when this artifact was effective or relevant. This may differ from the upload date and represents when the data or document was actually valid. If not provided, defaults to the current date.",
            "example": "2022-01-01T00:00:00.000Z"
          }
        },
        "description": "Schema for creating new file artifacts. All fields are optional - you can upload a file with minimal metadata and enhance it later."
      },
      "PostUrlArtifactSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "A descriptive title for the URL artifact. If not provided, the URL domain will be used as the title.",
            "example": "Company Security Policy Documentation"
          },
          "pathName": {
            "type": "string",
            "description": "The complete URL to the external resource. Must be a valid URL starting with http:// or https://",
            "example": "https://docs.company.com/security/policies/access-control"
          },
          "note": {
            "type": "string",
            "description": "Additional notes or comments about the URL artifact. Use this to explain what the URL contains or why it is relevant to the evidence.",
            "example": "This URL points to our updated access control policy that was implemented in Q1 2024."
          },
          "effectiveDate": {
            "type": "string",
            "description": "The date when this URL artifact was effective or relevant. This represents when the content at the URL was valid or applicable. If not provided, defaults to the current date.",
            "example": "2023-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "pathName"
        ],
        "description": "Schema for creating new URL artifacts. The pathName field is required and must be a valid URL. All other fields are optional."
      },
      "PatchArtifactSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Update the title of the artifact. This will replace the existing title with the new value.",
            "example": "Updated Q1 2024 Vulnerability Assessment Report"
          },
          "note": {
            "type": "string",
            "description": "Update the note or comments for the artifact. This will replace the existing note with the new value.",
            "example": "Updated note: This report has been revised to include additional findings from the extended scan."
          },
          "effectiveDate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Update the effective date of the artifact. Set to null to remove the effective date, or provide a new date to update it.",
            "example": "2022-01-01T00:00:00.000Z"
          }
        },
        "description": "Schema for updating artifact metadata. All fields are optional - only include the fields you want to update. The underlying file or URL cannot be changed through this endpoint."
      },
      "assessmentId": {
        "type": "string",
        "format": "uuid",
        "description": "An id that represents an assessment within the Paramify application.",
        "example": "123e4567-e89b-12d3-a456-426614174000"
      },
      "AssessmentResponseObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The internal UUID of the assessment. This id can be used as an `assessmentId` in other endpoints.",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "name": {
            "type": "string",
            "description": "The name of the assessment.",
            "example": "Vulnerability Assessment Q1 2024"
          },
          "mechanism": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "description": "The internal UUID of the assessment mechanism.",
                "example": "123e4567-e89b-12d3-a456-426614174000"
              },
              "name": {
                "type": "string",
                "description": "The name of the assessment mechanism.",
                "example": "Nessus Scanner"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "The component element used as the mechanism of the assessment."
          },
          "targetComponents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "The internal UUID of the target component.",
                  "example": "123e4567-e89b-12d3-a456-426614174000"
                },
                "name": {
                  "type": "string",
                  "description": "The name of the target component.",
                  "example": "Web Application Server"
                }
              },
              "required": [
                "id",
                "name"
              ]
            },
            "description": "The target component(s) assigned to the assessment."
          },
          "frequency": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "MONTHLY",
              "QUARTERLY",
              "BIANNUALLY",
              "ANNUALLY"
            ],
            "description": "The frequency of the assessment.",
            "example": "QUARTERLY"
          },
          "type": {
            "type": "string",
            "enum": [
              "VULNERABILITY",
              "CONFIGURATION"
            ],
            "description": "The type of assessment, either vulnerability or configuration (other assessment types are not supported).",
            "example": "VULNERABILITY"
          },
          "referenceId": {
            "type": [
              "string",
              "null"
            ],
            "description": "The human-readable reference identifier of the assessment.",
            "example": "ASSESS-2024-Q1-001"
          },
          "cycles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssessmentCycleResponseObject"
            },
            "description": "The cycles associated with the assessment."
          }
        },
        "required": [
          "id",
          "name",
          "mechanism",
          "targetComponents",
          "frequency",
          "type",
          "referenceId",
          "cycles"
        ],
        "description": "The assessment details with mechanism, target components, and cycles."
      },
      "AssessmentCycleResponseObject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "The internal uuid that uniquely identifies an assessment cycle.",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "referenceId": {
            "type": [
              "string",
              "null"
            ],
            "description": "A custom reference identifier for the assessment cycle.",
            "example": "CYCLE-1"
          },
          "name": {
            "type": "string",
            "description": "The name of the assessment cycle. By default this is the month the cycle began or the year of the cycle for annual cycles.",
            "example": "January 2022"
          },
          "createdAt": {
            "type": "string",
            "description": "The ISO 8601 timestamp when the assessment cycle was created.",
            "example": "2022-01-01T00:00:00.000Z"
          },
          "startDate": {
            "type": "string",
            "description": "The ISO 8601 date when the assessment cycle begins.",
            "example": "2022-01-01T00:00:00.000Z"
          },
          "endDate": {
            "type": "string",
            "description": "The ISO 8601 date when the assessment cycle ends.",
            "example": "2022-01-31T00:00:00.000Z"
          }
        },
        "required": [
          "id",
          "referenceId",
          "name",
          "createdAt",
          "startDate",
          "endDate"
        ],
        "description": "An object containing information about an assessment cycle."
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponseObject"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Unauthorized",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponseObject"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponseObject"
            }
          }
        }
      },
      "NotFound": {
        "description": "Not Found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponseObject"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponseObject"
            }
          }
        }
      },
      "NotImplemented": {
        "description": "Not Implemented",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponseObject"
            }
          }
        }
      }
    }
  }
}