// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs

import "github.com/swaggo/swag"

const docTemplate = `{
    "schemes": {{ marshal .Schemes }},
    "swagger": "2.0",
    "info": {
        "description": "{{escape .Description}}",
        "title": "{{.Title}}",
        "contact": {},
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/api/v1/caasm/api-assets": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List API route assets with filtering by keyword, environment, domain, namespace, service, plugin, and route kind; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List API route assets",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20, max 100",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Environment",
                        "name": "environment",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Domain name",
                        "name": "domain",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Namespace",
                        "name": "namespace",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Service name",
                        "name": "service_name",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Plugin name",
                        "name": "plugin",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Route kind",
                        "name": "route_kind",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by external route flag",
                        "name": "external",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are API route asset entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/api-assets/config/active": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return the currently active API asset discovery config.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get the active API route config",
                "responses": {
                    "200": {
                        "description": "Success; data is the active API route config",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/handler.caasmAPIRouteConfigSummaryDTO"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/assets": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List assets of all kinds (IP/domain/service, etc.) with multi-dimensional filtering and ETag caching (If-None-Match -\u003e 304).",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List assets",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20, max 100",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Asset type (AssetType)",
                        "name": "type",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Owner email",
                        "name": "owner",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Owner employee ID",
                        "name": "owner_employee_id",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Cloud account ID",
                        "name": "cloud_account_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Environment",
                        "name": "environment",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Asset status (AssetStatus)",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Criticality",
                        "name": "criticality",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Cloud provider (CloudProvider)",
                        "name": "provider",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Service name",
                        "name": "service",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword search",
                        "name": "q",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are asset list entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/assets/environments": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return the set of asset environment values, for filter dropdowns.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List environments",
                "responses": {
                    "200": {
                        "description": "Success; data is an array of environment names",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/assets/ports/search": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Semantic alias of ListPorts; parameters and response are identical to GET /api/v1/caasm/ports.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Search asset ports",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Port number",
                        "name": "port",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Protocol (tcp/udp)",
                        "name": "protocol",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Port status",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Exposure",
                        "name": "exposure",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Service name",
                        "name": "service",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Asset service name",
                        "name": "asset_service",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are port entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/assets/services": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return the set of service names that assets belong to, for filter dropdowns.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List asset services",
                "responses": {
                    "200": {
                        "description": "Success; data is an array of service names",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/assets/{id}": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get details of a single asset by ID.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get asset detail",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the asset detail object (including asset, ip_addresses, domain_assets, relationships)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/assets/{id}/tags": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get the tag key-value set of an asset by ID.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get asset tags",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the asset tag key-value set",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "additionalProperties": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/cloud-accounts": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List cloud accounts with filtering by keyword, provider, and status; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List cloud accounts",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Cloud provider (CloudProvider)",
                        "name": "provider",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Cloud account status (CloudAccountStatus)",
                        "name": "status",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are cloud account entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/cloud-accounts/{id}": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get a single cloud account by ID.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get cloud account detail",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Cloud account ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the cloud account detail",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/handler.cloudAccountDTO"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/cloud-accounts/{id}/jobs": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List sync jobs of a cloud account by ID, paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List cloud account sync jobs",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Cloud account ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are sync job entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/dns-records": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List DNS records with filtering by keyword, record type, owner department, domain, record value, and alert presence; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List DNS records",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "DNS record type (A/CNAME, etc.)",
                        "name": "type",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Owner department ID",
                        "name": "owner_department_id",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Domain ID",
                        "name": "domain_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Domain name",
                        "name": "domain_name",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Record value fuzzy match",
                        "name": "value",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by alert presence",
                        "name": "has_alert",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are DNS record entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/dns-records/{id}/comments": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get comments of a DNS record by ID.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get DNS record comments",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "DNS record ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is an array of comments (caasmmodel.DNSRecordComment)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/domains": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List domain assets with filtering by keyword, environment, status, registrar, etc.; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List domains",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Environment",
                        "name": "environment",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Domain status",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Zone type",
                        "name": "zone_type",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Domain class",
                        "name": "domain_class",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Registrar",
                        "name": "registrar",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Cloud provider (CloudProvider)",
                        "name": "provider",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by forwarding presence",
                        "name": "forwarding",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by peering presence",
                        "name": "peering",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by auto-renew flag",
                        "name": "auto_renew",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are domain entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/domains/registrars": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return the set of domain registrar names, for filter dropdowns.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List domain registrars",
                "responses": {
                    "200": {
                        "description": "Success; data is an array of registrar names",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/domains/stats": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return domain statistics (total, expiring soon, expired).",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get domain statistics",
                "responses": {
                    "200": {
                        "description": "Success; data is the domain statistics object",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/service.DomainStatsResult"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/ip-assets": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List IP assets with filtering by keyword, cloud provider, region, and exposure; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List IP assets",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20, max 100",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Cloud provider (CloudProvider)",
                        "name": "provider",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Cloud account ID",
                        "name": "cloud_account_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Asset service name",
                        "name": "asset_service",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Region",
                        "name": "region",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Exposure, enum: public / private (other values return 400)",
                        "name": "exposure",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are IP asset entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/ports": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List ports (IP/domain port index) with filtering by port number, protocol, status, exposure, and service; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List ports",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Port number",
                        "name": "port",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Protocol (tcp/udp)",
                        "name": "protocol",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Port status",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Exposure",
                        "name": "exposure",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Service name",
                        "name": "service",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Asset service name",
                        "name": "asset_service",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are port entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/ports/high-risk": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return high-risk ports.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List high-risk ports",
                "responses": {
                    "200": {
                        "description": "Success; data is an array of high-risk ports",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/definitions/handler.caasmPortListItemDTO"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/ports/stats": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return port statistics (total, public/private, status distribution, top open ports).",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get port statistics",
                "responses": {
                    "200": {
                        "description": "Success; data is the port statistics object",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/service.PortStatsResult"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/ports/{id}": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get a single port by ID (including evidence).",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get port detail",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Port ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the port detail",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/handler.caasmPortDetailDTO"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/relationships/graph": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return relationship graph data (nodes + edges) among assets, domains, IPs, and ports.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get asset relationship graph",
                "responses": {
                    "200": {
                        "description": "Success; data is the relationship graph (nodes + edges)",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/service.RelationshipGraph"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/sync-jobs": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List sync jobs with filtering by job type, status, cloud account, and execution mode; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List sync jobs",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Job type",
                        "name": "job_type",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Sync job status (SyncJobStatus)",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Cloud account ID",
                        "name": "cloud_account_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Execution mode",
                        "name": "execution_mode",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are sync job entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/sync-jobs/{id}": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get a single sync job by ID.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "Get sync job detail",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Sync job ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the sync job detail (caasmmodel.SyncJob)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/caasm/sync-jobs/{id}/events": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get the event stream of a sync job by ID, supporting limit and before_id/after_id cursors.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "caasm"
                ],
                "summary": "List sync job events",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Sync job ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Maximum number of events to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Return only events before this event ID (mutually exclusive with after_id)",
                        "name": "before_id",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Return only events after this event ID (mutually exclusive with before_id)",
                        "name": "after_id",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is an array of sync job events (caasmmodel.SyncJobEvent)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List vulnerabilities with filtering by multi-select status/severity, application, discovery phase, network environment, keyword, tags, etc.; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "List vulnerabilities",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20, max 100",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Status multi-select (comma-separated)",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Severity multi-select (comma-separated)",
                        "name": "severity",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Application",
                        "name": "application",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Discovery phase",
                        "name": "discovery_phase",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Discovery channel",
                        "name": "discovery_channel",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Network environment",
                        "name": "network_env",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "search",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Tag multi-select (comma-separated)",
                        "name": "tags",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Dependency name",
                        "name": "dependency_name",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Dependency version",
                        "name": "dependency_version",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Owner employee ID",
                        "name": "owner_employee_id",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Submitter user ID",
                        "name": "submitter_user_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Sort field",
                        "name": "sort_by",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Sort order (asc/desc)",
                        "name": "sort_order",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Batch group ID",
                        "name": "batch_group_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Batch scope (batched/single)",
                        "name": "batch_scope",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by PoC verification presence",
                        "name": "has_poc",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by overdue flag",
                        "name": "is_overdue",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by third-party vulnerability flag",
                        "name": "is_third_party",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Submitted from (RFC3339)",
                        "name": "submitted_from",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Submitted to (RFC3339)",
                        "name": "submitted_to",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are vulnerability entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Submit a new vulnerability. title, severity_level, status and discoverer_employee_id are always required; the configurable submission_required_fields (see GET /api/v1/vulnerabilities/config) may mark more fields as required. Agent (API Key) constraints: submitter_user_id is forced to the Key owner's user ID (request value ignored), and submitted_at/sla_deadline are forced to server-side defaults (request values ignored). To embed images in description, upload them first via POST /api/v1/vulnerabilities/uploads + POST /api/v1/vulnerabilities/uploads/confirm, then reference each attachment in the HTML with data-sc-attachment-id=\"\u003cattachment_id\u003e\". Requires the vuln:submit_findings permission (for agents: the Key scope must include it).",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Submit a vulnerability",
                "parameters": [
                    {
                        "description": "Vulnerability submission",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.createVulnerabilityRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the created vulnerability (vulnmodel.Vulnerability)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities/uploads": {
            "post": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Step 1 of the image attachment flow: create a pending attachment and return its attachment_id plus a presigned upload_url. Step 2: PUT the file bytes directly to upload_url (no API Key needed; the presigned URL itself is the credential). Step 3: call POST /api/v1/vulnerabilities/uploads/confirm with the attachment_id. Images only (png/jpeg/webp/gif; SVG is not allowed), max 10MB — enforced at confirm time. Reference the confirmed attachment in vulnerability descriptions with data-sc-attachment-id.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Presign an image attachment upload",
                "parameters": [
                    {
                        "description": "Filename and content type",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.uploadAttachmentRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data contains attachment_id, upload_url, key, expires_in and optional view_url",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities/uploads/confirm": {
            "post": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Step 3 of the image attachment flow: validate the uploaded object and mark the attachment ready. Only the original uploader may confirm it. Images only (content type png/jpeg/webp/gif; SVG is not allowed) and size at most 10MB; a non-compliant object is deleted and the attachment is rejected.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Confirm an image attachment upload",
                "parameters": [
                    {
                        "description": "Attachment ID returned by the presign step",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.confirmAttachmentUploadRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the confirmed attachment (vulnmodel.VulnerabilityAttachment) plus optional view_url",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities/{public_id}": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get a single vulnerability by public_id; sensitive fields are trimmed according to the actions available to the current user.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Get vulnerability detail",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vulnerability public ID",
                        "name": "public_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data contains vulnerability (vulnmodel.Vulnerability) and actions ([]string)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Partially update a vulnerability by public_id; only fields present in the body are changed (an explicit null clears a nullable field). Requires vuln:edit_details (for agents, the Key scope must include it). Agent (API Key) constraint: any change to poc_text, verification_steps, has_poc_verification, submitted_at or sla_deadline is rejected with 403 for the whole request. To embed new images in description, upload them first via POST /api/v1/vulnerabilities/uploads + POST /api/v1/vulnerabilities/uploads/confirm and reference them with data-sc-attachment-id.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Update vulnerability details",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vulnerability public ID",
                        "name": "public_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Fields to update",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.updateVulnerabilityPayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the updated vulnerability (vulnmodel.Vulnerability)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities/{public_id}/comments": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get comments of a vulnerability by public_id.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "List vulnerability comments",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vulnerability public ID",
                        "name": "public_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is an array of comments",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/definitions/vulnmodel.VulnerabilityComment"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Add a comment to a vulnerability by public_id. The operator must be the vulnerability's submitter, its fixer, or hold a security role; agent (API Key) comments are attributed to the Key name in the event stream.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Add a vulnerability comment",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vulnerability public ID",
                        "name": "public_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Comment content",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.addCommentRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the created comment (vulnmodel.VulnerabilityComment)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities/{public_id}/events": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Get lifecycle events (status transitions, field changes, etc.) of a vulnerability by public_id.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Get vulnerability change events",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vulnerability public ID",
                        "name": "public_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is an array of vulnerability events (vulnmodel.VulnerabilityEvent)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities/{public_id}/transition": {
            "post": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Transition a vulnerability by public_id; the body field status is the target status and selects one of five actions: retesting (=request_retest, submit fix for retest: only from active, and the operator must be the vulnerability's fixer; agent Keys additionally need the vuln:request_retest scope), fixed (=mark_fixed, verification passed: only from retesting), false_positive (=mark_false_positive) or risk_accepted (=mark_risk_accepted) (from active or retesting), active (=reopen: from fixed, false_positive or risk_accepted). mark_fixed/mark_false_positive/mark_risk_accepted/reopen require vuln:close_findings (for agents, the Key scope must include it). Every transition is reversible via reopen; message is recorded in the event stream.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Transition vulnerability status",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vulnerability public ID",
                        "name": "public_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Target status and optional message",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.transitionStatusRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is the transitioned vulnerability (vulnmodel.Vulnerability)",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerabilities/{public_id}/viewers/candidates": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Search employee candidates (name/email/department, etc.) that can be granted as authorized viewers of the vulnerability, by public_id.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Search authorized viewer candidates",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vulnerability public ID",
                        "name": "public_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Keyword (name/email)",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Employee ID list (comma-separated)",
                        "name": "ids",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is an array of employee candidates",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/definitions/handler.authorizedViewerCandidateDTO"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerability-discovery-channels": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List vulnerability discovery channels with filtering by keyword and system-only flag; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "List vulnerability discovery channels",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "System channels only",
                        "name": "system_only",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are vulnerability discovery channel entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerability-sources": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List vulnerability sources with filtering by keyword and system-only flag; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "List vulnerability sources",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "System sources only",
                        "name": "system_only",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are vulnerability source entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerability-tags": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List vulnerability tags with filtering by keyword, category, and system-only flag; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "List vulnerability tags",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Tag category",
                        "name": "category",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "System tags only",
                        "name": "system_only",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are vulnerability tag entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerability-tags/stats": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "Return tag statistics.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "Get vulnerability tag statistics",
                "responses": {
                    "200": {
                        "description": "Success; data is the tag statistics object",
                        "schema": {
                            "$ref": "#/definitions/response.APIResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/vulnerability-types": {
            "get": {
                "security": [
                    {
                        "agentApiKey": []
                    },
                    {
                        "bearerAuth": []
                    }
                ],
                "description": "List vulnerability types with filtering by keyword, category, severity, and system-only flag; paginated.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "vuln"
                ],
                "summary": "List vulnerability types",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number, default 1",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size, default 20",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Keyword",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Type category",
                        "name": "category",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Severity",
                        "name": "severity",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "System types only",
                        "name": "system_only",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success; data is a paginated structure whose items are vulnerability type entries",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.APIResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/definitions/response.PaginatedResponse"
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "caasmmodel.AssetStatus": {
            "type": "string",
            "enum": [
                "active",
                "inactive"
            ],
            "x-enum-varnames": [
                "AssetStatusActive",
                "AssetStatusInactive"
            ]
        },
        "caasmmodel.AssetType": {
            "type": "string",
            "enum": [
                "compute",
                "storage",
                "database",
                "network",
                "application",
                "identity",
                "other"
            ],
            "x-enum-varnames": [
                "AssetTypeCompute",
                "AssetTypeStorage",
                "AssetTypeDatabase",
                "AssetTypeNetwork",
                "AssetTypeApplication",
                "AssetTypeIdentity",
                "AssetTypeOther"
            ]
        },
        "caasmmodel.CircuitBreakerConfig": {
            "type": "object",
            "properties": {
                "cool_off_sec": {
                    "type": "integer"
                },
                "threshold": {
                    "type": "integer"
                }
            }
        },
        "caasmmodel.CloudAccountStatus": {
            "type": "string",
            "enum": [
                "active",
                "inactive"
            ],
            "x-enum-varnames": [
                "CloudAccountStatusActive",
                "CloudAccountStatusInactive"
            ]
        },
        "caasmmodel.CloudProvider": {
            "type": "string",
            "enum": [
                "aws",
                "gcp",
                "azure",
                "alibaba",
                "godaddy",
                "other"
            ],
            "x-enum-varnames": [
                "CloudProviderAWS",
                "CloudProviderGCP",
                "CloudProviderAzure",
                "CloudProviderAlibaba",
                "CloudProviderGoDaddy",
                "CloudProviderOther"
            ]
        },
        "caasmmodel.ThrottlingServiceSpec": {
            "type": "object",
            "properties": {
                "max_concurrency": {
                    "type": "integer"
                },
                "min_concurrency": {
                    "type": "integer"
                },
                "token_capacity": {
                    "type": "integer"
                },
                "token_refill_per_sec": {
                    "type": "number"
                }
            }
        },
        "handler.addCommentRequest": {
            "type": "object",
            "required": [
                "content"
            ],
            "properties": {
                "content": {
                    "type": "string"
                }
            }
        },
        "handler.authorizedViewerCandidateDTO": {
            "type": "object",
            "properties": {
                "avatar_url": {
                    "type": "string"
                },
                "department_id": {
                    "type": "string"
                },
                "department_name": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "job_title": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "handler.caasmAPIRouteConfigSummaryDTO": {
            "type": "object",
            "properties": {
                "activated_at": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "is_active": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "route_count": {
                    "type": "integer"
                },
                "source_type": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                },
                "uploaded_by": {
                    "type": "integer"
                },
                "yaml_sha256": {
                    "type": "string"
                }
            }
        },
        "handler.caasmAssetListItemDTO": {
            "type": "object",
            "properties": {
                "asset_type": {
                    "$ref": "#/definitions/caasmmodel.AssetType"
                },
                "cloud_account": {
                    "$ref": "#/definitions/handler.cloudAccountSummary"
                },
                "cloud_account_id": {
                    "type": "integer"
                },
                "criticality": {
                    "type": "string"
                },
                "department": {
                    "$ref": "#/definitions/internal_modules_caasm_handler.departmentSummary"
                },
                "department_id": {
                    "type": "string"
                },
                "environment": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "ip_addresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "last_seen_at": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "native_id": {
                    "type": "string"
                },
                "owner_employee": {
                    "$ref": "#/definitions/internal_modules_caasm_handler.employeeSummary"
                },
                "owner_employee_id": {
                    "type": "integer"
                },
                "provider": {
                    "type": "string"
                },
                "region": {
                    "type": "string"
                },
                "service": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/caasmmodel.AssetStatus"
                }
            }
        },
        "handler.caasmEffectiveThrottlingDTO": {
            "type": "object",
            "properties": {
                "adaptive_threshold": {
                    "type": "integer"
                },
                "adaptive_window_sec": {
                    "type": "integer"
                },
                "circuit_breaker": {
                    "$ref": "#/definitions/caasmmodel.CircuitBreakerConfig"
                },
                "cool_off_sec": {
                    "type": "integer"
                },
                "enabled": {
                    "type": "boolean"
                },
                "max_concurrency": {
                    "type": "integer"
                },
                "min_concurrency": {
                    "type": "integer"
                },
                "service_limits": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/caasmmodel.ThrottlingServiceSpec"
                    }
                },
                "sources": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "token_capacity": {
                    "type": "integer"
                },
                "token_refill_per_sec": {
                    "type": "number"
                }
            }
        },
        "handler.caasmPortDetailDTO": {
            "type": "object",
            "properties": {
                "asset": {
                    "$ref": "#/definitions/handler.caasmAssetListItemDTO"
                },
                "evidence": {
                    "$ref": "#/definitions/handler.caasmPortEvidenceDTO"
                },
                "port": {
                    "$ref": "#/definitions/handler.caasmPortListItemDTO"
                }
            }
        },
        "handler.caasmPortEvidenceDTO": {
            "type": "object",
            "properties": {
                "confidence": {
                    "type": "string"
                },
                "dns_records": {},
                "evidence": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "exposure_reason": {
                    "type": "string"
                },
                "ownership_status": {
                    "type": "string"
                },
                "resolution_ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "resource_id": {
                    "type": "string"
                },
                "route": {
                    "$ref": "#/definitions/handler.caasmPortEvidenceSectionDTO"
                },
                "scanner_result": {
                    "$ref": "#/definitions/handler.caasmPortScannerResultDTO"
                },
                "security_group": {
                    "$ref": "#/definitions/handler.caasmPortEvidenceSectionDTO"
                },
                "source_service": {
                    "type": "string"
                },
                "warnings": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "handler.caasmPortEvidenceSectionDTO": {
            "type": "object",
            "properties": {
                "available": {
                    "type": "boolean"
                },
                "confidence": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "source": {
                    "type": "string"
                },
                "summary": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                }
            }
        },
        "handler.caasmPortListItemDTO": {
            "type": "object",
            "properties": {
                "asset_id": {
                    "type": "integer"
                },
                "asset_service": {
                    "type": "string"
                },
                "confidence": {
                    "type": "string"
                },
                "dns_records": {},
                "endpoint": {
                    "type": "string"
                },
                "endpoint_type": {
                    "type": "string"
                },
                "evidence": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "evidence_source": {
                    "type": "string"
                },
                "evidence_sources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "exposure": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "ip_address": {
                    "type": "string"
                },
                "last_seen_at": {
                    "type": "string"
                },
                "observation_source": {
                    "type": "string"
                },
                "ownership_status": {
                    "type": "string"
                },
                "port": {
                    "type": "integer"
                },
                "product": {
                    "type": "string"
                },
                "protocol": {
                    "type": "string"
                },
                "resolution_ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "resource_id": {
                    "type": "string"
                },
                "service_name": {
                    "type": "string"
                },
                "source_service": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "version": {
                    "type": "string"
                }
            }
        },
        "handler.caasmPortScannerResultDTO": {
            "type": "object",
            "properties": {
                "batch_id": {
                    "type": "integer"
                },
                "connect_ms": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "observed_at": {
                    "type": "string"
                },
                "reason_code": {
                    "type": "string"
                },
                "request_id": {
                    "type": "string"
                },
                "result": {
                    "type": "string"
                },
                "scanner_batch_id": {
                    "type": "string"
                },
                "scanner_source_ip": {
                    "type": "string"
                }
            }
        },
        "handler.caasmThrottlingContractDTO": {
            "type": "object",
            "properties": {
                "coordination_mode": {
                    "type": "string"
                },
                "defaults": {
                    "$ref": "#/definitions/handler.caasmThrottlingLimitsDTO"
                },
                "hard_caps": {
                    "$ref": "#/definitions/handler.caasmThrottlingLimitsDTO"
                },
                "override_policy": {
                    "type": "string"
                },
                "presets": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/handler.caasmThrottlingPresetDTO"
                    }
                },
                "reject_out_of_range": {
                    "type": "boolean"
                },
                "supported_services": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "handler.caasmThrottlingLimitsDTO": {
            "type": "object",
            "properties": {
                "adaptive_threshold": {
                    "type": "integer"
                },
                "adaptive_window_sec": {
                    "type": "integer"
                },
                "circuit_breaker": {
                    "$ref": "#/definitions/caasmmodel.CircuitBreakerConfig"
                },
                "cool_off_sec": {
                    "type": "integer"
                },
                "max_concurrency": {
                    "type": "integer"
                },
                "min_concurrency": {
                    "type": "integer"
                },
                "service_limits": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/caasmmodel.ThrottlingServiceSpec"
                    }
                },
                "token_capacity": {
                    "type": "integer"
                },
                "token_refill_per_sec": {
                    "type": "number"
                }
            }
        },
        "handler.caasmThrottlingPresetDTO": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/handler.caasmThrottlingLimitsDTO"
                },
                "description": {
                    "type": "string"
                },
                "label": {
                    "type": "string"
                }
            }
        },
        "handler.cloudAccountDTO": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "effective_throttling": {
                    "$ref": "#/definitions/handler.caasmEffectiveThrottlingDTO"
                },
                "error_message": {
                    "type": "string"
                },
                "external_id": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "last_sync_at": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "provider": {
                    "$ref": "#/definitions/caasmmodel.CloudProvider"
                },
                "status": {
                    "$ref": "#/definitions/caasmmodel.CloudAccountStatus"
                },
                "throttling_contract": {
                    "$ref": "#/definitions/handler.caasmThrottlingContractDTO"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "handler.cloudAccountSummary": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "provider": {
                    "$ref": "#/definitions/caasmmodel.CloudProvider"
                },
                "status": {
                    "$ref": "#/definitions/caasmmodel.CloudAccountStatus"
                }
            }
        },
        "handler.confirmAttachmentUploadRequest": {
            "type": "object",
            "required": [
                "attachment_id"
            ],
            "properties": {
                "attachment_id": {
                    "type": "integer"
                }
            }
        },
        "handler.createVulnerabilityRequest": {
            "type": "object",
            "required": [
                "discoverer_employee_id",
                "severity_level",
                "status",
                "title"
            ],
            "properties": {
                "affected_assets_count": {
                    "type": "integer"
                },
                "application": {
                    "type": "string"
                },
                "batch_group_id": {
                    "type": "integer"
                },
                "code_repository": {
                    "type": "string"
                },
                "department_id": {
                    "type": "string"
                },
                "dependency_name": {
                    "type": "string"
                },
                "dependency_version": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "discoverer_employee_id": {
                    "type": "integer"
                },
                "discovery_channel": {
                    "type": "string"
                },
                "discovery_phase": {
                    "type": "string"
                },
                "fixer_employee_id": {
                    "type": "integer"
                },
                "has_poc_verification": {
                    "type": "boolean"
                },
                "interface_path": {
                    "type": "string"
                },
                "is_third_party": {
                    "type": "boolean"
                },
                "network_env": {
                    "type": "string"
                },
                "owner_employee_id": {
                    "type": "integer"
                },
                "poc_text": {
                    "type": "string"
                },
                "severity_level": {
                    "$ref": "#/definitions/vulnmodel.SeverityLevel"
                },
                "sla_deadline": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/vulnmodel.VulnerabilityStatus"
                },
                "submitted_at": {
                    "type": "string"
                },
                "submitter_user_id": {
                    "type": "integer"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "title": {
                    "type": "string"
                },
                "verification_steps": {
                    "type": "string"
                },
                "vulnerability_type": {
                    "type": "string"
                }
            }
        },
        "handler.transitionStatusRequest": {
            "type": "object",
            "required": [
                "status"
            ],
            "properties": {
                "message": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/vulnmodel.VulnerabilityStatus"
                }
            }
        },
        "handler.updateVulnerabilityPayload": {
            "type": "object",
            "properties": {
                "affected_assets_count": {
                    "type": "integer"
                },
                "application": {
                    "type": "string"
                },
                "code_repository": {
                    "type": "string"
                },
                "department_id": {
                    "type": "string"
                },
                "dependency_name": {
                    "type": "string"
                },
                "dependency_version": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "discoverer_employee_id": {
                    "type": "integer"
                },
                "discovery_channel": {
                    "type": "string"
                },
                "discovery_phase": {
                    "type": "string"
                },
                "fixer_employee_id": {
                    "type": "integer"
                },
                "has_poc_verification": {
                    "type": "boolean"
                },
                "interface_path": {
                    "type": "string"
                },
                "is_third_party": {
                    "type": "boolean"
                },
                "network_env": {
                    "type": "string"
                },
                "owner_employee_id": {
                    "type": "integer"
                },
                "poc_text": {
                    "type": "string"
                },
                "severity_level": {
                    "type": "string"
                },
                "sla_deadline": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "submitted_at": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "title": {
                    "type": "string"
                },
                "verification_steps": {
                    "type": "string"
                },
                "vulnerability_type": {
                    "type": "string"
                }
            }
        },
        "handler.uploadAttachmentRequest": {
            "type": "object",
            "required": [
                "filename"
            ],
            "properties": {
                "content_type": {
                    "type": "string"
                },
                "filename": {
                    "type": "string"
                }
            }
        },
        "internal_modules_caasm_handler.departmentSummary": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "lark_department_id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "internal_modules_caasm_handler.employeeSummary": {
            "type": "object",
            "properties": {
                "avatar_url": {
                    "type": "string"
                },
                "department_id": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "repository.PortFrequency": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "port": {
                    "type": "integer"
                }
            }
        },
        "response.APIResponse": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "integer"
                },
                "data": {},
                "message": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "integer"
                }
            }
        },
        "response.PaginatedResponse": {
            "type": "object",
            "properties": {
                "items": {},
                "page": {
                    "type": "integer"
                },
                "page_size": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                },
                "total_pages": {
                    "type": "integer"
                }
            }
        },
        "service.DomainStatsResult": {
            "type": "object",
            "properties": {
                "expired": {
                    "type": "integer"
                },
                "expiring_soon": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "service.GraphEdge": {
            "type": "object",
            "properties": {
                "label": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "target": {
                    "type": "string"
                }
            }
        },
        "service.GraphNode": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "label": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "service.PortStatsResult": {
            "type": "object",
            "properties": {
                "by_status": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer",
                        "format": "int64"
                    }
                },
                "internal": {
                    "type": "integer"
                },
                "last_updated": {
                    "type": "string"
                },
                "public": {
                    "type": "integer"
                },
                "top_open_ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/repository.PortFrequency"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "service.RelationshipGraph": {
            "type": "object",
            "properties": {
                "edges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/service.GraphEdge"
                    }
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/service.GraphNode"
                    }
                }
            }
        },
        "vulnmodel.SeverityLevel": {
            "type": "string",
            "enum": [
                "low",
                "medium",
                "high",
                "critical"
            ],
            "x-enum-varnames": [
                "SeverityLow",
                "SeverityMedium",
                "SeverityHigh",
                "SeverityCritical"
            ]
        },
        "vulnmodel.VulnerabilityComment": {
            "type": "object",
            "properties": {
                "author_id": {
                    "type": "integer"
                },
                "author_name": {
                    "type": "string"
                },
                "content": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "vulnerability_id": {
                    "type": "integer"
                }
            }
        },
        "vulnmodel.VulnerabilityStatus": {
            "type": "string",
            "enum": [
                "active",
                "retesting",
                "fixed",
                "false_positive",
                "risk_accepted"
            ],
            "x-enum-varnames": [
                "StatusActive",
                "StatusRetesting",
                "StatusFixed",
                "StatusFalsePositive",
                "StatusRiskAccepted"
            ]
        }
    },
    "securityDefinitions": {
        "agentApiKey": {
            "description": "Agent M2M authentication (X-API-Key).",
            "type": "apiKey",
            "name": "X-API-Key",
            "in": "header"
        },
        "bearerAuth": {
            "description": "Human user JWT (Authorization: Bearer \u003caccess_token\u003e).",
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}`

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
	Version:          "1.0",
	Host:             "",
	BasePath:         "",
	Schemes:          []string{},
	Title:            "Security Center Agent API",
	Description:      "Read-only APIs for the Security Center CAASM (asset) and Vuln (vulnerability) modules. Both success and business errors return HTTP 200, distinguished via the APIResponse envelope (code/message/data/timestamp).",
	InfoInstanceName: "swagger",
	SwaggerTemplate:  docTemplate,
	LeftDelim:        "{{",
	RightDelim:       "}}",
}

func init() {
	swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
