{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 402,
"title": "You need to upgrade your plan to access this feature",
"type": "payment_required"
}
{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 403,
"title": "You don't have the permissions to perform this action",
"type": "forbidden"
}
Prioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member.
Returns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.
{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 402,
"title": "You need to upgrade your plan to access this feature",
"type": "payment_required"
}
{
"detail": null,
"errors": null,
"props": null,
"request_id": "4bf92f3577b34da6a3ce929d0e0e4736",
"status": 403,
"title": "You don't have the permissions to perform this action",
"type": "forbidden"
}
Filter finding types by review priority. Repeat to include any of the specified priorities; omit to include all. Only findings are filtered; summary counts remain workspace-wide.
Available options:
needs_review,
review_recommended,
no_review_needed
Example:
["needs_review"]
Response
OK
Workspace security insights with project and membership counts, review priorities, and finding types.
Timestamp indicating the freshness of workspace review-priority data. Individual projects may have newer results. Null when unavailable. This is not a security scan completion time.
Finding types and their matching project counts, including types with zero matches, ordered by higher review priority first. Related conditions may be combined under a more specific finding. A project can appear under multiple finding types. Types requiring personal data detection access are left out when that feature is unavailable. Empty when no types are included.
Show child attributes
Example:
[ { "category": "exposure", "description": "Publicly published projects with error-level security findings.", "id": "public_security_exposure", "project_count": 12, "review_priority": "needs_review", "title": "Public app with security errors" } ]
Workspace project counts, membership counts, and project review priorities.
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Lovable Documentation","description":"Lovable Documentation — Build full-stack websites with AI using natural language. Explore Lovable features, integrations, tutorials, and best practices.","colors":{"primary":"#0095FF","light":"#1AA3FF","dark":"#0084E6"},"logo":{"light":"https://mintcdn.com/lovable-f9060f1e/lZT1ihBcprll2Agr/assets/logo/logoblack.svg?fit=max\u0026auto=format\u0026n=lZT1ihBcprll2Agr\u0026q=85\u0026s=8d9eafaf19f94e27f0d13ac160d54f54","dark":"https://mintcdn.com/lovable-f9060f1e/lZT1ihBcprll2Agr/assets/logo/logowhite.svg?fit=max\u0026auto=format\u0026n=lZT1ihBcprll2Agr\u0026q=85\u0026s=fed1a7a9be6502f49d06a55cec77288c","href":"https://lovable.dev/"},"favicon":"https://mintcdn.com/lovable-f9060f1e/b_1_IEcMDh-0NUDG/assets/logo/favicon.svg?fit=max\u0026auto=format\u0026n=b_1_IEcMDh-0NUDG\u0026q=85\u0026s=a439abba3defb47beabd3f6e7d318cb5","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl"],"prefill":true,"autogenerate":true},"url":"full"},"navbar":{"links":[{"icon":"message","href":"https://lovable.dev/support","label":"Support"},{"icon":"blog","href":"https://lovable.dev/blog","label":"Blog"}],"primary":{"type":"button","label":"Start building for free","href":"https://lovable.dev/signup?utm_source=lovable_docs\u0026utm_medium=navigation"}},"footer":{"socials":{"x":"https://x.com/Lovable","github":"https://github.com/lovablelabs","linkedin":"https://linkedin.com/company/lovable-dev","youtube":"https://youtube.com/@lovable","discord":"https://discord.gg/lovable-dev","reddit":"https://www.reddit.com/r/lovable"}},"seo":{"metatags":{"og:image":"/assets/logo/opengraph-image.png","canonical":"https://docs.lovable.dev"},"indexing":"all"},"contextual":{"options":["copy","assistant","download-pdf","download-spec"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"lovable-f9060f1e","hasAudioNarration":false,"actualSubdomain":"lovable-f9060f1e","customDomains":["docs.lovable.dev"],"gitSource":{"type":"github","owner":"lovablelabs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae26a764f7bcbb8db4d1dd6","collectionId":"d305deef-c12c-45ea-971f-dc7e80bb91a1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae26a764f7bcbb8db4d1dd6"},"feedback":{"thumbs":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae26a764f7bcbb8db4d1dd6","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Documentation","count":272},{"language":"default","tag":"Connect","count":125},{"language":"default","tag":"Connector catalog","count":113},{"language":"default","tag":"Build","count":68},{"language":"default","tag":"API Reference","count":33},{"language":"default","tag":"Workspace \u0026 account","count":29},{"language":"default","tag":"Lovable API","count":27},{"language":"default","tag":"Endpoints","count":25},{"language":"default","tag":"Data \u0026 databases","count":21},{"language":"default","tag":"Backend","count":19}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":true,"type":"link","email":"support@lovable.dev","url":"https://lovable.dev/support"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instinct-self-updating-docs","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"assets/css/styles.css","content":".supabase{color:#59cf8c}"}],"page":{"pagePath":"api-reference/security-governance/get-workspace-security-insights","slug":"/api-reference/security-governance/get-workspace-security-insights","pageMetadata":{"title":"Get workspace security insights","description":"**Plan:** `Business or higher`\n\n**Scope:** `workspaces:read`\n\nPrioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member.\n\nReturns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/security-center/insights","href":"/api-reference/security-governance/get-workspace-security-insights","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Plan:\"\n }), \" \", _jsx(_components.code, {\n children: \"Business or higher\"\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Scope:\"\n }), \" \", _jsx(_components.code, {\n children: \"workspaces:read\"\n })]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Prioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Returns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get workspace security insights","description":"**Plan:** `Business or higher`\n\n**Scope:** `workspaces:read`\n\nPrioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member.\n\nReturns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/security-center/insights","href":"/api-reference/security-governance/get-workspace-security-insights","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/lovable-f9060f1e/84f62c0d01f1469d/sign-in-with-lovable-demo.js"],"openApiReferenceData":{"operation":{"description":"**Plan:** `Business or higher`\n\n**Scope:** `workspaces:read`\n\nPrioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member.\n\nReturns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.","operationId":"getSecurityInsights","parameters":["9d04a38f-b387-486d-af0d-ee7d46bfad7b","12b0e3a1-00a8-432c-919e-0bb55a8c316e","dc6bb03d-580f-4640-958a-896777ed7126","ea46d893-ed46-4f3b-a21e-fc2ee5035a03"],"responses":{"200":"fa386fc0-6e75-4e26-8b59-051bd44e047e","400":"bf8fbb24-7709-4d26-b66d-0c306a10a14d","401":"ce1d14ac-9388-4f19-85f7-a31d7ae14ba5","402":"35a22f68-28e3-4c37-8bdb-1bd13e4c5405","403":"cffae7b8-622d-455f-8d88-950c50053a52","404":"c097481b-e814-4c0e-9b0e-47f4da331324","406":"de33bb65-3248-4791-896a-742284bf4531","429":"b21a4ed8-9583-443a-9b2e-5ccfd50f0097","503":"a24b2cd6-8a9e-41dc-910d-7eed7734add7","default":"a1408dd1-96cd-46ce-b6ab-e653a93fe47d"},"security":["e423e5f7-c130-4e17-bbd2-d93038279153","39401137-6426-4dcb-b73f-71bf31cf59e1"],"summary":"Get workspace security insights","tags":["security-governance"],"x-codeSamples":[{"label":"cURL","lang":"bash","source":"curl --request GET \\\n --url 'https://api.lovable.dev/v1/workspaces/workspace-id/security-center/insights' \\\n --header 'Lovable-API-Key: lov_your-api-key' \\\n --header 'Lovable-Version: 2026-09-11'"},{"label":"JavaScript","lang":"javascript","source":"const response = await fetch(\"https://api.lovable.dev/v1/workspaces/workspace-id/security-center/insights\", {\n method: \"GET\",\n headers: {\n \"Lovable-API-Key\": process.env.LOVABLE_API_KEY ?? \"lov_your-api-key\",\n \"Lovable-Version\": \"2026-09-11\",\n },\n});\nif (!response.ok) {\n throw new Error(`Lovable API ${response.status}: ${await response.text()}`);\n}\nconsole.log(await response.json());"}],"x-rateLimit":{"app_limiters":[{"class":"public_api_expensive_read","default_limits":[{"limit":300,"scope":"api_key_or_authenticated_user","window_seconds":60}],"description":"Limit shared by analytics, security-center insights, audit log, and collaborator reads."},{"class":"general","default_limits":[{"condition":"API key auth","limit":12000,"scope":"api_key","window_seconds":1800},{"condition":"Session or OAuth auth","limit":12000,"scope":"authenticated_user","window_seconds":1800}],"description":"General request limit: one bucket per API key, or the user's bucket shared with Lovable sessions for session and OAuth callers."}],"class":"public_api_expensive_read","default_limits":[{"limit":300,"scope":"api_key_or_authenticated_user","window_seconds":60}]},"method":"get","type":"path","servers":["d46911fb-5480-4a8c-8d9c-9fa4a467e1fa"],"path":"/v1/workspaces/{workspace_id}/security-center/insights","baseUrlOptions":["https://api.lovable.dev"],"title":"Get workspace security insights","codeSamples":[{"label":"cURL","lang":"bash","source":"curl --request GET \\\n --url 'https://api.lovable.dev/v1/workspaces/workspace-id/security-center/insights' \\\n --header 'Lovable-API-Key: lov_your-api-key' \\\n --header 'Lovable-Version: 2026-09-11'"},{"label":"JavaScript","lang":"javascript","source":"const response = await fetch(\"https://api.lovable.dev/v1/workspaces/workspace-id/security-center/insights\", {\n method: \"GET\",\n headers: {\n \"Lovable-API-Key\": process.env.LOVABLE_API_KEY ?? \"lov_your-api-key\",\n \"Lovable-Version\": \"2026-09-11\",\n },\n});\nif (!response.ok) {\n throw new Error(`Lovable API ${response.status}: ${await response.text()}`);\n}\nconsole.log(await response.json());"}],"requestExampleLanguages":["bash"],"requiredOnlyExamples":true,"requestExampleType":"codeSamples","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[],"urlDisplay":"full"},"dependencies":{"parameters":{"9d04a38f-b387-486d-af0d-ee7d46bfad7b":{"description":"ID of the workspace to retrieve security insights for.","example":"workspace_01jw3k9m2xq8r5v0c7d4e6f2gh","in":"path","name":"workspace_id","required":true,"schema":{"description":"ID of the workspace to retrieve security insights for.","examples":["workspace_01jw3k9m2xq8r5v0c7d4e6f2gh"],"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}},"12b0e3a1-00a8-432c-919e-0bb55a8c316e":{"description":"Filter finding types by review priority. Repeat to include any of the specified priorities; omit to include all. Only findings are filtered; summary counts remain workspace-wide.","example":["needs_review"],"explode":true,"in":"query","name":"review_priority","schema":{"description":"Filter finding types by review priority. Repeat to include any of the specified priorities; omit to include all. Only findings are filtered; summary counts remain workspace-wide.","examples":[["needs_review"]],"items":{"enum":["needs_review","review_recommended","no_review_needed"],"type":"string","uniqueKey":"items.[INDEX]","typeLabel":"enum\u003cstring>"},"type":"array","uniqueKey":"","typeLabel":"enum\u003cstring>[]"}},"dc6bb03d-580f-4640-958a-896777ed7126":{"description":"Stable API version to serve, as a YYYY-MM-DD date. Omit for the oldest supported stable version, currently 2026-09-11.","example":"2026-09-11","in":"header","name":"Lovable-Version","schema":{"type":"string","description":"Stable API version to serve, as a YYYY-MM-DD date. Omit for the oldest supported stable version, currently 2026-09-11.","uniqueKey":"","typeLabel":"string"}},"ea46d893-ed46-4f3b-a21e-fc2ee5035a03":{"description":"Comma-separated beta revision strings to enable on top of the stable version.","in":"header","name":"Lovable-Beta","schema":{"type":"string","description":"Comma-separated beta revision strings to enable on top of the stable version.","uniqueKey":"","typeLabel":"string"}}},"responses":{"fa386fc0-6e75-4e26-8b59-051bd44e047e":{"content":{"application/json":{"schema":{"properties":{"as_of":{"oneOf":[{"description":"Timestamp indicating the freshness of workspace review-priority data. Individual projects may have newer results. Null when unavailable. This is not a security scan completion time.","examples":["2026-01-15T09:30:00Z"],"format":"date-time","type":"string","isRequired":true,"uniqueKey":"as_of.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"Timestamp indicating the freshness of workspace review-priority data. Individual projects may have newer results. Null when unavailable. This is not a security scan completion time.","examples":["2026-01-15T09:30:00Z"],"format":"date-time","type":"null","isRequired":true,"uniqueKey":"as_of.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"as_of","typeLabel":"string\u003cdate-time> | null"},"findings":{"description":"Finding types and their matching project counts, including types with zero matches, ordered by higher review priority first. Related conditions may be combined under a more specific finding. A project can appear under multiple finding types. Types requiring personal data detection access are left out when that feature is unavailable. Empty when no types are included.","examples":[[{"category":"exposure","description":"Publicly published projects with error-level security findings.","id":"public_security_exposure","project_count":12,"review_priority":"needs_review","title":"Public app with security errors"}]],"items":{"properties":{"category":{"description":"Finding category. More values may be added; clients must tolerate unknown values.","enum":["security","data","exposure","credentials","access","integrations","runtime"],"examples":["exposure"],"type":"string","isRequired":true,"uniqueKey":"findings.items.[INDEX].category","typeLabel":"enum\u003cstring>"},"description":{"description":"Explanation of the condition represented by this finding type.","examples":["Publicly published projects with error-level security findings."],"type":"string","isRequired":true,"uniqueKey":"findings.items.[INDEX].description","typeLabel":"string"},"id":{"description":"Stable identifier for the finding type. Use as finding_type_id on GET /v1/workspaces/{workspace_id}/security-center/insights/projects to list matching projects; that endpoint requires Enterprise.","examples":["public_security_exposure"],"type":"string","isRequired":true,"uniqueKey":"findings.items.[INDEX].id","typeLabel":"string"},"project_count":{"description":"Number of distinct projects represented by this finding type. Counts across finding types can overlap and must not be summed to obtain a unique project total.","examples":[12],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"findings.items.[INDEX].project_count","typeLabel":"integer\u003cint64>"},"review_priority":{"description":"Review priority assigned to this finding type. May differ from an individual scan finding's severity, its UI badge, or a project's overall review priority. More values may be added; clients must tolerate unknown values.","enum":["needs_review","review_recommended","no_review_needed"],"examples":["needs_review"],"type":"string","isRequired":true,"uniqueKey":"findings.items.[INDEX].review_priority","typeLabel":"enum\u003cstring>"},"title":{"description":"Short display name for the finding type. Use id for programmatic matching.","examples":["Public app with security errors"],"type":"string","isRequired":true,"uniqueKey":"findings.items.[INDEX].title","typeLabel":"string"}},"required":["id","review_priority","category","title","description","project_count"],"type":"object","uniqueKey":"findings.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"findings","typeLabel":"object[]"},"summary":{"properties":{"externally_published":{"properties":{"delta_30d":{"description":"Number of items in the current count that were created or joined within the last 30 days, as defined by the metric. This is not a net change from the count 30 days ago.","examples":[3],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.externally_published.delta_30d","typeLabel":"integer\u003cint64>"},"delta_window":{"description":"Display label for the reporting period used by delta_30d. Currently \"30 days\".","examples":["30 days"],"type":"string","isRequired":true,"uniqueKey":"summary.externally_published.delta_window","typeLabel":"string"},"value":{"description":"Current count for this metric.","examples":[42],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.externally_published.value","typeLabel":"integer\u003cint64>"}},"required":["value","delta_30d","delta_window"],"type":"object","description":"Projects currently published for public access. Excludes privately published projects shared with selected external viewers. delta_30d counts currently public projects created within the last 30 days, not publication events.","isRequired":true,"uniqueKey":"summary.externally_published","typeLabel":"object"},"risk":{"properties":{"needs_review":{"description":"Projects assigned high review priority, shown as \"High\" in Security Center.","examples":[3],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.risk.needs_review","typeLabel":"integer\u003cint64>"},"no_review_needed":{"description":"Projects assigned low review priority, shown as \"Low\" in Security Center. This classification does not guarantee that a project has no security issues.","examples":[12],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.risk.no_review_needed","typeLabel":"integer\u003cint64>"},"review_recommended":{"description":"Projects assigned medium review priority, shown as \"Medium\" in Security Center.","examples":[5],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.risk.review_recommended","typeLabel":"integer\u003cint64>"}},"required":["needs_review","review_recommended","no_review_needed"],"type":"object","description":"Project counts grouped by review priority. Projects without a calculated priority are excluded, so these counts may total less than total_projects.value.","isRequired":true,"uniqueKey":"summary.risk","typeLabel":"object"},"total_projects":{"properties":{"delta_30d":{"description":"Number of items in the current count that were created or joined within the last 30 days, as defined by the metric. This is not a net change from the count 30 days ago.","examples":[3],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.total_projects.delta_30d","typeLabel":"integer\u003cint64>"},"delta_window":{"description":"Display label for the reporting period used by delta_30d. Currently \"30 days\".","examples":["30 days"],"type":"string","isRequired":true,"uniqueKey":"summary.total_projects.delta_window","typeLabel":"string"},"value":{"description":"Current count for this metric.","examples":[42],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.total_projects.value","typeLabel":"integer\u003cint64>"}},"required":["value","delta_30d","delta_window"],"type":"object","description":"Projects currently in the workspace, excluding deleted projects. delta_30d counts those created within the last 30 days.","isRequired":true,"uniqueKey":"summary.total_projects","typeLabel":"object"},"workspace_members":{"properties":{"delta_30d":{"description":"Number of items in the current count that were created or joined within the last 30 days, as defined by the metric. This is not a net change from the count 30 days ago.","examples":[3],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.workspace_members.delta_30d","typeLabel":"integer\u003cint64>"},"delta_window":{"description":"Display label for the reporting period used by delta_30d. Currently \"30 days\".","examples":["30 days"],"type":"string","isRequired":true,"uniqueKey":"summary.workspace_members.delta_window","typeLabel":"string"},"value":{"description":"Current count for this metric.","examples":[42],"format":"int64","type":"integer","isRequired":true,"uniqueKey":"summary.workspace_members.value","typeLabel":"integer\u003cint64>"}},"required":["value","delta_30d","delta_window"],"type":"object","description":"Current active workspace members, excluding pending invitations. delta_30d counts current members who joined within the last 30 days; members who subsequently left are excluded.","isRequired":true,"uniqueKey":"summary.workspace_members","typeLabel":"object"}},"required":["total_projects","externally_published","risk","workspace_members"],"type":"object","description":"Workspace project counts, membership counts, and project review priorities.","isRequired":true,"uniqueKey":"summary","typeLabel":"object"}},"required":["summary","findings","as_of"],"type":"object","description":"Workspace security insights with project and membership counts, review priorities, and finding types.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"as_of":"2026-01-15T09:30:00Z","findings":[{"category":"exposure","description":"Publicly published projects with error-level security findings.","id":"public_security_exposure","project_count":12,"review_priority":"needs_review","title":"Public app with security errors"}],"summary":{"externally_published":{"delta_30d":3,"delta_window":"30 days","value":42},"risk":{"needs_review":3,"no_review_needed":12,"review_recommended":5},"total_projects":{"delta_30d":3,"delta_window":"30 days","value":42},"workspace_members":{"delta_30d":3,"delta_window":"30 days","value":42}}}}},"exampleType":"generated"}},"description":"OK","headers":{"Lovable-Beta":{"description":"Beta revisions applied to the request, comma-separated. Present only when the request selected beta revisions.","schema":{"type":"string"}},"Lovable-Version":{"description":"Stable API version that served the request. Absent when the request was rejected before version selection or when selection itself failed.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"generated"},"bf8fbb24-7709-4d26-b66d-0c306a10a14d":{"content":{"application/json":{"example":{"detail":"validation failed","errors":[{"location":"body.members","message":"expected array length >= 1"}],"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":400,"title":"Bad Request","type":"invalid_request"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":"validation failed","errors":[{"location":"body.members","message":"expected array length >= 1"}],"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":400,"title":"Bad Request","type":"invalid_request"}}},"exampleType":"examples"}},"description":"The request body or parameters are malformed or fail validation. Each failing field is listed in errors.","headers":{"Lovable-Beta":{"description":"Beta revisions applied to the request, comma-separated. Present only when the request selected beta revisions.","schema":{"type":"string"}},"Lovable-Version":{"description":"Stable API version that served the request. Absent when the request was rejected before version selection or when selection itself failed.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"ce1d14ac-9388-4f19-85f7-a31d7ae14ba5":{"content":{"application/json":{"example":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":401,"title":"Authorization header required","type":"unauthorized"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":401,"title":"Authorization header required","type":"unauthorized"}}},"exampleType":"examples"}},"description":"Missing or invalid API key, session token, or OAuth access token.","headers":{"WWW-Authenticate":{"description":"Authentication challenge identifying the supported authentication scheme.","example":"Bearer","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"35a22f68-28e3-4c37-8bdb-1bd13e4c5405":{"content":{"application/json":{"example":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":402,"title":"You need to upgrade your plan to access this feature","type":"payment_required"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":402,"title":"You need to upgrade your plan to access this feature","type":"payment_required"}}},"exampleType":"examples"}},"description":"Public API access requires Business or higher. Some operations or configurations require an additional feature entitlement.","headers":{"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"cffae7b8-622d-455f-8d88-950c50053a52":{"content":{"application/json":{"example":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":403,"title":"You don't have the permissions to perform this action","type":"forbidden"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":403,"title":"You don't have the permissions to perform this action","type":"forbidden"}}},"exampleType":"examples"}},"description":"The key or caller lacks the required scope or permission. For email_not_verified, verify the account email before retrying.","headers":{"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"c097481b-e814-4c0e-9b0e-47f4da331324":{"content":{"application/json":{"example":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":404,"title":"Not Found","type":"workspace_not_found"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":404,"title":"Not Found","type":"workspace_not_found"}}},"exampleType":"examples"}},"description":"The workspace does not exist, has been deleted, or is outside the credential's workspace scope.","headers":{"Lovable-Beta":{"description":"Beta revisions applied to the request, comma-separated. Present only when the request selected beta revisions.","schema":{"type":"string"}},"Lovable-Version":{"description":"Stable API version that served the request. Absent when the request was rejected before version selection or when selection itself failed.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"de33bb65-3248-4791-896a-742284bf4531":{"content":{"application/json":{"example":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":406,"title":"This endpoint produces application/json. Send a matching Accept header, */*, or omit the header.","type":"not_acceptable"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":406,"title":"This endpoint produces application/json. Send a matching Accept header, */*, or omit the header.","type":"not_acceptable"}}},"exampleType":"examples"}},"description":"The Accept header excludes every media type this endpoint produces.","headers":{"Lovable-Beta":{"description":"Beta revisions applied to the request, comma-separated. Present only when the request selected beta revisions.","schema":{"type":"string"}},"Lovable-Version":{"description":"Stable API version that served the request. Absent when the request was rejected before version selection or when selection itself failed.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"b21a4ed8-9583-443a-9b2e-5ccfd50f0097":{"content":{"application/json":{"example":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":429,"title":"Too Many Requests","type":"rate_limited"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":429,"title":"Too Many Requests","type":"rate_limited"}}},"exampleType":"examples"}},"description":"Too many requests. Retry after the interval in Retry-After when present.","headers":{"Retry-After":{"description":"Seconds to wait before retrying. Present when the limiter can compute a retry delay.","schema":{"minimum":1,"type":"integer"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"a24b2cd6-8a9e-41dc-910d-7eed7734add7":{"content":{"application/json":{"example":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":503,"title":"Request timed out","type":"request_timeout"},"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":null,"errors":null,"props":null,"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":503,"title":"Request timed out","type":"request_timeout"}}},"exampleType":"examples"}},"description":"The service is temporarily unavailable, or the processing deadline expired (request_timeout). A mutation may still complete; check resource state before retrying.","headers":{"Lovable-Beta":{"description":"Beta revisions applied to the request, comma-separated. Present only when the request selected beta revisions.","schema":{"type":"string"}},"Lovable-Version":{"description":"Stable API version that served the request. Absent when the request was rejected before version selection or when selection itself failed.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"examples"},"a1408dd1-96cd-46ce-b6ab-e653a93fe47d":{"content":{"application/json":{"schema":{"description":"Common error response. An operation may document a different response body for a specific status code, such as per-member results for a bulk credit-limit update.","properties":{"detail":{"oneOf":[{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"string","isRequired":true,"uniqueKey":"detail.oneOf.0","typeLabel":"string"},{"description":"Human-readable guidance for this occurrence, or null when inapplicable. For invalid_request this is validation failed; the actionable field messages are in errors. Other error types may provide guidance such as re-authentication instructions.","example":"validation failed","type":"null","isRequired":true,"uniqueKey":"detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"detail","typeLabel":"string | null"},"errors":{"oneOf":[{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.0","typeLabel":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].location","typeLabel":"string | null"},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string","isRequired":true,"uniqueKey":"errors.oneOf.0.items.[INDEX].message","typeLabel":"string"}},"required":["location","message"],"type":"object","uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"description":"Field-level error details on validation failures; null when no field-level details apply.","example":[{"location":"body.workspace_id","message":"expected string"}],"items":{"properties":{"location":{"oneOf":[{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"string"},{"description":"Request field that failed validation, such as body.workspace_id or query.limit; null when the failure has no field location.","example":"body.workspace_id","type":"null"}]},"message":{"description":"Explanation of the validation failure for this field.","example":"expected string","type":"string"}},"required":["location","message"],"type":"object"},"type":"null","isRequired":true,"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors","typeLabel":"object[] | null"},"props":{"oneOf":[{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"object","isRequired":true,"uniqueKey":"props.oneOf.0","typeLabel":"object"},{"description":"Error-specific metadata, or null when inapplicable. Keys depend on type: security_critical_findings includes finding_refs (an array of strings); retired_version and retired_beta may include migration_url (a string URL). Ignore unrecognized keys.","example":{"finding_refs":["supabase/finding-1"]},"type":"null","isRequired":true,"uniqueKey":"props.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"props","typeLabel":"object | null"},"request_id":{"description":"Identifier of this request, echoed from the X-Request-Id response header. Quote it when reporting a failure.","example":"4bf92f3577b34da6a3ce929d0e0e4736","type":"string","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"status":{"description":"HTTP status code, echoed in the body.","example":429,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"title":{"description":"Human-readable error summary. The wording may change; use type to decide how your application handles the error.","example":"Too Many Requests","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"Stable machine-readable error type: a snake_case token such as rate_limited, not a URI. Clients may switch on it; new types are additive.","example":"rate_limited","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"}},"required":["type","title","status","request_id","detail","props","errors"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"detail":"validation failed","errors":[{"location":"body.workspace_id","message":"expected string"}],"props":{"finding_refs":["supabase/finding-1"]},"request_id":"4bf92f3577b34da6a3ce929d0e0e4736","status":429,"title":"Too Many Requests","type":"rate_limited"}}},"exampleType":"generated"}},"description":"Error. The response body uses the standard error envelope; status matches the HTTP status code and type is a machine-readable error code.","headers":{"Lovable-Beta":{"description":"Beta revisions applied to the request, comma-separated. Present only when the request selected beta revisions.","schema":{"type":"string"}},"Lovable-Version":{"description":"Stable API version that served the request. Absent when the request was rejected before version selection or when selection itself failed.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params":{"description":"Present only when the request carried query parameters this operation does not declare. Comma-separated, URL-escaped names of the ignored parameters, at most 20.","schema":{"type":"string"}},"X-Lovable-Unknown-Query-Params-Omitted":{"description":"Present with X-Lovable-Unknown-Query-Params when more than 20 unknown parameters were ignored. Number of names left out of that header.","schema":{"minimum":1,"type":"integer"}},"X-RateLimit-Limit":{"description":"Maximum requests per time window for the rate limit closest to exhaustion. All three X-RateLimit headers describe that same limit.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests still available under the limit described by X-RateLimit-Limit.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp in seconds when the limit described by X-RateLimit-Limit next regains capacity. Omitted when unknown.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Identifier of this request. Matches request_id in the error envelope; quote it when reporting a failure.","schema":{"type":"string"}}},"exampleType":"generated"}},"security":{"e423e5f7-c130-4e17-bbd2-d93038279153":{"LovableAPIKey":{"description":"Lovable API key. Send its value in the Lovable-API-Key header.","in":"header","name":"Lovable-API-Key","type":"apiKey","scopes":["workspaces:read"],"schemeName":"LovableAPIKey"}},"39401137-6426-4dcb-b73f-71bf31cf59e1":{"BearerAuth":{"bearerFormat":"JWT","description":"Lovable session token or OAuth access token. Send it in the Authorization header as Bearer \u003ctoken>.","scheme":"bearer","type":"http","scopes":["workspaces:read"],"schemeName":"BearerAuth"}}},"servers":{"d46911fb-5480-4a8c-8d9c-9fa4a467e1fa":{"description":"Production","url":"https://api.lovable.dev"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"description":"Lovable API key. Send its value in the Lovable-API-Key header.","in":"header","name":"Lovable-API-Key","type":"apiKey","scopes":["workspaces:read"],"schemeName":"LovableAPIKey"},"schema":{"title":"Lovable-API-Key","type":"string","description":"Lovable API key. Send its value in the Lovable-API-Key header.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"LovableAPIKey","name":"Lovable-API-Key"}],"title":"LovableAPIKey"},{"schemes":[{"scheme":{"bearerFormat":"JWT","description":"Lovable session token or OAuth access token. Send it in the Authorization header as Bearer \u003ctoken>.","scheme":"bearer","type":"http","scopes":["workspaces:read"],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Lovable session token or OAuth access token. Send it in the Authorization header as Bearer \u003ctoken>.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"https://api.lovable.dev/v1/openapi.yaml?view=rest"},"subdomain":"lovable-f9060f1e","siteName":"Lovable Documentation","title":"Get workspace security insights - Lovable Documentation","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T20:58:34.051Z","originalFileLocation":"api-reference/security-governance/get-workspace-security-insights.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Plan: Business or higher Scope: workspaces:read Prioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member. Returns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Lovable Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get workspace security insights - Lovable Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Plan: Business or higher Scope: workspaces:read Prioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member. Returns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Lovable Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://lovable-f9060f1e.mintlify.app/assets/logo/opengraph-image.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get workspace security insights - Lovable Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Plan: Business or higher Scope: workspaces:read Prioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member. Returns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://lovable-f9060f1e.mintlify.app/assets/logo/opengraph-image.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/lovable-f9060f1e/AU_uVgnksniw8mje/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Lovable Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0095FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/security-governance/get-workspace-security-insights.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.lovable.dev/#organization\",\"name\":\"Lovable Documentation\",\"url\":\"https://docs.lovable.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/lovable-f9060f1e/lZT1ihBcprll2Agr/assets/logo/logoblack.svg?fit=max\u0026auto=format\u0026n=lZT1ihBcprll2Agr\u0026q=85\u0026s=8d9eafaf19f94e27f0d13ac160d54f54\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.lovable.dev#website\",\"name\":\"Lovable Documentation\",\"url\":\"https://docs.lovable.dev\",\"publisher\":{\"@id\":\"https://docs.lovable.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights#webpage\",\"url\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights\",\"name\":\"Get workspace security insights\",\"description\":\"Plan: Business or higher Scope: workspaces:read Prioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member. Returns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.\",\"dateModified\":\"2026-10-27T20:58:34.051Z\",\"isPartOf\":{\"@id\":\"https://docs.lovable.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Lovable API\",\"item\":\"https://docs.lovable.dev/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Endpoints\",\"item\":\"https://docs.lovable.dev/api-reference/workspaces/list-workspaces\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Security \u0026 governance\",\"item\":\"https://docs.lovable.dev/api-reference/security-governance/list-personal-data-findings\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Get workspace security insights\",\"item\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights#apireference\",\"headline\":\"Get workspace security insights\",\"name\":\"Get workspace security insights\",\"description\":\"Plan: Business or higher Scope: workspaces:read Prioritize security reviews across your workspace. Findings include public apps with security errors, unresolved personal data detections, projects shared with external collaborators, and projects whose owner is no longer an active workspace member. Returns workspace project and membership counts, project review priorities, and finding types with matching project counts. Requires Security Center access. The review_priority filter applies only to findings; summary counts remain workspace-wide. Finding types requiring personal data detection access are omitted when that feature is unavailable. Project and membership data is eventually consistent and may not immediately reflect recent changes.\",\"url\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights\",\"mainEntityOfPage\":{\"@id\":\"https://docs.lovable.dev/api-reference/security-governance/get-workspace-security-insights#webpage\"},\"image\":\"https://docs.lovable.dev/assets/logo/opengraph-image.png\",\"dateModified\":\"2026-10-27T20:58:34.051Z\",\"publisher\":{\"@id\":\"https://docs.lovable.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.lovable.dev#website\"}}]}\u003c/script>","siteName":"Lovable Documentation","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction/welcome"}]},{"tab":"API Reference","groups":[{"group":"Lovable API","pages":[{"title":"API basics","sidebarTitle":"Introduction","href":"/api-reference/introduction"},{"title":"API changelog","href":"/api-reference/changelog"},{"group":"Endpoints","pages":[{"group":"Workspaces","pages":[{"title":"List workspaces","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces","href":"/api-reference/workspaces/list-workspaces"},{"title":"Get workspace","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}","href":"/api-reference/workspaces/get-workspace"}]},{"group":"Members \u0026 access","pages":[{"title":"List project collaborators","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/collaborators","href":"/api-reference/members-access/list-project-collaborators"},{"title":"List workspace groups","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/groups","href":"/api-reference/members-access/list-workspace-groups"},{"title":"List workspace members","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/members","href":"/api-reference/members-access/list-workspace-members"},{"title":"Get workspace member","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/members/{user_id}","href":"/api-reference/members-access/get-workspace-member"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects","href":"/api-reference/projects/list-projects"},{"title":"Get project","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}","href":"/api-reference/projects/get-project"},{"title":"Delete project","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest delete /v1/projects/{project_id}","href":"/api-reference/projects/delete-project"},{"title":"Update project","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest patch /v1/projects/{project_id}","href":"/api-reference/projects/update-project"},{"title":"Create embed URL","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest post /v1/projects/{project_id}/embed-url","href":"/api-reference/projects/create-embed-url"}]},{"group":"Deploy \u0026 domains","pages":[{"title":"Publish project","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest post /v1/projects/{project_id}/publish","href":"/api-reference/deploy-domains/publish-project"},{"title":"Unpublish project","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest delete /v1/projects/{project_id}/publish","href":"/api-reference/deploy-domains/unpublish-project"},{"title":"Update publish settings","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest patch /v1/projects/{project_id}/publish","href":"/api-reference/deploy-domains/update-publish-settings"},{"title":"Get publish status","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/publish/{deployment_id}","href":"/api-reference/deploy-domains/get-publish-status"}]},{"group":"Security \u0026 governance","pages":[{"title":"List personal data findings","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/pii-labels","href":"/api-reference/security-governance/list-personal-data-findings"},{"title":"List security scans","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/security-scans","href":"/api-reference/security-governance/list-security-scans"},{"title":"Get security scan","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/security-scans/{scan_id}","href":"/api-reference/security-governance/get-security-scan"},{"title":"List security scan findings","description":"**Plan:** `Business or higher`\n\n**Scope:** `projects:read`\n\nReturns a page of findings in the scan snapshot, including results reused from earlier scans and findings marked fixed or ignored. Findings are ordered by scanner_name, ascending, with a stable order within each scanner. Follow pagination.next_cursor until pagination.has_more is false to retrieve the complete snapshot.","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/security-scans/{scan_id}/findings","href":"/api-reference/security-governance/list-security-scan-findings"},{"title":"Get workspace security insights","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/security-center/insights","href":"/api-reference/security-governance/get-workspace-security-insights"},{"title":"List workspace security project inventory","description":"**Plan:** `Enterprise`\n\n**Scope:** `workspaces:read`\n\nReturns workspace projects with review priorities, security finding counts, activity counts, and publishing details. Use GET /v1/projects/{project_id}/security-scans/{scan_id}/findings for individual findings. Supports search and filters. By default, projects are ordered by most recently edited, or search relevance when query is set. Project and membership data is eventually consistent and may not immediately reflect recent changes.","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/security-center/insights/projects","href":"/api-reference/security-governance/list-workspace-security-project-inventory"}]},{"group":"Analytics","pages":[{"title":"Get project analytics","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/analytics","href":"/api-reference/analytics/get-project-analytics"},{"title":"Get project analytics breakdowns","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/analytics/breakdowns","href":"/api-reference/analytics/get-project-analytics-breakdowns"},{"title":"Get project realtime analytics","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/projects/{project_id}/analytics/realtime","href":"/api-reference/analytics/get-project-realtime-analytics"},{"title":"Get workspace analytics","deprecated":null,"version":null,"openapi":"https://api.lovable.dev/v1/openapi.yaml?view=rest get /v1/workspaces/{workspace_id}/analytics","href":"/api-reference/analytics/get-workspace-analytics"}]}]}]},{"group":"Events \u0026 hooks","pages":[{"title":"Events \u0026 hooks","href":"/api-reference/events-and-hooks"},{"group":"Reference","pages":[{"group":"Hooks","pages":[{"title":"Before message submission","version":null,"deprecated":null,"hideApiMarker":true,"playground":"none","openapi":"https://api.lovable.dev/v1/openapi.yaml?view=webhooks webhook message.before_submit.v1","href":"/api-reference/hooks/message-before-submit-v1"}]},{"group":"Events","pages":[{"title":"Project created","version":null,"deprecated":null,"hideApiMarker":true,"playground":"none","openapi":"https://api.lovable.dev/v1/openapi.yaml?view=webhooks webhook project.created.v1","href":"/api-reference/events/project-created-v1"},{"title":"Project deleted","version":null,"deprecated":null,"hideApiMarker":true,"playground":"none","openapi":"https://api.lovable.dev/v1/openapi.yaml?view=webhooks webhook project.deleted.v1","href":"/api-reference/events/project-deleted-v1"},{"title":"Project published","version":null,"deprecated":null,"hideApiMarker":true,"playground":"none","openapi":"https://api.lovable.dev/v1/openapi.yaml?view=webhooks webhook project.published.v1","href":"/api-reference/events/project-published-v1"},{"title":"Project transferred to another workspace","version":null,"deprecated":null,"hideApiMarker":true,"playground":"none","openapi":"https://api.lovable.dev/v1/openapi.yaml?view=webhooks webhook project.workspace_transferred.v1","href":"/api-reference/events/project-workspace-transferred-v1"}]}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"title":"Get workspace security insights - Lovable Documentation","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}