{
  "openapi": "3.1.0",
  "info": {
    "title": "AuditBadger Compliance Management API",
    "summary": "REST API for managing compliance projects, controls, evidence, and documentation",
    "description": "# AuditBadger Compliance Management API\n\nThis API provides programmatic access to the AuditBadger compliance management platform, enabling you to integrate compliance workflows into your existing systems.\n\n## Authentication\n\nAll API requests require a Bearer token for authentication. Include your API token in the Authorization header:\n\n```\nAuthorization: Bearer YOUR_API_TOKEN\n```\n\nAPI tokens can be generated from your account settings in the AuditBadger web application.\n\n## Getting Started\n\nThe API follows RESTful principles and uses cursor-based pagination for list endpoints. All requests and responses use JSON format unless specified otherwise (e.g., multipart/form-data for file uploads).\n\n### Basic Workflow\n\n1. **List Projects** - Get all compliance projects you have access to\n2. **Get Sections** - Retrieve sections within a project (requires project_id)\n3. **Get Controls** - List controls within a project or section (requires project_id)\n4. **Manage Evidence** - Create and link evidence to controls (requires control_id)\n\n## File Uploads\n\nEvidence and documents can include file attachments. Use multipart/form-data for file uploads:\n\n```bash\ncurl -X POST \"https://your-subdomain.auditbadger.com/api/v1/evidences?control_id=CONTROL_UUID\" \\\n  -H \"Authorization: Bearer YOUR_API_TOKEN\" \\\n  -F \"evidence[title]=Security Policy 2024\" \\\n  -F \"evidence[description]=Annual security policy\" \\\n  -F \"evidence[evidence_date]=2024-01-01\" \\\n  -F \"evidence[attachments_attributes][][file]=@/path/to/policy.pdf\"\n```\n\n## Comprehensive Documentation\n\nFor detailed guides, curl examples, and best practices, visit our complete API documentation:\n\n**[Complete API Documentation](https://auditbadger.com/api/v1/docs)**\n\n## Support\n\nFor API support, contact us at support@auditbadger.com\n",
    "termsOfService": "",
    "contact": {
      "name": "AuditBadger",
      "email": "hello@auditbadger.com",
      "url": "https://auditbadger.com/developers/"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://auditbadger.com/terms/"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://{account}.auditbadger.com",
      "description": "Your AuditBadger workspace. Replace {account} with your workspace subdomain.",
      "variables": {
        "account": {
          "default": "auth",
          "description": "Your AuditBadger workspace subdomain, as it appears in the URL you sign in at."
        }
      }
    }
  ],
  "paths": {
    "/api/v1/me": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "Get current user information",
        "description": "",
        "operationId": "GET__api_v1_me",
        "responses": {
          "404": {
            "$ref": "#/components/responses/3dbf50153d29cd615a196d6d04d86ce7"
          },
          "401": {
            "$ref": "#/components/responses/1b0ad6a6456aae59332ca22d5ae5b48f"
          },
          "403": {
            "$ref": "#/components/responses/6235213dbc5ad7a3034d2a72a3ecbbf5"
          },
          "500": {
            "$ref": "#/components/responses/c3ad200d1c72e6fe2c04a7c765c87a45"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/projects": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "List all compliance projects",
        "description": "Temporarily commented out - will be enabled after confirming OasRails is loaded\ninclude OasRails::Controller\n#\n# GET /api/v1/projects\ntags [\"Projects\"]\nsummary \"List all compliance projects\"\ndescription \"Returns a paginated list of compliance projects accessible by the authenticated user\"\nquery_param :cursor, type: :string, required: false, description: \"Cursor for pagination (last record ID)\"\nquery_param :per_page, type: :integer, required: false, description: \"Number of records per page (max 100, default 50)\"\nquery_param :project_id, type: :string, required: false, description: \"Filter by project ID\"\nresponse :ok, \"Projects retrieved successfully\", content: {\n  \"application/json\": {\n    schema: {\n      type: :object,\n      properties: {\n        data: {\n          type: :array,\n          items: {\"$ref\" => \"#/components/schemas/Project\"}\n        },\n        pagination: {\n          type: :object,\n          properties: {\n            next_cursor: {type: :string, nullable: true},\n            has_next: {type: :boolean},\n            count: {type: :integer}\n          }\n        }\n      }\n    }\n  }\n}\nresponse :unauthorized, \"Invalid or expired token\"\nresponse :forbidden, \"API access disabled for account\"",
        "operationId": "GET__api_v1_projects",
        "parameters": [
          {
            "$ref": "#/components/parameters/b9a0265038dbfa2074fa252fdc322b6f"
          },
          {
            "$ref": "#/components/parameters/3c2ee6d3c0eb551ff1a5a86a4522bd7d"
          },
          {
            "$ref": "#/components/parameters/bbf47a870ff0a1d58523e8544661ea37"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/b730005076c3dcbc8fb3bfa478619ee5"
          },
          "403": {
            "$ref": "#/components/responses/8d4d6767ef39ce1f9c648a131d1e7338"
          },
          "500": {
            "$ref": "#/components/responses/525b8d86fd39fa2b9b0170caece1dfbb"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/projects/{id}": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "Get project details",
        "description": "# GET /api/v1/projects/:id\ntags [\"Projects\"]\nsummary \"Get project details\"\ndescription \"Returns detailed information about a specific compliance project\"\npath_param :id, type: :string, required: true, description: \"Project ID (UUID)\"\nresponse :ok, \"Project retrieved successfully\", content: {\n  \"application/json\": {\n    schema: {\"$ref\" => \"#/components/schemas/Project\"}\n  }\n}\nresponse :not_found, \"Project not found\"\nresponse :unauthorized, \"Invalid or expired token\"\nresponse :forbidden, \"Access denied\"",
        "operationId": "GET__api_v1_projects_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/d0ce8e666259516d83848541280fef5a"
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/533ff89653466a0909e09eefc6f1344c"
          },
          "401": {
            "$ref": "#/components/responses/7659fcb1e177888df253af51e03967cf"
          },
          "403": {
            "$ref": "#/components/responses/f4fd15354ea41d654a3fbc5b98d4ef56"
          },
          "500": {
            "$ref": "#/components/responses/dd4d955d9e934369ea0397e994184f01"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/sections": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "List all compliance sections",
        "description": "",
        "operationId": "GET__api_v1_sections",
        "parameters": [
          {
            "$ref": "#/components/parameters/b9a0265038dbfa2074fa252fdc322b6f"
          },
          {
            "$ref": "#/components/parameters/3c2ee6d3c0eb551ff1a5a86a4522bd7d"
          },
          {
            "$ref": "#/components/parameters/04bc2199de9c87d7c80718c60785e6cd"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/6c0903d346923a8ffdfb755e75e1dcd2"
          },
          "403": {
            "$ref": "#/components/responses/5e8ef028de44a400669ee5ab21723116"
          },
          "500": {
            "$ref": "#/components/responses/5e625e682892b7245c1cfe79934da9e4"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/sections/{id}": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "Get section details",
        "description": "",
        "operationId": "GET__api_v1_sections_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/4d68f449df30559731a1fedd235a3ac3"
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/514779c6306ee8b43878b0451129f8c8"
          },
          "401": {
            "$ref": "#/components/responses/8223632191468f3217aa1bdcacd762a3"
          },
          "403": {
            "$ref": "#/components/responses/3af4b85a418ae45ae6a24ca27000c3b4"
          },
          "500": {
            "$ref": "#/components/responses/deae8973c31eed3b364cfd38f7ffba18"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/controls/{id}/link_document": {
      "post": {
        "tags": [
          "API"
        ],
        "summary": "Link a document to a control",
        "description": "",
        "operationId": "POST__api_v1_controls_{id}_link_document",
        "parameters": [
          {
            "$ref": "#/components/parameters/5651961da922aa4e1f5d8e9bb2783c83"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/54861307b7e11583c74d7d2346b77684"
        },
        "responses": {
          "401": {
            "$ref": "#/components/responses/c9e7fc0a996bda47e8e27d8b7d5f70e6"
          },
          "403": {
            "$ref": "#/components/responses/c7a40ef8611f5f0653762880d31f1e87"
          },
          "500": {
            "$ref": "#/components/responses/0ef8dca1aceb583640d6a14546e97f39"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/controls": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "List all compliance controls",
        "description": "",
        "operationId": "GET__api_v1_controls",
        "parameters": [
          {
            "$ref": "#/components/parameters/b9a0265038dbfa2074fa252fdc322b6f"
          },
          {
            "$ref": "#/components/parameters/3c2ee6d3c0eb551ff1a5a86a4522bd7d"
          },
          {
            "$ref": "#/components/parameters/f68b37573fc37435b241272e49bf34eb"
          },
          {
            "$ref": "#/components/parameters/66e32c488dd19ec8e9696c13454e4970"
          },
          {
            "$ref": "#/components/parameters/d7d75242a0c635cfd2b2e905b6614dc2"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/e2f9fc094962205cd09b73fd60676863"
          },
          "403": {
            "$ref": "#/components/responses/2d3e05e4d5563172444315814a637c66"
          },
          "500": {
            "$ref": "#/components/responses/337c2d304914886ed5a923421deaf5ae"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "API"
        ],
        "summary": "Create a control or subcontrol",
        "description": "",
        "operationId": "POST__api_v1_controls",
        "parameters": [
          {
            "$ref": "#/components/parameters/17f5145ac9053e2aa42fe701a2952736"
          },
          {
            "$ref": "#/components/parameters/ec0640be74cd7334998e628dbf6b8068"
          },
          {
            "$ref": "#/components/parameters/c039ddc6f713f1e90184cd5fa3257709"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/e92f765ecee7413d288181ed8d8746f1"
        },
        "responses": {
          "401": {
            "$ref": "#/components/responses/7f2c7a1b232035949e76e5858e7f2db8"
          },
          "403": {
            "$ref": "#/components/responses/9563c8c66fce7e8afb01e591947af841"
          },
          "500": {
            "$ref": "#/components/responses/d45f3df38303bfbe43d3c3ea59d85e36"
          },
          "422": {
            "$ref": "#/components/responses/77d44b75ee857122b6e1328aec6c6f61"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/controls/{id}": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "Get control details",
        "description": "",
        "operationId": "GET__api_v1_controls_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/5651961da922aa4e1f5d8e9bb2783c83"
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/5c6d1db64cbcb4776907f2d6a2e4df93"
          },
          "401": {
            "$ref": "#/components/responses/c378d280e4fc3e294d7f4d7bfedd6d3b"
          },
          "403": {
            "$ref": "#/components/responses/8b78daa5f1d92292b60d16f21c56042b"
          },
          "500": {
            "$ref": "#/components/responses/8fe67fb185104612f57d19a43f4620d9"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "API"
        ],
        "summary": "Update control implementation status",
        "description": "",
        "operationId": "PUT__api_v1_controls_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/5651961da922aa4e1f5d8e9bb2783c83"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/7db0277414befc8f1b74c3278b42d292"
        },
        "responses": {
          "404": {
            "$ref": "#/components/responses/78e98dd60f9852437732744278b616d1"
          },
          "401": {
            "$ref": "#/components/responses/66229dc652fd8fb0c41ce30a35fbc078"
          },
          "403": {
            "$ref": "#/components/responses/fa043b99fefa097c026cc903e8813a0d"
          },
          "500": {
            "$ref": "#/components/responses/eebc0f6528125eea72f1e8b02a60e1c5"
          },
          "422": {
            "$ref": "#/components/responses/d0d092b0795ad9374220bd41881b2624"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "API"
        ],
        "summary": "Update control implementation status",
        "description": "",
        "operationId": "PATCH__api_v1_controls_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/5651961da922aa4e1f5d8e9bb2783c83"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/9bf4c0bfd4ac2ae2944e4204d996c59f"
        },
        "responses": {
          "404": {
            "$ref": "#/components/responses/a7a6eb965bda8644ed4c3fbbe0df9493"
          },
          "401": {
            "$ref": "#/components/responses/1ed5a3d3604318cc73e7623106e56b59"
          },
          "403": {
            "$ref": "#/components/responses/c454936b248c4b87edce2147eb32549f"
          },
          "500": {
            "$ref": "#/components/responses/fa1d225202a7c41b06fbe49e4925d7b4"
          },
          "422": {
            "$ref": "#/components/responses/f3917f1e19dcb05d6e60de91893229b0"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/evidences/{id}/submit": {
      "post": {
        "tags": [
          "API"
        ],
        "summary": "Submit evidence for verification",
        "description": "",
        "operationId": "POST__api_v1_evidences_{id}_submit",
        "parameters": [
          {
            "$ref": "#/components/parameters/764c45ce71a17b9c7dc19a041535fd04"
          },
          {
            "$ref": "#/components/parameters/76272b2b89f58c3ea364104a161afb8e"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/73fd178683d2a1853ac762a2f270cf51"
          },
          "403": {
            "$ref": "#/components/responses/b0c4081a8196fb103199ba6e9b11411c"
          },
          "500": {
            "$ref": "#/components/responses/34b9afc83c6f053f2da996f70680cf5c"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/evidences/{id}/verify": {
      "post": {
        "tags": [
          "API"
        ],
        "summary": "Verify evidence",
        "description": "",
        "operationId": "POST__api_v1_evidences_{id}_verify",
        "parameters": [
          {
            "$ref": "#/components/parameters/764c45ce71a17b9c7dc19a041535fd04"
          },
          {
            "$ref": "#/components/parameters/76272b2b89f58c3ea364104a161afb8e"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/0388fac2fd88c4c246c296729badd2cf"
          },
          "403": {
            "$ref": "#/components/responses/239c792e9db20873088f192b69801992"
          },
          "500": {
            "$ref": "#/components/responses/dfd0da418f597baaca3b44a26886d522"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/evidences/{id}/reject": {
      "post": {
        "tags": [
          "API"
        ],
        "summary": "Reject evidence",
        "description": "",
        "operationId": "POST__api_v1_evidences_{id}_reject",
        "parameters": [
          {
            "$ref": "#/components/parameters/764c45ce71a17b9c7dc19a041535fd04"
          },
          {
            "$ref": "#/components/parameters/76272b2b89f58c3ea364104a161afb8e"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/70e7930f612e699606475b44aa70584a"
        },
        "responses": {
          "401": {
            "$ref": "#/components/responses/7ffb5da95075c6e488f4a58920a0e3e1"
          },
          "403": {
            "$ref": "#/components/responses/0d94ea1eb24637b5e59178944afa049c"
          },
          "500": {
            "$ref": "#/components/responses/a0d22e415360572026254700d8d21eed"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/evidences": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "List all compliance evidence",
        "description": "",
        "operationId": "GET__api_v1_evidences",
        "parameters": [
          {
            "$ref": "#/components/parameters/b9a0265038dbfa2074fa252fdc322b6f"
          },
          {
            "$ref": "#/components/parameters/3c2ee6d3c0eb551ff1a5a86a4522bd7d"
          },
          {
            "$ref": "#/components/parameters/9b9258a3f83bfe46bb87d092dabab36d"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/ca884e1a02c8ccae2ad518cb092dafdf"
          },
          "403": {
            "$ref": "#/components/responses/d6f069e28a6e88d93feedb0e720e6e58"
          },
          "500": {
            "$ref": "#/components/responses/e3ebfcf1d45a5d45836c04dee27c505a"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "post": {
        "tags": [
          "API"
        ],
        "summary": "Create new evidence or evidence version",
        "description": "",
        "operationId": "POST__api_v1_evidences",
        "parameters": [
          {
            "$ref": "#/components/parameters/5ea34d2ae1641f2d81261f1cfdc78f72"
          },
          {
            "$ref": "#/components/parameters/dc8d244f090b5a50a745f60fe0051c21"
          },
          {
            "$ref": "#/components/parameters/9df3916aba7f465ba8d982b23c4c8915"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/e579ab0010d27bb4162fb6442fceaf46"
        },
        "responses": {
          "401": {
            "$ref": "#/components/responses/7856481619e9a87bd288d17bdf399a28"
          },
          "403": {
            "$ref": "#/components/responses/243520965b05eba409036c72ef129236"
          },
          "500": {
            "$ref": "#/components/responses/916806e683f5e81e592b0b7ba041ffec"
          },
          "422": {
            "$ref": "#/components/responses/4b8bde6370ea0d326f45e5eae2271e2e"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/evidences/{id}": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "Get evidence details",
        "description": "",
        "operationId": "GET__api_v1_evidences_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/764c45ce71a17b9c7dc19a041535fd04"
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/53f4dfdff7785ffcf514f7d212a37d6a"
          },
          "401": {
            "$ref": "#/components/responses/a7fb268f8c676d5030c08b90739594c3"
          },
          "403": {
            "$ref": "#/components/responses/0daffc4e0b125d27394c4d01e3f72d91"
          },
          "500": {
            "$ref": "#/components/responses/9c518ccefb887773daa2ca4590acee13"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "API"
        ],
        "summary": "Update evidence",
        "description": "",
        "operationId": "PUT__api_v1_evidences_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/764c45ce71a17b9c7dc19a041535fd04"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/dc942807725b28dfddc4d574edfb5d5e"
        },
        "responses": {
          "404": {
            "$ref": "#/components/responses/8f3b3c91e79217a937960b8edfd89549"
          },
          "401": {
            "$ref": "#/components/responses/5fdc3b0a860ca556b6fac17614202abb"
          },
          "403": {
            "$ref": "#/components/responses/f6d5a37a238eec27f51d7b15de6fab97"
          },
          "500": {
            "$ref": "#/components/responses/57a856c48666e63807c13b17010001f5"
          },
          "422": {
            "$ref": "#/components/responses/c9e6083f04259b266339561df8103e8f"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "patch": {
        "tags": [
          "API"
        ],
        "summary": "Update evidence",
        "description": "",
        "operationId": "PATCH__api_v1_evidences_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/764c45ce71a17b9c7dc19a041535fd04"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/221ba92de9719ef74ce54b6ea5d1a04a"
        },
        "responses": {
          "404": {
            "$ref": "#/components/responses/0bdc97ca24e15feaa78107f75478dbad"
          },
          "401": {
            "$ref": "#/components/responses/ad0e3cb548d908626d29f02d0b1e4e2a"
          },
          "403": {
            "$ref": "#/components/responses/b309d7827f110447078981953f87b019"
          },
          "500": {
            "$ref": "#/components/responses/6f4a4f27b56fe875f5333abbfb0e0dc4"
          },
          "422": {
            "$ref": "#/components/responses/2bca1a676299adbe9d5971c9d167843d"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      },
      "delete": {
        "tags": [
          "API"
        ],
        "summary": "Delete or unlink evidence from control",
        "description": "",
        "operationId": "DELETE__api_v1_evidences_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/764c45ce71a17b9c7dc19a041535fd04"
          },
          {
            "$ref": "#/components/parameters/740ffb9b9439234064c075afcbb081db"
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/c5c4d9279dde0379036d168132a942af"
          },
          "401": {
            "$ref": "#/components/responses/602c9b09ba974b1a4bad053f06b9873a"
          },
          "403": {
            "$ref": "#/components/responses/7192b2cca1c1338f337cbe86a272bbc2"
          },
          "500": {
            "$ref": "#/components/responses/77ea8c21f779de22617e2e06e2ec5654"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/documents": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "List all compliance documents",
        "description": "",
        "operationId": "GET__api_v1_documents",
        "parameters": [
          {
            "$ref": "#/components/parameters/b9a0265038dbfa2074fa252fdc322b6f"
          },
          {
            "$ref": "#/components/parameters/3c2ee6d3c0eb551ff1a5a86a4522bd7d"
          },
          {
            "$ref": "#/components/parameters/1daf92bd850958b85ac8b128b6f9f73b"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/dfabd17d568c55998e8e5398fdff475f"
          },
          "403": {
            "$ref": "#/components/responses/159ebedc6ae427b33b7978346dbc5ca2"
          },
          "500": {
            "$ref": "#/components/responses/0497c173d2b1a247e2693b742470179d"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/documents/{id}": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "Get document details",
        "description": "",
        "operationId": "GET__api_v1_documents_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/dc03b238f5c9dffec69a0694020b56dc"
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/347033a4896af95ee38b41b691e43b9b"
          },
          "401": {
            "$ref": "#/components/responses/313692cc79a92fa4ec9dcac4246aaec7"
          },
          "403": {
            "$ref": "#/components/responses/afcdc8f6f141f2f9498c0285a1374baa"
          },
          "500": {
            "$ref": "#/components/responses/74475a1d21752b7453e25951c39daf36"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/document_series": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "List document series",
        "description": "",
        "operationId": "GET__api_v1_document_series",
        "parameters": [
          {
            "$ref": "#/components/parameters/b9a0265038dbfa2074fa252fdc322b6f"
          },
          {
            "$ref": "#/components/parameters/3c2ee6d3c0eb551ff1a5a86a4522bd7d"
          }
        ],
        "responses": {
          "401": {
            "$ref": "#/components/responses/ed9832225c2e801fdcba8713f4f92e14"
          },
          "403": {
            "$ref": "#/components/responses/841a38791787147974b5d80b33d6de41"
          },
          "500": {
            "$ref": "#/components/responses/6815ef0ea5d351d891160b2a191242b1"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    },
    "/api/v1/document_series/{id}": {
      "get": {
        "tags": [
          "API"
        ],
        "summary": "Get document series details",
        "description": "",
        "operationId": "GET__api_v1_document_series_{id}",
        "parameters": [
          {
            "$ref": "#/components/parameters/490f29c32495f63f201a03fb7bb76d9e"
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/5d99524da1aa8d5df14dd9a6e162e015"
          },
          "401": {
            "$ref": "#/components/responses/89a71261b37bd356b93ed59e62074ce6"
          },
          "403": {
            "$ref": "#/components/responses/b3070ff790b6c48417c40e663d74f544"
          },
          "500": {
            "$ref": "#/components/responses/3f904a56a7dec50d6773edaea050aa85"
          }
        },
        "security": [
          {
            "bearer": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "d79407304a1f91dbdcfa03f0d06dc75e": {
        "type": "object",
        "properties": {
          "status": {
            "type": "integer"
          },
          "error": {
            "type": "string"
          }
        },
        "required": [
          "status"
        ]
      },
      "5707ab6fa14f0842cf52f5861cff5691": {
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string"
          }
        }
      },
      "09bff03e09b79586dc3b2c603b73d0df": {
        "type": "object",
        "properties": {
          "control": "{identifier: !string, title: !string, description: string, control_type: string, implementation_status: string, implementation_notes: string}"
        }
      },
      "fef329264af1201f837c871ff2393f0e": {
        "type": "object",
        "properties": {
          "control": "{implementation_status: string, implementation_notes: string}"
        }
      },
      "7486cd5840c002526543e1768bffe9a3": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string"
          }
        }
      },
      "7b4fd1d6a67a2a773968328964a625c1": {
        "type": "object",
        "properties": {
          "evidence": "{title: !string, description: string, evidence_type: string, evidence_date: date, expires_at: date, versioning_reason: string, version_notes: string, attachments_attributes: array<hash{file: file}>}"
        }
      },
      "3e257b36af9bfed200a065aed5836761": {
        "type": "object",
        "properties": {
          "evidence": "{title: string, description: string, evidence_date: date, expires_at: date, attachments_attributes: array<hash{id: string, file: file, _destroy: string}>}"
        }
      }
    },
    "responses": {
      "3dbf50153d29cd615a196d6d04d86ce7": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "1b0ad6a6456aae59332ca22d5ae5b48f": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "6235213dbc5ad7a3034d2a72a3ecbbf5": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "c3ad200d1c72e6fe2c04a7c765c87a45": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "b730005076c3dcbc8fb3bfa478619ee5": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "8d4d6767ef39ce1f9c648a131d1e7338": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "525b8d86fd39fa2b9b0170caece1dfbb": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "533ff89653466a0909e09eefc6f1344c": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "7659fcb1e177888df253af51e03967cf": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "f4fd15354ea41d654a3fbc5b98d4ef56": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "dd4d955d9e934369ea0397e994184f01": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "6c0903d346923a8ffdfb755e75e1dcd2": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "5e8ef028de44a400669ee5ab21723116": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "5e625e682892b7245c1cfe79934da9e4": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "514779c6306ee8b43878b0451129f8c8": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "8223632191468f3217aa1bdcacd762a3": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "3af4b85a418ae45ae6a24ca27000c3b4": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "deae8973c31eed3b364cfd38f7ffba18": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "c9e7fc0a996bda47e8e27d8b7d5f70e6": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "c7a40ef8611f5f0653762880d31f1e87": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "0ef8dca1aceb583640d6a14546e97f39": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "e2f9fc094962205cd09b73fd60676863": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "2d3e05e4d5563172444315814a637c66": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "337c2d304914886ed5a923421deaf5ae": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "7f2c7a1b232035949e76e5858e7f2db8": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "9563c8c66fce7e8afb01e591947af841": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "d45f3df38303bfbe43d3c3ea59d85e36": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "77d44b75ee857122b6e1328aec6c6f61": {
        "description": "The server could not process the request due to semantic errors. Please check your input and try again.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "5c6d1db64cbcb4776907f2d6a2e4df93": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "c378d280e4fc3e294d7f4d7bfedd6d3b": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "8b78daa5f1d92292b60d16f21c56042b": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "8fe67fb185104612f57d19a43f4620d9": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "a7a6eb965bda8644ed4c3fbbe0df9493": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "1ed5a3d3604318cc73e7623106e56b59": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "c454936b248c4b87edce2147eb32549f": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "fa1d225202a7c41b06fbe49e4925d7b4": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "f3917f1e19dcb05d6e60de91893229b0": {
        "description": "The server could not process the request due to semantic errors. Please check your input and try again.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "78e98dd60f9852437732744278b616d1": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "66229dc652fd8fb0c41ce30a35fbc078": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "fa043b99fefa097c026cc903e8813a0d": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "eebc0f6528125eea72f1e8b02a60e1c5": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "d0d092b0795ad9374220bd41881b2624": {
        "description": "The server could not process the request due to semantic errors. Please check your input and try again.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "73fd178683d2a1853ac762a2f270cf51": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "b0c4081a8196fb103199ba6e9b11411c": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "34b9afc83c6f053f2da996f70680cf5c": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "0388fac2fd88c4c246c296729badd2cf": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "239c792e9db20873088f192b69801992": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "dfd0da418f597baaca3b44a26886d522": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "7ffb5da95075c6e488f4a58920a0e3e1": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "0d94ea1eb24637b5e59178944afa049c": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "a0d22e415360572026254700d8d21eed": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "ca884e1a02c8ccae2ad518cb092dafdf": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "d6f069e28a6e88d93feedb0e720e6e58": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "e3ebfcf1d45a5d45836c04dee27c505a": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "7856481619e9a87bd288d17bdf399a28": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "243520965b05eba409036c72ef129236": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "916806e683f5e81e592b0b7ba041ffec": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "4b8bde6370ea0d326f45e5eae2271e2e": {
        "description": "The server could not process the request due to semantic errors. Please check your input and try again.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "53f4dfdff7785ffcf514f7d212a37d6a": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "a7fb268f8c676d5030c08b90739594c3": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "0daffc4e0b125d27394c4d01e3f72d91": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "9c518ccefb887773daa2ca4590acee13": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "0bdc97ca24e15feaa78107f75478dbad": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "ad0e3cb548d908626d29f02d0b1e4e2a": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "b309d7827f110447078981953f87b019": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "6f4a4f27b56fe875f5333abbfb0e0dc4": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "2bca1a676299adbe9d5971c9d167843d": {
        "description": "The server could not process the request due to semantic errors. Please check your input and try again.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "8f3b3c91e79217a937960b8edfd89549": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "5fdc3b0a860ca556b6fac17614202abb": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "f6d5a37a238eec27f51d7b15de6fab97": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "57a856c48666e63807c13b17010001f5": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "c9e6083f04259b266339561df8103e8f": {
        "description": "The server could not process the request due to semantic errors. Please check your input and try again.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "c5c4d9279dde0379036d168132a942af": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "602c9b09ba974b1a4bad053f06b9873a": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "7192b2cca1c1338f337cbe86a272bbc2": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "77ea8c21f779de22617e2e06e2ec5654": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "dfabd17d568c55998e8e5398fdff475f": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "159ebedc6ae427b33b7978346dbc5ca2": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "0497c173d2b1a247e2693b742470179d": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "347033a4896af95ee38b41b691e43b9b": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "313692cc79a92fa4ec9dcac4246aaec7": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "afcdc8f6f141f2f9498c0285a1374baa": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "74475a1d21752b7453e25951c39daf36": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "ed9832225c2e801fdcba8713f4f92e14": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "841a38791787147974b5d80b33d6de41": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "6815ef0ea5d351d891160b2a191242b1": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "5d99524da1aa8d5df14dd9a6e162e015": {
        "description": "The requested resource could not be found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "89a71261b37bd356b93ed59e62074ce6": {
        "description": "You are not authorized to access this resource. You need to authenticate yourself first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "b3070ff790b6c48417c40e663d74f544": {
        "description": "You are not allowed to access this resource. You do not have the necessary permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      },
      "3f904a56a7dec50d6773edaea050aa85": {
        "description": "An unexpected error occurred on the server. The server was unable to process the request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/d79407304a1f91dbdcfa03f0d06dc75e"
            }
          }
        }
      }
    },
    "parameters": {
      "b9a0265038dbfa2074fa252fdc322b6f": {
        "name": "cursor",
        "in": "query",
        "description": "Cursor for pagination (last record ID)",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "3c2ee6d3c0eb551ff1a5a86a4522bd7d": {
        "name": "per_page",
        "in": "query",
        "description": "Number of records per page (max 100, default 50)",
        "required": false,
        "schema": {
          "type": "integer"
        },
        "style": "form"
      },
      "bbf47a870ff0a1d58523e8544661ea37": {
        "name": "project_id",
        "in": "query",
        "description": "Filter by specific project UUID",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "d0ce8e666259516d83848541280fef5a": {
        "name": "id",
        "in": "path",
        "description": "Project UUID",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      },
      "04bc2199de9c87d7c80718c60785e6cd": {
        "name": "project_id",
        "in": "query",
        "description": "Filter sections by project UUID (required)",
        "required": true,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "4d68f449df30559731a1fedd235a3ac3": {
        "name": "id",
        "in": "path",
        "description": "Section UUID",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      },
      "5651961da922aa4e1f5d8e9bb2783c83": {
        "name": "id",
        "in": "path",
        "description": "Control UUID",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      },
      "f68b37573fc37435b241272e49bf34eb": {
        "name": "project_id",
        "in": "query",
        "description": "Filter controls by project UUID (required)",
        "required": true,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "66e32c488dd19ec8e9696c13454e4970": {
        "name": "section_id",
        "in": "query",
        "description": "Filter controls by section UUID (optional)",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "d7d75242a0c635cfd2b2e905b6614dc2": {
        "name": "include_subcontrols",
        "in": "query",
        "description": "Include subcontrols nested within parent controls (default: false)",
        "required": false,
        "schema": {
          "type": "boolean"
        },
        "style": "form"
      },
      "17f5145ac9053e2aa42fe701a2952736": {
        "name": "parent_id",
        "in": "query",
        "description": "UUID of the parent control (optional - if provided, creates a subcontrol)",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "ec0640be74cd7334998e628dbf6b8068": {
        "name": "project_id",
        "in": "query",
        "description": "UUID of the project (required for regular controls, ignored for subcontrols)",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "c039ddc6f713f1e90184cd5fa3257709": {
        "name": "section_id",
        "in": "query",
        "description": "UUID of the section (required for regular controls, ignored for subcontrols)",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "764c45ce71a17b9c7dc19a041535fd04": {
        "name": "id",
        "in": "path",
        "description": "Evidence UUID",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      },
      "76272b2b89f58c3ea364104a161afb8e": {
        "name": "control_id",
        "in": "query",
        "description": "UUID of control (required)",
        "required": true,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "9b9258a3f83bfe46bb87d092dabab36d": {
        "name": "control_id",
        "in": "query",
        "description": "Filter evidence by control UUID (required)",
        "required": true,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "5ea34d2ae1641f2d81261f1cfdc78f72": {
        "name": "control_id",
        "in": "query",
        "description": "UUID of control to link evidence to (required for new evidence)",
        "required": true,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "dc8d244f090b5a50a745f60fe0051c21": {
        "name": "project_id",
        "in": "query",
        "description": "UUID of project for validation (optional but recommended)",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "9df3916aba7f465ba8d982b23c4c8915": {
        "name": "parent_evidence_id",
        "in": "query",
        "description": "UUID of parent evidence to create a new version (optional)",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "740ffb9b9439234064c075afcbb081db": {
        "name": "control_id",
        "in": "query",
        "description": "UUID of control to unlink evidence from (required)",
        "required": true,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "1daf92bd850958b85ac8b128b6f9f73b": {
        "name": "filter",
        "in": "query",
        "description": "Set to \"current\" to return only the current published version of each document",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "form"
      },
      "dc03b238f5c9dffec69a0694020b56dc": {
        "name": "id",
        "in": "path",
        "description": "Document UUID",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      },
      "490f29c32495f63f201a03fb7bb76d9e": {
        "name": "id",
        "in": "path",
        "description": "Document series UUID",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      }
    },
    "requestBodies": {
      "54861307b7e11583c74d7d2346b77684": {
        "description": "Document ID to link",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/5707ab6fa14f0842cf52f5861cff5691"
            },
            "examples": {
              "link_document": {
                "$ref": "#/components/examples/080d2fcafaf25cb54f8e67fbe88428b2"
              }
            }
          }
        },
        "required": false
      },
      "e92f765ecee7413d288181ed8d8746f1": {
        "description": "Control creation parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/09bff03e09b79586dc3b2c603b73d0df"
            },
            "examples": {
              "create_regular_control": {
                "$ref": "#/components/examples/c82529b1fdfcf4a7054cb1377aeb27d6"
              },
              "create_subcontrol": {
                "$ref": "#/components/examples/131bc38b599a634d0040276f9b3a7e73"
              }
            }
          }
        },
        "required": false
      },
      "9bf4c0bfd4ac2ae2944e4204d996c59f": {
        "description": "Control update parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/fef329264af1201f837c871ff2393f0e"
            },
            "examples": {
              "update_control": {
                "$ref": "#/components/examples/1a7725e94ee5f3c271d13f249e452b9c"
              }
            }
          }
        },
        "required": false
      },
      "7db0277414befc8f1b74c3278b42d292": {
        "description": "Control update parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/fef329264af1201f837c871ff2393f0e"
            },
            "examples": {
              "update_control": {
                "$ref": "#/components/examples/1a7725e94ee5f3c271d13f249e452b9c"
              }
            }
          }
        },
        "required": false
      },
      "70e7930f612e699606475b44aa70584a": {
        "description": "Rejection parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/7486cd5840c002526543e1768bffe9a3"
            },
            "examples": {
              "reject_with_reason": {
                "$ref": "#/components/examples/eb8031bdfdcd0da305cbf4e437bbe833"
              }
            }
          }
        },
        "required": false
      },
      "e579ab0010d27bb4162fb6442fceaf46": {
        "description": "Evidence creation parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/7b4fd1d6a67a2a773968328964a625c1"
            },
            "examples": {
              "create_new_evidence": {
                "$ref": "#/components/examples/fe8f6fd45591e400674508938f0217b0"
              },
              "create_evidence_with_attachment": {
                "$ref": "#/components/examples/25405228fad98ce402d3905a1d70d96a"
              },
              "create_evidence_version": {
                "$ref": "#/components/examples/115101064275326ae46f71706b330db8"
              }
            }
          }
        },
        "required": false
      },
      "221ba92de9719ef74ce54b6ea5d1a04a": {
        "description": "Evidence update parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/3e257b36af9bfed200a065aed5836761"
            },
            "examples": {
              "update_evidence": {
                "$ref": "#/components/examples/77456b2945f6dab452922a1221c76bb0"
              },
              "add_attachment": {
                "$ref": "#/components/examples/4f1be67d52e2e6ec7f8b33221acfaa4b"
              },
              "remove_attachment": {
                "$ref": "#/components/examples/f483a7c7ba4910dcce3f9b80f7ef4196"
              }
            }
          }
        },
        "required": false
      },
      "dc942807725b28dfddc4d574edfb5d5e": {
        "description": "Evidence update parameters",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/3e257b36af9bfed200a065aed5836761"
            },
            "examples": {
              "update_evidence": {
                "$ref": "#/components/examples/77456b2945f6dab452922a1221c76bb0"
              },
              "add_attachment": {
                "$ref": "#/components/examples/4f1be67d52e2e6ec7f8b33221acfaa4b"
              },
              "remove_attachment": {
                "$ref": "#/components/examples/f483a7c7ba4910dcce3f9b80f7ef4196"
              }
            }
          }
        },
        "required": false
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "A bearer token that will be supplied within an `Authorization` header as `bearer <token>`."
      }
    },
    "headers": {},
    "examples": {
      "080d2fcafaf25cb54f8e67fbe88428b2": {
        "summary": "Link document",
        "value": {
          "document_id": "550e8400-e29b-41d4-a716-446655440000"
        }
      },
      "c82529b1fdfcf4a7054cb1377aeb27d6": {
        "summary": "Create regular control",
        "value": {
          "project_id": "project-uuid",
          "section_id": "section-uuid",
          "control": {
            "identifier": "CC1.1",
            "title": "Access Control Policy",
            "description": "Policy for access control"
          }
        }
      },
      "131bc38b599a634d0040276f9b3a7e73": {
        "summary": "Create subcontrol",
        "value": {
          "parent_id": "parent-control-uuid",
          "control": {
            "identifier": "CC1.1.1",
            "title": "Sub-control for CC1.1",
            "description": "Detailed implementation step"
          }
        }
      },
      "1a7725e94ee5f3c271d13f249e452b9c": {
        "summary": "Update control",
        "value": {
          "control": {
            "implementation_status": "implemented",
            "implementation_notes": "Completed on 2024-01-15"
          }
        }
      },
      "eb8031bdfdcd0da305cbf4e437bbe833": {
        "summary": "Reject with reason",
        "value": {
          "reason": "Evidence is outdated"
        }
      },
      "fe8f6fd45591e400674508938f0217b0": {
        "summary": "Create new evidence",
        "value": {
          "control_id": "control-uuid",
          "evidence": {
            "title": "Security Policy 2024",
            "description": "Annual security policy",
            "evidence_date": "2024-01-01"
          }
        }
      },
      "25405228fad98ce402d3905a1d70d96a": {
        "summary": "Create evidence with attachment",
        "value": {
          "control_id": "control-uuid",
          "evidence": {
            "title": "Security Policy 2024",
            "description": "Annual security policy",
            "evidence_date": "2024-01-01",
            "attachments_attributes": [
              {
                "file": "base64_encoded_file_or_multipart_upload"
              }
            ]
          }
        }
      },
      "115101064275326ae46f71706b330db8": {
        "summary": "Create evidence version",
        "value": {
          "parent_evidence_id": "uuid-here",
          "evidence": {
            "title": "Security Policy 2024 v2",
            "versioning_reason": "scheduled_renewal",
            "version_notes": "Annual review"
          }
        }
      },
      "77456b2945f6dab452922a1221c76bb0": {
        "summary": "Update evidence",
        "value": {
          "evidence": {
            "title": "Updated Title",
            "description": "Updated description"
          }
        }
      },
      "4f1be67d52e2e6ec7f8b33221acfaa4b": {
        "summary": "Add attachment",
        "value": {
          "evidence": {
            "attachments_attributes": [
              {
                "file": "binary_data"
              }
            ]
          }
        }
      },
      "f483a7c7ba4910dcce3f9b80f7ef4196": {
        "summary": "Remove attachment",
        "value": {
          "evidence": {
            "attachments_attributes": [
              {
                "id": "attachment-uuid",
                "_destroy": "1"
              }
            ]
          }
        }
      }
    },
    "links": {},
    "callbacks": {}
  },
  "security": [
    {
      "bearer": []
    }
  ],
  "tags": [
    {
      "name": "API",
      "description": "AuditBadger API endpoints."
    }
  ],
  "externalDocs": {
    "description": "AuditBadger API reference",
    "url": "https://auth.auditbadger.com/api/v1/docs"
  }
}