diff --git a/.spectral.json b/.spectral.json
deleted file mode 100644
index 033772b6..00000000
--- a/.spectral.json
+++ /dev/null
@@ -1,1263 +0,0 @@
-{
- "description": "",
- "formats": [
- "oas2",
- "oas3",
- "oas3.0",
- "oas3.1"
- ],
- "aliases": {
- "API_Document": {
- "description": "The complete API specification document. This can be used to target any part of the OpenAPI document using **field**.\n\n*Use this if you don't find specific targets that cater to your usecase.* ",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$"
- ]
- }
- ]
- },
- "API_Description": {
- "description": "The top level description in an API document",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.info.description"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.info.description"
- ]
- }
- ]
- },
- "Operation_Object": {
- "description": "The complete operation object. Use it in combo with field object.",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "#Path_Item[get,put,post,delete,options,head,patch,trace]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "#Path_Item[get,put,post,delete,options,head,patch,trace]"
- ]
- }
- ]
- },
- "Operation_Responses": {
- "description": "Responses for all operations including get, put, post, delete, options, head, patch, trace.",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "#Operation_Object.responses"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "#Operation_Object.responses"
- ]
- }
- ]
- },
- "Path_Item": {
- "description": "",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.paths[*]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.paths[*]"
- ]
- }
- ]
- },
- "API_Contact": {
- "description": "The top level description in an API document",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.info.contact"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.info.contact"
- ]
- }
- ]
- },
- "API_License": {
- "description": "The top level description in an API document",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.info.license"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.info.license"
- ]
- }
- ]
- },
- "All_Markdown": {
- "description": "All markdown descriptions across the document.",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..[description,title]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..[description,title]"
- ]
- }
- ]
- },
- "API_Tags": {
- "description": "Tags on an API object",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.tags"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.tags"
- ]
- }
- ]
- },
- "API_Server": {
- "description": "API hosts defined in the API specification",
- "targets": [
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.servers"
- ]
- },
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.host"
- ]
- }
- ]
- },
- "Response_All_Object": {
- "description": "All responses (object) in an API",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.responses",
- "#Operation_Responses",
- "$..responses"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.components.responses",
- "#Operation_Responses",
- "$..responses"
- ]
- }
- ]
- },
- "API_Server_URL": {
- "description": "API host urls defined in the API specification",
- "targets": [
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.servers[*].url"
- ]
- },
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.host"
- ]
- }
- ]
- },
- "All_Ref": {
- "description": "All references throughout the API",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..[?(@property === '$ref')]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..[?(@property === '$ref')]"
- ]
- }
- ]
- },
- "All_Enum": {
- "description": "All references throughout the API",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..[?(@ && @.enum && @.type)]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..[?(@ && @.enum && @.type)]"
- ]
- }
- ]
- },
- "Request_Parameter_All": {
- "description": "All request parameters",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..parameters[*]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..parameters[*]"
- ]
- }
- ]
- },
- "Request_Parameter_Query": {
- "description": "All request query parameters",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..parameters[?(@.in==\"query\")]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..parameters[?(@.in==\"query\")]"
- ]
- }
- ]
- },
- "Request_Parameter_Header": {
- "description": "All request header parameters",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..parameters[?(@.in==\"header\")]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..parameters[?(@.in==\"header\")]"
- ]
- }
- ]
- },
- "Request_Parameter_Cookie": {
- "description": "All request cookie parameters",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..parameters[?(@.in==\"cookie\")]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..parameters[?(@.in==\"cookie\")]"
- ]
- }
- ]
- },
- "Request_Parameter_Path": {
- "description": "All request path parameters",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..parameters[?(@.in==\"path\")]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..parameters[?(@.in==\"path\")]"
- ]
- }
- ]
- },
- "Path_Object": {
- "description": "Path object. Usually used to target the Path key e.g. `/users/{userId}`",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.paths"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.paths"
- ]
- }
- ]
- },
- "All_Example_Schema": {
- "description": "All examples for schemas",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..definitions..[?(@property !== 'properties' && @ && (@.example !== void 0 || @['x-example'] !== void 0 || @.default !== void 0) && (@.enum || @.type || @.format || @.$ref || @.properties || @.items))]",
- "$..parameters..[?(@property !== 'properties' && @ && (@.example !== void 0 || @['x-example'] !== void 0 || @.default !== void 0) && (@.enum || @.type || @.format || @.$ref || @.properties || @.items))]",
- "$..responses..[?(@property !== 'properties' && @ && (@.example !== void 0 || @['x-example'] !== void 0 || @.default !== void 0) && (@.enum || @.type || @.format || @.$ref || @.properties || @.items))]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.components.schemas..[?(@property !== 'properties' && @ && (@ && @.example !== void 0 || @.default !== void 0) && (@.enum || @.type || @.format || @.$ref || @.properties || @.items))]",
- "$..content..[?(@property !== 'properties' && @ && (@ && @.example !== void 0 || @.default !== void 0) && (@.enum || @.type || @.format || @.$ref || @.properties || @.items))]",
- "$..headers..[?(@property !== 'properties' && @ && (@ && @.example !== void 0 || @.default !== void 0) && (@.enum || @.type || @.format || @.$ref || @.properties || @.items))]",
- "$..parameters..[?(@property !== 'properties' && @ && (@ && @.example !== void 0 || @.default !== void 0) && (@.enum || @.type || @.format || @.$ref || @.properties || @.items))]"
- ]
- }
- ]
- },
- "API_Document_RecursiveSearch": {
- "description": "The complete API specification document. This can be used to target any part of the OpenAPI document using **field**.\n\n*Use this if you don't find specific targets that cater to your usecase.* ",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.."
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.."
- ]
- }
- ]
- },
- "All_Example": {
- "description": "All examples across the API document",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..examples[*]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.components.examples[*]",
- "$.paths[*][*]..content[*].examples[*]",
- "$.paths[*][*]..parameters[*].examples[*]",
- "$.components.parameters[*].examples[*]",
- "$.paths[*][*]..headers[*].examples[*]",
- "$.components.headers[*].examples[*]"
- ]
- }
- ]
- },
- "All_Example_Media": {
- "description": "All examples for schemas",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$..responses..[?(@ && @.schema && @.examples)]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$..content..[?(@ && @.schema && (@.example !== void 0 || @.examples))]",
- "$..headers..[?(@ && @.schema && (@.example !== void 0 || @.examples))]",
- "$..parameters..[?(@ && @.schema && (@.example !== void 0 || @.examples))]"
- ]
- }
- ]
- },
- "API_Tags_Item": {
- "description": "Tags on an API object",
- "targets": [
- {
- "formats": [
- "oas2"
- ],
- "given": [
- "$.tags[*]"
- ]
- },
- {
- "formats": [
- "oas3"
- ],
- "given": [
- "$.tags[*]"
- ]
- }
- ]
- }
- },
- "rules": {
- "contact-url": {
- "given": [
- "#API_Contact"
- ],
- "severity": "warn",
- "then": {
- "function": "truthy",
- "field": "url"
- },
- "description": "The `contact` object should have a valid organization URL. \r\n\r\n**Valid Example**\r\n\r\n```json lineNumbers\r\n{\r\n \"contact\": {\r\n ... ,\r\n \"url\": \"https://acme.com\",\r\n ... \r\n},\r\n```",
- "message": "Contact object should have \"url\"."
- },
- "contact-email": {
- "given": [
- "#API_Contact"
- ],
- "severity": "warn",
- "then": {
- "function": "truthy",
- "field": "email"
- },
- "description": "The `contact` object should have a valid email. \r\n\r\n**Valid Example**\r\n\r\n```json lineNumbers\r\n{\r\n \"contact\": {\r\n ... ,\r\n ... ,\r\n \"email\": \"support.contact@acme.com\"\r\n},\r\n```",
- "message": "Contact object should have \"email\""
- },
- "info-contact": {
- "given": [
- "#API_Document"
- ],
- "severity": "warn",
- "then": {
- "function": "truthy",
- "field": "info.contact"
- },
- "description": "The `info' object should include a `contact` object.\r\n\r\n**Valid Example**\r\n\r\n```json lineNumbers\r\n{\r\n \"info\": {\r\n ... ,\r\n ... ,\r\n \"contact\": {\r\n \"name\": \"ACME Corporation\",\r\n \"url\": \"https://acme.com\",\r\n \"email\": \"support.contact@acme.com\"\r\n }\r\n } \r\n}\r\n```",
- "message": "Info object should have \"contact\" object."
- },
- "info-description": {
- "given": [
- "#API_Document"
- ],
- "severity": "warn",
- "then": {
- "function": "truthy",
- "field": "info.description"
- },
- "description": "The `info` object should have a `description` object.\r\n\r\n**Valid Example**\r\n\r\n```json lineNumbers\r\n{\r\n \"info\": {\r\n ... ,\r\n ... ,\r\n \"description\": \"This describes my API.\",\r\n ... \r\n }\r\n } \r\n}\r\n```",
- "message": "Info object should have \"description\" object."
- },
- "info-license": {
- "given": [
- "#API_Document"
- ],
- "severity": "warn",
- "then": {
- "function": "truthy",
- "field": "info.license"
- },
- "description": "The `info` object should have a `license` object. \r\n\r\n**Valid Example**\r\n\r\n```json lineNumbers\r\n{\r\n \"info\": {\r\n ... ,\r\n ... ,\r\n \"license\": {\r\n \"name\": \"Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)\",\r\n \"url\": \"https://creativecommons.org/licenses/by-sa/4.0/\"\r\n }\r\n } \r\n}\r\n```",
- "message": "Info object should have \"license\" object."
- },
- "license-url": {
- "given": [
- "#API_License"
- ],
- "severity": "warn",
- "then": {
- "function": "truthy",
- "field": "url"
- },
- "description": "The `license` object should include a valid url.\r\n\r\n**Valid Example**\r\n\r\n```json lineNumbers\r\n{\r\n \"license\": {\r\n \"name\": \"Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)\",\r\n \"url\": \"https://creativecommons.org/licenses/by-sa/4.0/\"\r\n }\r\n}\r\n```",
- "message": "License object should include \"url\"."
- },
- "no-eval-in-markdown": {
- "given": [
- "#All_Markdown"
- ],
- "severity": "warn",
- "then": {
- "function": "pattern",
- "functionOptions": {
- "notMatch": "eval\\("
- }
- },
- "description": "Markdown descriptions should not contain [`eval()` functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval), which pose a security risk. \r\n\r\n**Invalid Example**\r\n\r\n```json lineNumbers\r\n{ \r\n \"info\": {\r\n ... ,\r\n ... , \r\n \"description\": \"API for users. eval()\"",
- "message": "Markdown descriptions must not have \"eval(\"."
- },
- "no-script-tags-in-markdown": {
- "given": [
- "#All_Markdown"
- ],
- "severity": "warn",
- "then": {
- "function": "pattern",
- "functionOptions": {
- "notMatch": "',\"\r\n```",
- "message": "Markdown descriptions must not have \"