@lovable.dev/sdk 1.7.5 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -119,7 +119,7 @@ export interface paths {
119
119
  /**
120
120
  * Get workspace credit history
121
121
  * @deprecated
122
- * @description Deprecated compatibility alias — prefer GET /v1/workspaces/{workspace_id}/billing/credit-history. Returns the workspace's credit grant, expiry, adjustment, and conversion history, ordered by occurred_at descending with entry ID as the cursor tie-breaker. Pass workspace_id as a query parameter.
122
+ * @description Deprecated compatibility alias — prefer GET /v1/workspaces/{workspace_id}/billing/credit-history. Returns the workspace's credit grant, expiry, adjustment, and conversion history, ordered by occurred_at descending with entry ID as the cursor tie-breaker. Entries sharing a credit_grant_id describe one grant's lifecycle; a granted entry with a near-immediate offsetting adjustment is a grant whose remainder was voided early, for example by a plan change, refund, or administrative action. Pass workspace_id as a query parameter.
123
123
  */
124
124
  get: operations["get-v1-credit-history"];
125
125
  put?: never;
@@ -354,9 +354,9 @@ export interface paths {
354
354
  };
355
355
  /**
356
356
  * Get current user
357
- * @description Returns the authenticated user's profile and workspaces.
357
+ * @description Returns the authenticated user's profile and workspaces accessible with these credentials. A workspace-scoped API key returns only its workspace.
358
358
  */
359
- get: operations["get-v1-me"];
359
+ get: operations["getMe"];
360
360
  put?: never;
361
361
  post?: never;
362
362
  delete?: never;
@@ -570,11 +570,12 @@ export interface paths {
570
570
  * List projects
571
571
  * @description Returns projects in a workspace, sorted by last edited time descending then project ID ascending. Pass workspace_id as a query parameter.
572
572
  */
573
- get: operations["get-v1-projects"];
573
+ get: operations["listProjects"];
574
574
  put?: never;
575
575
  /**
576
576
  * Create project
577
- * @description Creates a new project. Pass workspace_id in the request body.
577
+ * @deprecated
578
+ * @description Creates a project in workspace_id. Set initial_message to start an AI response after creation. To copy an existing project, set source_project_id; this returns 202 with a job_id to poll at GET /v1/remix-jobs/{job_id}. Project creation and remix completion do not indicate that the AI has finished processing initial_message.
578
579
  */
579
580
  post: operations["post-v1-projects"];
580
581
  delete?: never;
@@ -594,21 +595,21 @@ export interface paths {
594
595
  * Get project
595
596
  * @description Returns project details.
596
597
  */
597
- get: operations["get-v1-projects-project_id"];
598
+ get: operations["getProject"];
598
599
  put?: never;
599
600
  post?: never;
600
601
  /**
601
602
  * Delete project
602
- * @description Soft-deletes a project. Repeated deletes are treated as successful.
603
+ * @description Deletes a project. Where trash is available the project can be restored from the Lovable editor; otherwise the deletion is permanent and custom domains are disconnected immediately. Repeated deletes are treated as successful.
603
604
  */
604
- delete: operations["delete-v1-projects-project_id"];
605
+ delete: operations["deleteProject"];
605
606
  options?: never;
606
607
  head?: never;
607
608
  /**
608
609
  * Update project
609
- * @description Updates supported project fields such as visibility and display_name.
610
+ * @description Updates project sharing, display name, or description. Omitted fields keep their current values. This does not change access to the published app; use PATCH /v1/projects/{project_id}/publish for that.
610
611
  */
611
- patch: operations["patch-v1-projects-project_id"];
612
+ patch: operations["updateProject"];
612
613
  trace?: never;
613
614
  };
614
615
  "/v1/projects/{project_id}/analytics": {
@@ -620,9 +621,9 @@ export interface paths {
620
621
  };
621
622
  /**
622
623
  * Get project analytics
623
- * @description Returns analytics for a published project: the historical time series and breakdowns for a date range by default, or the real-time visitor trend with series=trend.
624
+ * @description Returns website traffic for a published project: a time series and up to 10 items in each traffic breakdown by default, or visitor counts for the last 30 minutes. Date ranges are limited to 365 days, or 31 days with one-hour buckets. Some projects retain analytics for 90 days; older buckets are returned with zero values.
624
625
  */
625
- get: operations["get-v1-projects-project_id-analytics"];
626
+ get: operations["getProjectAnalytics"];
626
627
  put?: never;
627
628
  post?: never;
628
629
  delete?: never;
@@ -661,9 +662,9 @@ export interface paths {
661
662
  };
662
663
  /**
663
664
  * List project collaborators
664
- * @description Returns the users with direct access to this project.
665
+ * @description Returns users with direct access to this project. The owner appears only when they also hold an explicit grant; see user_id on GET /v1/projects/{project_id}. Excludes pending invitations to email addresses without a Lovable account.
665
666
  */
666
- get: operations["get-v1-projects-project_id-collaborators"];
667
+ get: operations["listProjectCollaborators"];
667
668
  put?: never;
668
669
  post?: never;
669
670
  delete?: never;
@@ -767,9 +768,9 @@ export interface paths {
767
768
  put?: never;
768
769
  /**
769
770
  * Create embed URL
770
- * @description Creates a one-hour static preview URL that can be framed by one exact HTTPS parent origin. The token is anonymous and cannot access live previews or published modes.
771
+ * @description Creates a preview URL valid for one hour that can be loaded in an iframe on one exact HTTPS origin. Visitors do not need a Lovable login. It shows the project's built preview; it does not grant access to the editor or the published app.
771
772
  */
772
- post: operations["post-v1-projects-project_id-embed-url"];
773
+ post: operations["createEmbedUrl"];
773
774
  delete?: never;
774
775
  options?: never;
775
776
  head?: never;
@@ -941,10 +942,10 @@ export interface paths {
941
942
  cookie?: never;
942
943
  };
943
944
  /**
944
- * List PII labels
945
- * @description Returns PII labels detected for the project, newest first.
945
+ * List personal data findings
946
+ * @description Returns findings of personally identifiable information (PII) in the project, newest first, including open, ignored, and fixed findings. Personal data detection must be enabled for the workspace; otherwise this endpoint returns 404.
946
947
  */
947
- get: operations["get-v1-projects-project_id-pii-labels"];
948
+ get: operations["listPiiLabels"];
948
949
  put?: never;
949
950
  post?: never;
950
951
  delete?: never;
@@ -964,17 +965,17 @@ export interface paths {
964
965
  put?: never;
965
966
  /**
966
967
  * Publish project
967
- * @description Builds and deploys the project. Asynchronous: returns 202 with a deployment_id; poll GET /v1/projects/{project_id}/publish/{deployment_id} until status is completed or error. Optionally sets who can view the published app first: public (anyone with the link), workspace (workspace members only), or custom (only the groups/users in audience). Omit visibility to keep the current setting. Visibility changes apply to the currently published version immediately, before the new deployment finishes.
968
+ * @description Builds and deploys the project. Returns 202 with a deployment_id; poll GET /v1/projects/{project_id}/publish/{deployment_id} until deployment finishes. Optionally set visibility to choose who can view the published app. Omit visibility to keep the current setting. Visibility changes apply to the currently published version immediately, before the new deployment finishes.
968
969
  */
969
- post: operations["post-v1-projects-project_id-publish"];
970
+ post: operations["publishProject"];
970
971
  delete?: never;
971
972
  options?: never;
972
973
  head?: never;
973
974
  /**
974
975
  * Update publish settings
975
- * @description Updates the published app without redeploying. visibility controls who can view it: public (anyone with the link), workspace (workspace members only), or custom (only the groups/users in audience — the list replaces all existing group/user grants; grants managed in the UI such as org access and email invites are preserved). is_published false takes the app offline; settings are kept and apply again on the next publish (already-offline is a no-op). Changes take effect immediately.
976
+ * @description Changes published app access without rebuilding the app. Set visibility to public, workspace, or custom. With custom visibility, audience replaces group and user grants and removes workspace-wide access; organization access and email invitations managed in the UI are preserved. Set is_published to false to take the app offline while retaining its settings for the next publish. Changes take effect immediately.
976
977
  */
977
- patch: operations["patch-v1-projects-project_id-publish"];
978
+ patch: operations["updatePublishSettings"];
978
979
  trace?: never;
979
980
  };
980
981
  "/v1/projects/{project_id}/publish/{deployment_id}": {
@@ -986,9 +987,9 @@ export interface paths {
986
987
  };
987
988
  /**
988
989
  * Get publish status
989
- * @description Returns the status of an async publish started with POST /v1/projects/{project_id}/publish, keyed by the deployment_id it returned. Poll until status is completed (url is set) or error (error_message explains the failure). Poll no more than once every 2 seconds and honor Retry-After on 429 responses.
990
+ * @description Returns the status of an async publish started with POST /v1/projects/{project_id}/publish, keyed by the deployment_id it returned. Poll until deployment succeeds (url is set) or fails (error_message explains the failure). Poll no more than once every 2 seconds and honor Retry-After on 429 responses.
990
991
  */
991
- get: operations["get-v1-projects-project_id-publish-deployment_id"];
992
+ get: operations["getDeployment"];
992
993
  put?: never;
993
994
  post?: never;
994
995
  delete?: never;
@@ -1048,15 +1049,11 @@ export interface paths {
1048
1049
  };
1049
1050
  /**
1050
1051
  * List security scans
1051
- * @description Returns the project's security scan invocations, newest first.
1052
+ * @description Returns the project's security scans ordered by start time, newest first. Use a scan's detail endpoint to retrieve findings.
1052
1053
  */
1053
- get: operations["get-v1-projects-project_id-security-scans"];
1054
+ get: operations["listSecurityScans"];
1054
1055
  put?: never;
1055
- /**
1056
- * Trigger security scan
1057
- * @description Starts a security scan for the project's latest commit and returns a scan_id.
1058
- */
1059
- post: operations["post-v1-projects-project_id-security-scans"];
1056
+ post?: never;
1060
1057
  delete?: never;
1061
1058
  options?: never;
1062
1059
  head?: never;
@@ -1072,9 +1069,9 @@ export interface paths {
1072
1069
  };
1073
1070
  /**
1074
1071
  * Get security scan
1075
- * @description Returns a single security scan invocation with per-scanner run details and findings.
1072
+ * @description Returns a security scan's status and findings. A scan may include results reused from earlier scans.
1076
1073
  */
1077
- get: operations["get-v1-projects-project_id-security-scans-scan_id"];
1074
+ get: operations["getSecurityScan"];
1078
1075
  put?: never;
1079
1076
  post?: never;
1080
1077
  delete?: never;
@@ -1176,7 +1173,8 @@ export interface paths {
1176
1173
  };
1177
1174
  /**
1178
1175
  * Get remix job
1179
- * @description Returns the status of an async remix started with POST /v1/projects, keyed by the job_id it returned. Poll until status is completed (result.project_id is set) or error (error_message explains the failure). Poll no more than once every 2 seconds and honor Retry-After on 429 responses. Jobs remain queryable while Temporal retains the workflow history; after retention expires this route returns 404. Reusing the same job_id is idempotent and returns the same terminal result.
1176
+ * @deprecated
1177
+ * @description Returns the status of a remix started with POST /v1/projects, using the returned job_id. Poll until copying succeeds (result.project_id is set) or fails (error_message explains the failure). Poll no more than once every 2 seconds and honor Retry-After on 429 responses. After the copy finishes, any initial_message may still be processing. Job status is retained for a limited time; expired jobs return 404.
1180
1178
  */
1181
1179
  get: operations["get-v1-remix-jobs-job_id"];
1182
1180
  put?: never;
@@ -1395,9 +1393,9 @@ export interface paths {
1395
1393
  };
1396
1394
  /**
1397
1395
  * List workspaces
1398
- * @description Returns workspaces the authenticated user belongs to with cursor pagination.
1396
+ * @description Returns workspaces the authenticated user belongs to that are accessible with these credentials, with cursor pagination. A workspace-scoped API key returns only its workspace.
1399
1397
  */
1400
- get: operations["get-v1-workspaces"];
1398
+ get: operations["listWorkspaces"];
1401
1399
  put?: never;
1402
1400
  post?: never;
1403
1401
  delete?: never;
@@ -1415,9 +1413,9 @@ export interface paths {
1415
1413
  };
1416
1414
  /**
1417
1415
  * Get workspace
1418
- * @description Returns workspace details.
1416
+ * @description Returns workspace details and the authenticated user's membership.
1419
1417
  */
1420
- get: operations["get-v1-workspaces-workspace_id"];
1418
+ get: operations["getWorkspace"];
1421
1419
  put?: never;
1422
1420
  post?: never;
1423
1421
  delete?: never;
@@ -1435,9 +1433,9 @@ export interface paths {
1435
1433
  };
1436
1434
  /**
1437
1435
  * Get workspace analytics
1438
- * @description Returns workspace-wide analytics time series aggregated across the workspace's projects. Not paginated: the response always covers the full requested window and cursor/limit parameters are not supported narrow the date range or use daily granularity to reduce response size.
1436
+ * @description Returns website traffic time series for the workspace, including historical traffic from projects that have since been deleted. The response covers the requested date range without pagination. Date ranges are limited to 365 days, or 31 days with hourly granularity.
1439
1437
  */
1440
- get: operations["get-v1-workspaces-workspace_id-analytics"];
1438
+ get: operations["getWorkspaceAnalytics"];
1441
1439
  put?: never;
1442
1440
  post?: never;
1443
1441
  delete?: never;
@@ -1518,9 +1516,9 @@ export interface paths {
1518
1516
  };
1519
1517
  /**
1520
1518
  * Get workspace credit balance
1521
- * @description Returns the workspace's aggregated credit balance, daily limit, billing-period usage, expiring grants, and per-bucket balances.
1519
+ * @description Returns current general-purpose and build-credit balances, the daily credit allowance, credit usage in the billing period, and upcoming expirations.
1522
1520
  */
1523
- get: operations["get-v1-workspaces-workspace_id-billing-credit-balance"];
1521
+ get: operations["getCreditBalance"];
1524
1522
  put?: never;
1525
1523
  post?: never;
1526
1524
  delete?: never;
@@ -1538,9 +1536,9 @@ export interface paths {
1538
1536
  };
1539
1537
  /**
1540
1538
  * Get workspace credit history
1541
- * @description Returns the workspace's credit grant, expiry, adjustment, and conversion history, ordered by occurred_at descending with entry ID as the cursor tie-breaker.
1539
+ * @description Returns credit allocations, expirations, adjustments, and conversions from the past 365 days, newest first. Entries sharing credit_grant_id describe the same allocation; an offsetting adjustment means remaining credits were removed early, for example after a plan change or refund. Ordinary usage deductions, daily credits, overage grants, and Cloud and AI Gateway allowances are excluded; use GET /v1/workspaces/{workspace_id}/billing/credit-usage for consumption.
1542
1540
  */
1543
- get: operations["get-v1-workspaces-workspace_id-billing-credit-history"];
1541
+ get: operations["listCreditHistory"];
1544
1542
  put?: never;
1545
1543
  post?: never;
1546
1544
  delete?: never;
@@ -1549,30 +1547,6 @@ export interface paths {
1549
1547
  patch?: never;
1550
1548
  trace?: never;
1551
1549
  };
1552
- "/v1/workspaces/{workspace_id}/billing/credit-limits": {
1553
- parameters: {
1554
- query?: never;
1555
- header?: never;
1556
- path?: never;
1557
- cookie?: never;
1558
- };
1559
- /**
1560
- * Get member credit limits
1561
- * @description Returns each active member's monthly credit limit plus the workspace default, paginated. Members without an explicit limit inherit the workspace default.
1562
- */
1563
- get: operations["get-v1-workspaces-workspace_id-billing-credit-limits"];
1564
- put?: never;
1565
- /**
1566
- * Set member credit limits
1567
- * @description Sets or clears the monthly credit limit for 1-1000 members in one request (send a single-item list for one member). Returns HTTP 200 with a per-member result; an individual failure does not fail the request. If every member fails, returns HTTP 422 with the same per-member response body.
1568
- */
1569
- post: operations["post-v1-workspaces-workspace_id-billing-credit-limits"];
1570
- delete?: never;
1571
- options?: never;
1572
- head?: never;
1573
- patch?: never;
1574
- trace?: never;
1575
- };
1576
1550
  "/v1/workspaces/{workspace_id}/billing/credit-usage": {
1577
1551
  parameters: {
1578
1552
  query?: never;
@@ -1582,9 +1556,9 @@ export interface paths {
1582
1556
  };
1583
1557
  /**
1584
1558
  * Get workspace credit usage
1585
- * @description Returns credit usage for a time window: one aggregate row by default, per-member or per-project rows with group_by, or time-bucketed rows with interval. Member-attributed rows (group_by=member, or a query filtered to one user_id) also carry the member's display_name and workspace email; project rows carry the project ID only (join the projects endpoint for the name). Grouped rows cover only entities with usage in the window (zero-usage members are omitted), and usage not attributed to a member or project counts toward workspace_total but appears in no row. Queries not restricted to the calling user (user_id=me) require workspace admin permission.
1559
+ * @description Returns Lovable credits used in a date range: one aggregate row by default, rows per member or project with group_by, or rows per day, week, or month with interval. Grouped rows are ordered by total usage descending; time rows are oldest first. Member rows include display_name and workspace email when available; use GET /v1/projects/{project_id} for project names. Grouped results omit members and projects with no usage. Unattributed usage contributes to workspace_total without a grouped row. Queries covering anyone other than the calling user require workspace admin permission; pass user_id=me to request only your usage.
1586
1560
  */
1587
- get: operations["get-v1-workspaces-workspace_id-billing-credit-usage"];
1561
+ get: operations["getCreditUsage"];
1588
1562
  put?: never;
1589
1563
  post?: never;
1590
1564
  delete?: never;
@@ -1836,7 +1810,7 @@ export interface paths {
1836
1810
  * List workspace groups
1837
1811
  * @description Returns the workspace's groups, sorted by name. Use a group's id as the target id of a type "group" audience entry when publishing a project with visibility "custom" via POST or PATCH /v1/projects/{project_id}/publish.
1838
1812
  */
1839
- get: operations["get-v1-workspaces-workspace_id-groups"];
1813
+ get: operations["listWorkspaceGroups"];
1840
1814
  put?: never;
1841
1815
  post?: never;
1842
1816
  delete?: never;
@@ -1882,7 +1856,7 @@ export interface paths {
1882
1856
  * List workspace members
1883
1857
  * @description Returns a paginated list of workspace members, filtered by role and status.
1884
1858
  */
1885
- get: operations["get-v1-workspaces-workspace_id-members"];
1859
+ get: operations["listWorkspaceMembers"];
1886
1860
  put?: never;
1887
1861
  post?: never;
1888
1862
  delete?: never;
@@ -1926,9 +1900,11 @@ export interface paths {
1926
1900
  };
1927
1901
  /**
1928
1902
  * Get workspace security insights
1929
- * @description Returns the workspace security insights summary.
1903
+ * @description 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.
1904
+ *
1905
+ * 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.
1930
1906
  */
1931
- get: operations["get-v1-workspaces-workspace_id-security-center-insights"];
1907
+ get: operations["getSecurityInsights"];
1932
1908
  put?: never;
1933
1909
  post?: never;
1934
1910
  delete?: never;
@@ -1946,9 +1922,9 @@ export interface paths {
1946
1922
  };
1947
1923
  /**
1948
1924
  * List workspace security project inventory
1949
- * @description Returns the review-priority-ranked project inventory for the workspace, sorted by the selected sort_by (default last_edited, or relevance when query is set) with offset-based paging behind the cursor.
1925
+ * @description Returns workspace projects with review priorities, security finding counts, activity counts, and publishing details. Use GET /v1/projects/{project_id}/security-scans/{scan_id} for individual findings. Supports search and filters. By default, projects are ordered by most recently edited, or search relevance when query is set.
1950
1926
  */
1951
- get: operations["get-v1-workspaces-workspace_id-security-center-insights-projects"];
1927
+ get: operations["listSecurityInsightProjects"];
1952
1928
  put?: never;
1953
1929
  post?: never;
1954
1930
  delete?: never;
@@ -1966,19 +1942,15 @@ export interface paths {
1966
1942
  };
1967
1943
  /**
1968
1944
  * Get workspace settings
1969
- * @description Returns a curated subset of the workspace's settings.
1945
+ * @description Returns workspace plan, security and publishing settings, and the default member credit limit.
1970
1946
  */
1971
- get: operations["get-v1-workspaces-workspace_id-settings"];
1947
+ get: operations["getWorkspaceSettings"];
1972
1948
  put?: never;
1973
1949
  post?: never;
1974
1950
  delete?: never;
1975
1951
  options?: never;
1976
1952
  head?: never;
1977
- /**
1978
- * Update workspace settings
1979
- * @description Updates writable workspace settings. Currently supports the default per-member monthly credit limit.
1980
- */
1981
- patch: operations["patch-v1-workspaces-workspace_id-settings"];
1953
+ patch?: never;
1982
1954
  trace?: never;
1983
1955
  };
1984
1956
  "/v1/workspaces/{workspace_id}/skills": {
@@ -2079,8 +2051,8 @@ export interface components {
2079
2051
  timeSeries: components["schemas"]["ChannelTimeSeriesGroup"];
2080
2052
  };
2081
2053
  ChannelListsGroup: {
2082
- page: components["schemas"]["ListData"];
2083
- source: components["schemas"]["ListData"];
2054
+ page: components["schemas"]["AnalyticsBreakdown"];
2055
+ source: components["schemas"]["AnalyticsBreakdown"];
2084
2056
  };
2085
2057
  ChannelTimeSeriesGroup: {
2086
2058
  /** @description Bounced sessions divided by sessions, as a percentage. Legacy bounces have identical first and last page-view times; user_app_events bounces have fewer than two views and under ten seconds engagement. */
@@ -2121,61 +2093,73 @@ export interface components {
2121
2093
  CursorListResponseProjectPIIFindingDTO: {
2122
2094
  /** @description Items in this page. */
2123
2095
  data: components["schemas"]["ProjectPIIFindingDTO"][] | null;
2124
- /** @description Pagination cursors for fetching adjacent pages. */
2096
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2125
2097
  pagination: components["schemas"]["Pagination"];
2126
2098
  };
2127
2099
  CursorListResponsePublicV1ConnectorItem: {
2128
2100
  /** @description Items in this page. */
2129
2101
  data: components["schemas"]["PublicV1ConnectorItem"][] | null;
2130
- /** @description Pagination cursors for fetching adjacent pages. */
2102
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2103
+ pagination: components["schemas"]["Pagination"];
2104
+ };
2105
+ PiiLabelPage: {
2106
+ /** @description Items in this page. */
2107
+ data: components["schemas"]["PiiLabel"][] | null;
2108
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2109
+ pagination: components["schemas"]["Pagination"];
2110
+ };
2111
+ ProjectSummaryPage: {
2112
+ /** @description Items in this page. */
2113
+ data: components["schemas"]["ProjectSummary"][] | null;
2114
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2131
2115
  pagination: components["schemas"]["Pagination"];
2132
2116
  };
2133
- CursorListResponsePublicV1ProjectListItem: {
2117
+ SecurityScanPage: {
2134
2118
  /** @description Items in this page. */
2135
- data: components["schemas"]["PublicV1ProjectListItem"][] | null;
2136
- /** @description Pagination cursors for fetching adjacent pages. */
2119
+ data: components["schemas"]["SecurityScan"][] | null;
2120
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2137
2121
  pagination: components["schemas"]["Pagination"];
2138
2122
  };
2139
2123
  CursorListResponseV1EditSummary: {
2140
2124
  /** @description Items in this page. */
2141
2125
  data: components["schemas"]["V1EditSummary"][] | null;
2142
- /** @description Pagination cursors for fetching adjacent pages. */
2126
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2143
2127
  pagination: components["schemas"]["Pagination"];
2144
2128
  };
2145
2129
  CursorListResponseV1MessageListItem: {
2146
2130
  /** @description Items in this page. */
2147
2131
  data: components["schemas"]["V1MessageListItem"][] | null;
2148
- /** @description Pagination cursors for fetching adjacent pages. */
2132
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2149
2133
  pagination: components["schemas"]["Pagination"];
2150
2134
  };
2151
- CursorListResponseV1ProjectCollaborator: {
2135
+ ProjectCollaboratorPage: {
2152
2136
  /** @description Items in this page. */
2153
- data: components["schemas"]["V1ProjectCollaborator"][] | null;
2154
- /** @description Pagination cursors for fetching adjacent pages. */
2137
+ data: components["schemas"]["ProjectCollaborator"][] | null;
2138
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2155
2139
  pagination: components["schemas"]["Pagination"];
2156
2140
  };
2157
2141
  CursorListResponseV1ProjectSkillDTO: {
2158
2142
  /** @description Items in this page. */
2159
2143
  data: components["schemas"]["V1ProjectSkillDTO"][] | null;
2160
- /** @description Pagination cursors for fetching adjacent pages. */
2144
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2161
2145
  pagination: components["schemas"]["Pagination"];
2162
2146
  };
2163
2147
  CursorListResponseV1SecurityScanSummary: {
2164
2148
  /** @description Items in this page. */
2165
2149
  data: components["schemas"]["V1SecurityScanSummary"][] | null;
2166
- /** @description Pagination cursors for fetching adjacent pages. */
2150
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2167
2151
  pagination: components["schemas"]["Pagination"];
2168
2152
  };
2169
- CursorListResponseV1WorkspaceGroup: {
2153
+ WorkspaceGroupPage: {
2170
2154
  /** @description Items in this page. */
2171
- data: components["schemas"]["V1WorkspaceGroup"][] | null;
2172
- /** @description Pagination cursors for fetching adjacent pages. */
2155
+ data: components["schemas"]["WorkspaceGroup"][] | null;
2156
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2173
2157
  pagination: components["schemas"]["Pagination"];
2174
2158
  };
2175
- CursorListResponseV1WorkspaceMember: {
2159
+ WorkspaceMemberPage: {
2176
2160
  /** @description Items in this page. */
2177
- data: components["schemas"]["V1WorkspaceMember"][] | null;
2178
- /** @description Pagination cursors for fetching adjacent pages. */
2161
+ data: components["schemas"]["WorkspaceMember"][] | null;
2162
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2179
2163
  pagination: components["schemas"]["Pagination"];
2180
2164
  };
2181
2165
  DiffHunk: {
@@ -2250,9 +2234,9 @@ export interface components {
2250
2234
  */
2251
2235
  total: number;
2252
2236
  };
2253
- GetMeOutputBody: {
2237
+ CurrentUser: {
2254
2238
  /**
2255
- * @description User email address
2239
+ * @description Email address from the user's primary sign-in provider. Empty when unavailable.
2256
2240
  * @example jane.cooper@acme.com
2257
2241
  */
2258
2242
  email: string;
@@ -2262,14 +2246,14 @@ export interface components {
2262
2246
  */
2263
2247
  id: string;
2264
2248
  /**
2265
- * @description User display name
2249
+ * @description User's display name, or username when a display name is unavailable.
2266
2250
  * @example Jane Cooper
2267
2251
  */
2268
2252
  name: string;
2269
- /** @description Workspaces the user belongs to */
2270
- workspaces: components["schemas"]["GetMeWorkspace"][] | null;
2253
+ /** @description Workspaces the user belongs to that are accessible with these credentials. A workspace-scoped API key returns only its workspace. */
2254
+ workspaces: components["schemas"]["CurrentUserWorkspace"][] | null;
2271
2255
  };
2272
- GetMeWorkspace: {
2256
+ CurrentUserWorkspace: {
2273
2257
  /**
2274
2258
  * @description Workspace ID
2275
2259
  * @example workspace_01jw3k9m2xq8r5v0c7d4e6f2gh
@@ -2281,10 +2265,11 @@ export interface components {
2281
2265
  */
2282
2266
  name: string;
2283
2267
  /**
2284
- * @description Caller's role in the workspace. One of: owner, admin, member, viewer, collaborator. More values may be added; clients must tolerate unknown values.
2268
+ * @description Caller's role in the workspace. More values may be added; clients must tolerate unknown values.
2285
2269
  * @example admin
2270
+ * @enum {string}
2286
2271
  */
2287
- role: string;
2272
+ role: "owner" | "admin" | "member" | "viewer" | "collaborator";
2288
2273
  };
2289
2274
  GitFileEntry: {
2290
2275
  binary: boolean;
@@ -2310,16 +2295,16 @@ export interface components {
2310
2295
  /** @description Last update timestamp */
2311
2296
  updated_at: string;
2312
2297
  };
2313
- ListData: {
2314
- /** @description Ranked items in this breakdown. */
2315
- data: components["schemas"]["ListDataPoint"][] | null;
2298
+ AnalyticsBreakdown: {
2299
+ /** @description Up to 10 items, ordered by visitor session count from highest to lowest. An empty array can mean no data or an unavailable breakdown. */
2300
+ data: components["schemas"]["AnalyticsBreakdownPoint"][] | null;
2316
2301
  /**
2317
- * @description Human-readable name of this breakdown dimension.
2318
- * @example Top Pages
2302
+ * @description Breakdown identifier: page, source, device, or country.
2303
+ * @example page
2319
2304
  */
2320
2305
  label: string;
2321
2306
  };
2322
- ListDataPoint: {
2307
+ AnalyticsBreakdownPoint: {
2323
2308
  /**
2324
2309
  * @description Name of this item within the breakdown.
2325
2310
  * @example /pricing
@@ -2327,20 +2312,20 @@ export interface components {
2327
2312
  label: string;
2328
2313
  /**
2329
2314
  * Format: int64
2330
- * @description Count of visits or events attributed to this item.
2315
+ * @description Unique visitor sessions attributed to this item over the requested range. A session may appear under multiple items.
2331
2316
  * @example 1280
2332
2317
  */
2333
2318
  value: number;
2334
2319
  };
2335
- ListsGroup: {
2336
- /** @description Breakdown of traffic by visitor country. */
2337
- country: components["schemas"]["ListData"];
2338
- /** @description Breakdown of traffic by device type. */
2339
- device: components["schemas"]["ListData"];
2340
- /** @description Breakdown of traffic by top page. */
2341
- page: components["schemas"]["ListData"];
2342
- /** @description Breakdown of traffic by referral source. */
2343
- source: components["schemas"]["ListData"];
2320
+ AnalyticsBreakdownGroup: {
2321
+ /** @description Top visitor countries by visitor sessions. Unknown means the country could not be determined. */
2322
+ country: components["schemas"]["AnalyticsBreakdown"];
2323
+ /** @description Top device types by visitor sessions. */
2324
+ device: components["schemas"]["AnalyticsBreakdown"];
2325
+ /** @description Top page paths by visitor sessions. */
2326
+ page: components["schemas"]["AnalyticsBreakdown"];
2327
+ /** @description Top referring domains by visitor sessions. Direct means no referring domain was recorded. */
2328
+ source: components["schemas"]["AnalyticsBreakdown"];
2344
2329
  };
2345
2330
  LovableCreator: {
2346
2331
  name: string;
@@ -2394,7 +2379,7 @@ export interface components {
2394
2379
  */
2395
2380
  has_more: boolean;
2396
2381
  /**
2397
- * @description Cursor for the next page; null when there are no more results
2382
+ * @description Pass this value as the cursor query parameter to fetch the next page. Treat it as an opaque string; null when there are no more results.
2398
2383
  * @example eyJ2IjoxLCJpZCI6InByal8wMWp3M2s5In0
2399
2384
  */
2400
2385
  next_cursor: string | null;
@@ -2406,7 +2391,7 @@ export interface components {
2406
2391
  };
2407
2392
  /** @enum {string} */
2408
2393
  channelsSource?: "legacy" | "user_app_events";
2409
- lists: components["schemas"]["ListsGroup"];
2394
+ lists: components["schemas"]["AnalyticsBreakdownGroup"];
2410
2395
  timeSeries: components["schemas"]["TimeSeriesGroup"];
2411
2396
  };
2412
2397
  ProjectFileInfo: {
@@ -2419,13 +2404,13 @@ export interface components {
2419
2404
  };
2420
2405
  ProjectPIIFindingDTO: {
2421
2406
  /**
2422
- * @description Trajectory event ID for chat-source labels
2407
+ * @description Identifier of the chat message associated with a chat or uploaded-file finding, when available.
2423
2408
  * @example default:user#12#01jw3k9m2xq8r5v0c7d4e6f2gh
2424
2409
  */
2425
2410
  chat_message_id?: string;
2426
- /** @description Uploaded file ID for upload-source labels */
2411
+ /** @description Identifier of the uploaded file where personal data was detected. */
2427
2412
  chat_upload_id?: string;
2428
- /** @description Connector ID for connector labels */
2413
+ /** @description Connected service associated with this finding. */
2429
2414
  connector_id?: string;
2430
2415
  /**
2431
2416
  * Format: date-time
@@ -2434,58 +2419,62 @@ export interface components {
2434
2419
  */
2435
2420
  found_at: string;
2436
2421
  /**
2437
- * @description PII label ID
2422
+ * @description Unique ID for this personal data finding.
2438
2423
  * @example pii_01jw3k9m2xq8r5v0c7d4e6f2gh
2439
2424
  */
2440
2425
  id: string;
2441
2426
  /**
2442
- * @description DLP info type, such as EMAIL_ADDRESS
2427
+ * @description Type of personal data detected, such as EMAIL_ADDRESS or PHONE_NUMBER.
2443
2428
  * @example EMAIL_ADDRESS
2444
2429
  */
2445
2430
  info_type?: string;
2446
2431
  /**
2447
- * @description DLP likelihood: VERY_UNLIKELY, UNLIKELY, POSSIBLE, LIKELY, or VERY_LIKELY
2432
+ * @description Confidence that the sample contains the indicated data type. More values may be added; clients must tolerate unknown values.
2448
2433
  * @example LIKELY
2434
+ * @enum {string}
2449
2435
  */
2450
- likelihood?: string;
2436
+ likelihood?: "LIKELIHOOD_UNSPECIFIED" | "VERY_UNLIKELY" | "UNLIKELY" | "POSSIBLE" | "LIKELY" | "VERY_LIKELY";
2451
2437
  /**
2452
- * @description Masked sample of the detected value
2453
- * @example j***@acme.com
2438
+ * @description Sample of the detected value. May contain unmasked personal data.
2439
+ * @example alex@example.com
2454
2440
  */
2455
2441
  quote?: string;
2456
2442
  /**
2457
- * @description Workflow scan run ID that recorded the label
2443
+ * @description Identifier of the personal data scan that recorded this finding. Separate from security scan IDs.
2458
2444
  * @example pii-scan-prj_01jw3k9m2xq8r5v0c7d4e6f2gh
2459
2445
  */
2460
2446
  scan_id?: string;
2461
2447
  /**
2462
- * @description Sensitivity bucket: low, mid, or high
2448
+ * @description Sensitivity assigned to the detected data type. More values may be added; clients must tolerate unknown values.
2463
2449
  * @example high
2450
+ * @enum {string}
2464
2451
  */
2465
- sensitivity?: string;
2452
+ sensitivity?: "low" | "mid" | "high";
2466
2453
  /**
2467
- * @description Where the PII was detected: chat, upload, cloud_storage, or cloud_sql
2454
+ * @description Where personal data was detected. More values may be added; clients must tolerate unknown values.
2468
2455
  * @example chat
2456
+ * @enum {string}
2469
2457
  */
2470
- source: string;
2471
- /** @description Database location for cloud_sql labels */
2458
+ source: "chat" | "upload" | "cloud_storage" | "cloud_sql" | "connector";
2459
+ /** @description Database schema, table, and optional column where personal data was detected. */
2472
2460
  sql_location?: string;
2473
2461
  /**
2474
- * @description Label status: open, ignored, or fixed
2462
+ * @description Review state of the personal data finding. A resolved finding indicates that the flagged content was redacted or removed. More values may be added; clients must tolerate unknown values.
2475
2463
  * @example open
2464
+ * @enum {string}
2476
2465
  */
2477
- status: string;
2478
- /** @description Cloud storage object path for cloud_storage labels */
2466
+ status: "open" | "ignored" | "fixed";
2467
+ /** @description Path of the cloud storage object where personal data was detected. */
2479
2468
  storage_path?: string;
2480
2469
  };
2481
- ProjectTrendResponse: {
2470
+ AnalyticsTrend: {
2482
2471
  /**
2483
2472
  * Format: int64
2484
- * @description Number of visitors currently active on the site.
2473
+ * @description Unique visitor sessions with a page view in the last 5 minutes.
2485
2474
  * @example 12
2486
2475
  */
2487
2476
  currentVisitors: number;
2488
- /** @description Time-ordered visit trend buckets. */
2477
+ /** @description One-minute buckets over the last 30 minutes, ordered oldest first. Minutes without visits are omitted. */
2489
2478
  data: components["schemas"]["TrendDataPoint"][] | null;
2490
2479
  };
2491
2480
  PublicV1ConnectorItem: {
@@ -2540,7 +2529,7 @@ export interface components {
2540
2529
  */
2541
2530
  is_published?: boolean;
2542
2531
  /**
2543
- * @description Remix job ID for tracking progress when source_project_id is provided
2532
+ * @description ID returned when source_project_id starts an asynchronous remix. Poll GET /v1/remix-jobs/{job_id} to obtain the new project ID when the copy completes.
2544
2533
  * @example job_01jw3k9m2xq8r5v0c7d4e6f2gh
2545
2534
  */
2546
2535
  job_id?: string;
@@ -2570,20 +2559,22 @@ export interface components {
2570
2559
  */
2571
2560
  preview_url?: string;
2572
2561
  /**
2573
- * @description Provisioning status of the project, not agent build progress. 'completed' means the project scaffold was created, and is set before the agent has finished the initial message, so the code at that point is often an empty starter page. To check whether the agent finished building, poll GET /v1/messages/{message_id}. One of: in_progress, completed, failed. More values may be added; clients must tolerate unknown values.
2562
+ * @description Project setup status. Successful setup means the project has been created; the AI may still be processing initial_message and the preview may not be ready. More values may be added; clients must tolerate unknown values.
2574
2563
  * @example completed
2564
+ * @enum {string}
2575
2565
  */
2576
- status?: string;
2566
+ status?: "in_progress" | "completed" | "failed";
2577
2567
  /**
2578
2568
  * @description Published project URL
2579
2569
  * @example https://acme-landing-page.lovable.app
2580
2570
  */
2581
2571
  url?: string;
2582
2572
  /**
2583
- * @description Project visibility: draft, private, workspace_view, public
2573
+ * @description Controls access to the project in the Lovable editor. Workspace roles and explicit sharing grants determine access. Published app access and open remixing are configured separately. More values may be added; clients must tolerate unknown values.
2584
2574
  * @example private
2575
+ * @enum {string}
2585
2576
  */
2586
- visibility?: string;
2577
+ visibility?: "draft" | "private" | "workspace_view" | "public";
2587
2578
  /**
2588
2579
  * @description Workspace ID
2589
2580
  * @example workspace_01jw3k9m2xq8r5v0c7d4e6f2gh
@@ -2600,11 +2591,17 @@ export interface components {
2600
2591
  /** @description Project ID */
2601
2592
  project_id: string;
2602
2593
  };
2603
- PublicV1GetWorkspaceBody: {
2594
+ SecurityScanDetail: {
2595
+ /** @description Findings in this scan snapshot, including results reused from earlier scans and findings marked fixed or ignored. */
2596
+ findings: components["schemas"]["SecurityFinding"][] | null;
2597
+ /** @description Status and timing of the security scan. */
2598
+ scan: components["schemas"]["SecurityScan"];
2599
+ };
2600
+ GetWorkspaceResponse: {
2604
2601
  /** @description Caller's membership in this workspace. */
2605
- current_member?: components["schemas"]["PublicV1WorkspaceMember"];
2602
+ current_member?: components["schemas"]["WorkspaceMembership"];
2606
2603
  /** @description Workspace details. */
2607
- workspace: components["schemas"]["PublicV1Workspace"];
2604
+ workspace: components["schemas"]["Workspace"];
2608
2605
  };
2609
2606
  PublicV1GitFilesResponse: {
2610
2607
  data: components["schemas"]["GitFileEntryLite"][] | null;
@@ -2612,7 +2609,62 @@ export interface components {
2612
2609
  /** @description Resolved Git ref */
2613
2610
  ref: string;
2614
2611
  };
2615
- PublicV1PatchProjectBody: {
2612
+ PiiLabel: {
2613
+ /** @description Identifier of the uploaded file where personal data was detected. */
2614
+ chat_upload_id?: string;
2615
+ /** @description Connected service associated with this finding. */
2616
+ connector_id?: string;
2617
+ /**
2618
+ * Format: date-time
2619
+ * @description When the label was recorded
2620
+ * @example 2026-01-15T09:30:00Z
2621
+ */
2622
+ found_at: string;
2623
+ /**
2624
+ * @description Unique ID for this personal data finding.
2625
+ * @example pii_01jw3k9m2xq8r5v0c7d4e6f2gh
2626
+ */
2627
+ id: string;
2628
+ /**
2629
+ * @description Type of personal data detected, such as email_address or phone_number.
2630
+ * @example email_address
2631
+ */
2632
+ info_type?: string;
2633
+ /**
2634
+ * @description Confidence that the sample contains the indicated data type. More values may be added; clients must tolerate unknown values.
2635
+ * @example likely
2636
+ * @enum {string}
2637
+ */
2638
+ likelihood?: "likelihood_unspecified" | "very_unlikely" | "unlikely" | "possible" | "likely" | "very_likely";
2639
+ /**
2640
+ * @description Sample of the detected value. May contain unmasked personal data.
2641
+ * @example alex@example.com
2642
+ */
2643
+ quote?: string;
2644
+ /**
2645
+ * @description Sensitivity assigned to the detected data type. More values may be added; clients must tolerate unknown values.
2646
+ * @example high
2647
+ * @enum {string}
2648
+ */
2649
+ sensitivity?: "low" | "mid" | "high";
2650
+ /**
2651
+ * @description Where personal data was detected. More values may be added; clients must tolerate unknown values.
2652
+ * @example chat
2653
+ * @enum {string}
2654
+ */
2655
+ source: "chat" | "upload" | "cloud_storage" | "cloud_sql" | "connector";
2656
+ /** @description Database schema, table, and optional column where personal data was detected. */
2657
+ sql_location?: string;
2658
+ /**
2659
+ * @description Review state of the personal data finding. A resolved finding indicates that the flagged content was redacted or removed. More values may be added; clients must tolerate unknown values.
2660
+ * @example open
2661
+ * @enum {string}
2662
+ */
2663
+ status: "open" | "ignored" | "fixed";
2664
+ /** @description Path of the cloud storage object where personal data was detected. */
2665
+ storage_path?: string;
2666
+ };
2667
+ UpdateProjectRequest: {
2616
2668
  /**
2617
2669
  * @description Project description. Does not affect generated_description, which the agent maintains on its own.
2618
2670
  * @example A landing page for my SaaS product with a hero, features, and pricing.
@@ -2624,23 +2676,23 @@ export interface components {
2624
2676
  */
2625
2677
  display_name?: string;
2626
2678
  /**
2627
- * @description Project visibility
2679
+ * @description Controls access to the project in the Lovable editor. Workspace roles and explicit sharing grants determine access. Published app access and open remixing are configured separately. Omit to keep the current setting.
2628
2680
  * @example private
2629
2681
  * @enum {string}
2630
2682
  */
2631
2683
  visibility?: "draft" | "private" | "public" | "workspace_view";
2632
2684
  };
2633
- PublicV1ProjectAnalyticsBody: {
2634
- /** @description Top pages, sources, devices, and countries. Present when series=historical. */
2635
- lists?: components["schemas"]["ListsGroup"];
2636
- /** @description Historical metrics over time. Present when series=historical. */
2685
+ ProjectAnalytics: {
2686
+ /** @description Top pages, referring domains, device types, and countries, with up to 10 items per breakdown. Present for date-range analytics. */
2687
+ lists?: components["schemas"]["AnalyticsBreakdownGroup"];
2688
+ /** @description Metrics over time for date-range analytics. */
2637
2689
  timeSeries?: components["schemas"]["TimeSeriesGroup"];
2638
- /** @description Real-time visitor trend. Present when series=trend. */
2639
- trend?: components["schemas"]["ProjectTrendResponse"];
2690
+ /** @description Visitor counts for the real-time series. */
2691
+ trend?: components["schemas"]["AnalyticsTrend"];
2640
2692
  };
2641
2693
  PublicV1ProjectCreateInputBody: {
2642
2694
  /**
2643
- * @description Project description
2695
+ * @description Description saved on the project. Use initial_message to provide instructions for the AI.
2644
2696
  * @example A landing page for my SaaS product with a hero, features, and pricing.
2645
2697
  */
2646
2698
  description: string;
@@ -2651,42 +2703,39 @@ export interface components {
2651
2703
  display_name?: string;
2652
2704
  /**
2653
2705
  * @deprecated
2654
- * @description Deprecated (ENT-3330): both create-time file fields are slated for removal in favor of a unified attachment mechanism, but this is still the only supported way to attach uploads on create meanwhile. Ephemeral file references returned by POST /v1/files/ephemeral-upload-url; requires initial_message. file_id is the full "ephemeral/{user_id}/{uuid}" path; file_name/mime_type/type are carried through to the promoted file ref so the chat renderer keeps image-vs-file distinction. Copied into the new project's bucket and attached to the initial message after the project is created.
2706
+ * @description Deprecated temporary upload references for existing integrations. Requires initial_message. Public API integrations should use file_urls to attach supported files from HTTPS URLs.
2655
2707
  */
2656
2708
  ephemeral_files?: components["schemas"]["V1UnscopedFile"][] | null;
2657
- /** @description Public HTTPS image or HTML file URLs to fetch server-side and attach to the initial message. Currently supports JPEG, PNG, WebP, and HTML. */
2709
+ /** @description Publicly accessible HTTPS URLs to attach to initial_message, which is required when this field is set. Supports JPEG, PNG, WebP, and HTML files. */
2658
2710
  file_urls?: string[] | null;
2659
2711
  /**
2660
2712
  * @deprecated
2661
- * @description Deprecated (ENT-3330): both create-time file fields are slated for removal in favor of a unified attachment mechanism; use ephemeral_files meanwhile. Pre-uploaded user-scoped file references ("{user_id}/{uuid}/{name}" from the deprecated POST /v1/files/upload-url endpoint), attached in place without copying; requires initial_message.
2713
+ * @description Deprecated upload references for existing integrations. Requires initial_message. Public API integrations should use file_urls to attach supported files from HTTPS URLs.
2662
2714
  */
2663
2715
  files?: components["schemas"]["V1UnscopedFile"][] | null;
2664
2716
  /**
2665
- * @description Initial chat message to send after creation
2717
+ * @description Instructions for the AI to run after the project is created. Omit to create the project without starting an AI response.
2666
2718
  * @example A landing page for my SaaS product with a hero, features, and pricing.
2667
2719
  */
2668
2720
  initial_message?: string;
2669
- /**
2670
- * @description Sandbox runtime template for the new project. Omit for the default stack; requires a workspace with access to the requested template.
2671
- * @example lovable-on-lovable
2672
- */
2721
+ /** @description Optional runtime template for workspaces with access to a specialized runtime. Omit for the standard runtime. */
2673
2722
  sandbox_template?: string;
2674
2723
  /** @description Design system library projects to connect to the new project */
2675
2724
  selected_libraries?: components["schemas"]["V1SelectedLibrary"][] | null;
2676
2725
  /** @description Ignored when null, empty, or whitespace. Set a non-empty value to remix from a source project. */
2677
2726
  source_project_id?: string | null;
2678
2727
  /**
2679
- * @description Technology stack (default: vite)
2728
+ * @description Technology stack for the new project. Omit to use Lovable's current default. When template_project_id is set, the template determines the stack.
2680
2729
  * @example vite
2681
2730
  */
2682
2731
  tech_stack?: string;
2683
2732
  /**
2684
- * @description Template project ID to clone from (from list_template_projects)
2733
+ * @description ID of a template or design-system library project to use as the starting point; any template the caller can view is accepted, including from other workspaces. Use GET /v1/projects with a project-type filter to find templates.
2685
2734
  * @example prj_01jw3k9m2xq8r5v0c7d4e6f2gh
2686
2735
  */
2687
2736
  template_project_id?: string;
2688
2737
  /**
2689
- * @description Project visibility: draft, private, workspace_view, public
2738
+ * @description Controls access to the project in the Lovable editor. Workspace roles and explicit sharing grants determine access. Published app access and open remixing are configured separately. Omit to use the workspace default.
2690
2739
  * @example private
2691
2740
  * @enum {string}
2692
2741
  */
@@ -2703,7 +2752,7 @@ export interface components {
2703
2752
  /** @description Project ID */
2704
2753
  project_id: string;
2705
2754
  };
2706
- PublicV1ProjectListItem: {
2755
+ ProjectSummary: {
2707
2756
  /**
2708
2757
  * Format: date-time
2709
2758
  * @description When the project was created.
@@ -2742,7 +2791,7 @@ export interface components {
2742
2791
  is_published?: boolean;
2743
2792
  /**
2744
2793
  * Format: date-time
2745
- * @description When the project was last edited.
2794
+ * @description When the project last received an edit or a user chat message.
2746
2795
  * @example 2026-01-15T09:30:00Z
2747
2796
  */
2748
2797
  last_edited_at?: string;
@@ -2757,36 +2806,28 @@ export interface components {
2757
2806
  */
2758
2807
  name?: string;
2759
2808
  /**
2760
- * @description Open Graph image URL.
2809
+ * @description Image URL used when sharing a link to the project on social platforms.
2761
2810
  * @example https://lovable.dev/cdn/projects/acme-landing-page/og.png
2762
2811
  */
2763
2812
  og_image_url?: string;
2764
2813
  /**
2765
- * @description Project type. One of: project, library. Absent on older projects. More values may be added; clients must tolerate unknown values.
2814
+ * @description Project type. Absent on older projects. More values may be added; clients must tolerate unknown values.
2766
2815
  * @example project
2816
+ * @enum {string}
2767
2817
  */
2768
- project_type?: string;
2818
+ project_type?: "project" | "library";
2769
2819
  /**
2770
- * @description Published visibility. One of: public, private. More values may be added; clients must tolerate unknown values.
2820
+ * @description Who can access the published app. Separate from editor sharing. More values may be added; clients must tolerate unknown values.
2771
2821
  * @example public
2822
+ * @enum {string}
2772
2823
  */
2773
- publish_visibility?: string;
2824
+ publish_visibility?: "public" | "private" | "workspace_only";
2774
2825
  /**
2775
- * @description Provisioning status of the project, not agent build progress. 'completed' means the project scaffold was created, and is set before the agent has finished the initial message, so the code at that point is often an empty starter page. To check whether the agent finished building, poll GET /v1/messages/{message_id}. One of: in_progress, completed, failed. More values may be added; clients must tolerate unknown values.
2826
+ * @description Project setup status. Successful setup means the project has been created; the AI may still be processing a message and the preview may not be ready. More values may be added; clients must tolerate unknown values.
2776
2827
  * @example completed
2828
+ * @enum {string}
2777
2829
  */
2778
- status?: string;
2779
- /**
2780
- * @description Project tech stack.
2781
- * @example vite_react_shadcn_ts
2782
- */
2783
- tech_stack?: string;
2784
- /**
2785
- * Format: date-time
2786
- * @description When the project was last updated.
2787
- * @example 2026-01-15T09:30:00Z
2788
- */
2789
- updated_at?: string;
2830
+ status?: "in_progress" | "completed" | "failed";
2790
2831
  /**
2791
2832
  * @description Published project URL.
2792
2833
  * @example https://acme-landing-page.lovable.app
@@ -2798,10 +2839,11 @@ export interface components {
2798
2839
  */
2799
2840
  user_id?: string;
2800
2841
  /**
2801
- * @description Project visibility: draft, private, workspace_view, or public.
2842
+ * @description Controls access to the project in the Lovable editor. Workspace roles and explicit sharing grants determine access. Published app access and open remixing are configured separately. More values may be added; clients must tolerate unknown values.
2802
2843
  * @example public
2844
+ * @enum {string}
2803
2845
  */
2804
- visibility?: string;
2846
+ visibility?: "draft" | "private" | "workspace_view" | "public";
2805
2847
  /**
2806
2848
  * @description Workspace the project belongs to.
2807
2849
  * @example workspace_01jw3k9m2xq8r5v0c7d4e6f2gh
@@ -2810,39 +2852,39 @@ export interface components {
2810
2852
  };
2811
2853
  PublicV1ProjectRemixInputBody: {
2812
2854
  /**
2813
- * @description Project description
2855
+ * @description Description for the new project. Omit to reuse the description the source project was created with, or Remix of followed by the source project ID when it had none.
2814
2856
  * @example A landing page for my SaaS product with a hero, features, and pricing.
2815
2857
  */
2816
2858
  description?: string;
2817
2859
  /**
2818
- * @description Human-facing project name
2860
+ * @description Display name for the new project. Defaults to Remix of followed by the source project name.
2819
2861
  * @example Acme Landing Page
2820
2862
  */
2821
2863
  display_name?: string;
2822
2864
  /**
2823
- * @description Whether remix-style creation should copy custom knowledge
2865
+ * @description Copy the source project's custom instructions and knowledge. Defaults to false. Requires edit access to the source project; otherwise the request fails with HTTP 403.
2824
2866
  * @example true
2825
2867
  */
2826
2868
  include_custom_knowledge?: boolean;
2827
- /** @description Copy project Files. Defaults to false. Requires edit access to the original project; view-only access or a public remix link is not enough. Omitted or false skips Files; true returns 403 without edit access. */
2869
+ /** @description Copy uploaded project files in addition to the project code. Defaults to false. Requires edit access to the source project; view-only access or a public remix link is not enough and the request fails with HTTP 403. */
2828
2870
  include_files?: boolean;
2829
2871
  /**
2830
- * @description Copy chat history. Defaults to false. Requires edit access to the original project; view-only access or a public remix link is not enough.
2872
+ * @description Copy chat history. Defaults to false. Requires edit access to the original project; view-only access or a public remix link is not enough and the request fails with HTTP 403.
2831
2873
  * @example true
2832
2874
  */
2833
2875
  include_history?: boolean;
2834
2876
  /**
2835
- * @description Initial chat message to send after remix
2877
+ * @description Instructions for the AI to run after the source project has been copied. When omitted, a default remix message starts an AI response unless skip_initial_remix_message is true.
2836
2878
  * @example A landing page for my SaaS product with a hero, features, and pricing.
2837
2879
  */
2838
2880
  initial_message?: string;
2839
2881
  /**
2840
- * @description Message ID to remix from
2882
+ * @description Message in the source project that sets the version to copy. Use remix_mode to choose before or after that message. Omit to copy the latest version.
2841
2883
  * @example msg_01jw3k9m2xq8r5v0c7d4e6f2gh
2842
2884
  */
2843
2885
  message_id?: string;
2844
2886
  /**
2845
- * @description How to apply message_id: before starts before the message, including includes that message's completed turn. Defaults to including.
2887
+ * @description Whether to include message_id's completed turn in the copy. Includes it by default.
2846
2888
  * @example including
2847
2889
  * @enum {string}
2848
2890
  */
@@ -2853,7 +2895,7 @@ export interface components {
2853
2895
  */
2854
2896
  skip_initial_remix_message?: boolean;
2855
2897
  /**
2856
- * @description Skip remixing integrations
2898
+ * @description Skip copying connected services and their configuration to the new project. Defaults to false.
2857
2899
  * @example false
2858
2900
  */
2859
2901
  skip_integrations?: boolean;
@@ -2868,7 +2910,7 @@ export interface components {
2868
2910
  */
2869
2911
  workspace_id: string;
2870
2912
  };
2871
- PublicV1PublishAudienceTarget: {
2913
+ PublishAudienceTarget: {
2872
2914
  /** @description Group ID or workspace member user ID */
2873
2915
  id: string;
2874
2916
  /**
@@ -2877,55 +2919,148 @@ export interface components {
2877
2919
  */
2878
2920
  type: "group" | "user";
2879
2921
  };
2880
- PublicV1PublishProjectInputBody: {
2881
- /** @description Complete set of group/user grants for visibility 'custom': replaces existing group and user grants, an empty list removes them all, omit to keep the current audience. Grants managed in the UI (org access, email invites) are preserved. Only valid with visibility 'custom'. */
2882
- audience?: components["schemas"]["PublicV1PublishAudienceTarget"][] | null;
2922
+ PublishProjectRequest: {
2923
+ /** @description Audience grants, available only with selected-audience app access. Providing a list replaces all group and user grants and removes workspace-wide access; an empty list removes those grants. Existing organization access and email invitations managed in the UI are preserved. Omit to keep the current audience. */
2924
+ audience?: components["schemas"]["PublishAudienceTarget"][] | null;
2883
2925
  /** @description Project slug for the published URL */
2884
2926
  name?: string;
2885
2927
  /**
2886
- * @description Who can view the published app: public (anyone with the link), workspace (workspace members only), or custom (only the groups/users in audience). Omit to keep the project's current setting. Clients must tolerate new values.
2928
+ * @description Who can view the published app. A selected audience can include existing grants managed in the UI. Omit to keep the current setting. Clients must tolerate new values.
2887
2929
  * @enum {string}
2888
2930
  */
2889
2931
  visibility?: "public" | "workspace" | "custom";
2890
2932
  };
2891
- PublicV1PublishProjectResponse: {
2933
+ PublishProjectResponse: {
2892
2934
  /** @description Deployment ID */
2893
2935
  deployment_id?: string;
2894
- /** @description Deployment status */
2895
- status: string;
2896
- /** @description Published project URL */
2936
+ /**
2937
+ * @description The deployment has been accepted. Poll GET /v1/projects/{project_id}/publish/{deployment_id} for completion or failure. More values may be added; clients must tolerate unknown values.
2938
+ * @enum {string}
2939
+ */
2940
+ status: "pending";
2941
+ /** @description URL where the app will be available after deployment succeeds. */
2897
2942
  url?: string;
2898
- /** @description Resolved visibility of the published app */
2899
- visibility: string;
2943
+ /**
2944
+ * @description Who can view the published app. More values may be added; clients must tolerate unknown values.
2945
+ * @enum {string}
2946
+ */
2947
+ visibility: "public" | "workspace" | "custom";
2900
2948
  };
2901
- PublicV1PublishStatusResponse: {
2949
+ Deployment: {
2902
2950
  /** @description The deployment being tracked */
2903
2951
  deployment_id: string;
2904
- /** @description Failure class when status is error: transient (a retry may succeed) or a user_* class (fix the project before republishing). Clients must tolerate new values. */
2905
- error_class?: string;
2906
- /** @description Machine-readable failure cause when one is recognized. Present only when status is error. */
2952
+ /**
2953
+ * @description Failure category, indicating whether retrying may help or whether the project, configuration, data, or policy needs attention. More values may be added; clients must tolerate unknown values.
2954
+ * @enum {string}
2955
+ */
2956
+ error_class?: "transient" | "user_code" | "user_config" | "user_config_code" | "user_config_external" | "user_data" | "blocked_by_policy" | "internal";
2957
+ /** @description Machine-readable cause of a deployment failure, when recognized. Omitted unless deployment fails. */
2907
2958
  error_code?: string;
2908
- /** @description Human-readable failure reason. Present only when status is error. */
2959
+ /** @description Human-readable reason for a deployment failure. Omitted unless deployment fails. */
2909
2960
  error_message?: string;
2910
2961
  /**
2911
- * @description Deployment status: running (still building or deploying), completed (published url is set), error (failed — error_message explains why), or unknown. Clients must tolerate new values.
2962
+ * @description Deployment progress. After a successful deployment, the app is published and url is set. Clients must tolerate new values.
2912
2963
  * @enum {string}
2913
2964
  */
2914
2965
  status: "running" | "completed" | "error" | "unknown";
2915
- /** @description Published project URL. Set once status is completed. */
2966
+ /** @description Published project URL. Set after a successful deployment. */
2916
2967
  url?: string;
2917
2968
  };
2918
2969
  PublicV1RemixJobOutputBody: {
2919
2970
  /** @description Machine-readable failure cause, present only for recognized failures */
2920
2971
  error_code?: string;
2921
- /** @description Safe failure summary when the remix job fails */
2972
+ /** @description Human-readable explanation if the copy fails. */
2922
2973
  error_message?: string;
2923
- /** @description Remix result, present when completed */
2974
+ /** @description Remix result, present after a successful copy. */
2924
2975
  result?: components["schemas"]["V1RemixProgressResult"];
2925
- /** @description Job status: preparing, running, completed, or error. More values may be added; clients must tolerate unknown values. */
2926
- status: string;
2927
- /** @description Current step details when available */
2928
- step?: components["schemas"]["RemixJobStepInfo"];
2976
+ /**
2977
+ * @description Progress of copying the project. More values may be added; clients must tolerate unknown values.
2978
+ * @enum {string}
2979
+ */
2980
+ status: "preparing" | "running" | "completed" | "error" | "unknown";
2981
+ };
2982
+ SecurityFinding: {
2983
+ /**
2984
+ * @description Finding category.
2985
+ * @example data_exposure
2986
+ */
2987
+ category?: string;
2988
+ /**
2989
+ * Format: date-time
2990
+ * @description When this finding was first recorded, UTC.
2991
+ * @example 2026-01-15T09:30:00Z
2992
+ */
2993
+ created_at: string;
2994
+ /**
2995
+ * @description Human-readable summary of the finding.
2996
+ * @example A public table has row-level security disabled, exposing all rows to anonymous clients.
2997
+ */
2998
+ description?: string;
2999
+ /**
3000
+ * @description Stable identifier for this finding.
3001
+ * @example b2c3d4e5-f6a7-8901-bcde-f23456789012
3002
+ */
3003
+ finding_id: string;
3004
+ /**
3005
+ * @description Severity reported by the scanner. More values may be added; clients must tolerate unknown values.
3006
+ * @example error
3007
+ * @enum {string}
3008
+ */
3009
+ level: "error" | "warn" | "info";
3010
+ /**
3011
+ * @description Short finding title.
3012
+ * @example Row-level security disabled on a public table
3013
+ */
3014
+ name: string;
3015
+ /**
3016
+ * @description Name of the scanner that produced this finding.
3017
+ * @example agent_security
3018
+ */
3019
+ scanner_name: string;
3020
+ /**
3021
+ * @description Review state of the security finding. More values may be added; clients must tolerate unknown values.
3022
+ * @example open
3023
+ * @enum {string}
3024
+ */
3025
+ status: "open" | "fixed" | "ignored";
3026
+ /**
3027
+ * Format: date-time
3028
+ * @description When this finding was last updated, UTC.
3029
+ * @example 2026-01-15T09:30:00Z
3030
+ */
3031
+ updated_at: string;
3032
+ };
3033
+ SecurityScan: {
3034
+ /**
3035
+ * @description Git commit SHA of the project when the scan started. Omitted when unavailable.
3036
+ * @example 9fceb02d0ae598e95dc970b74767f19372d61af8
3037
+ */
3038
+ commit_sha?: string;
3039
+ /**
3040
+ * Format: date-time
3041
+ * @description When the scan finished, UTC; absent while still running.
3042
+ * @example 2026-01-15T09:30:00Z
3043
+ */
3044
+ finished_at?: string;
3045
+ /** @description Identifiers of the security checks requested for this scan. */
3046
+ requested_scanners: string[] | null;
3047
+ /**
3048
+ * @description Unique ID for this security scan.
3049
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
3050
+ */
3051
+ scan_id: string;
3052
+ /**
3053
+ * Format: date-time
3054
+ * @description When the scan started, UTC.
3055
+ * @example 2026-01-15T09:30:00Z
3056
+ */
3057
+ started_at: string;
3058
+ /**
3059
+ * @description Overall scan state. Finishing a scan does not mean that no security issues were found. More values may be added; clients must tolerate unknown values.
3060
+ * @example completed
3061
+ * @enum {string}
3062
+ */
3063
+ status: "running" | "completed" | "failed";
2929
3064
  };
2930
3065
  PublicV1SendMessageInputBody: {
2931
3066
  /**
@@ -2961,26 +3096,29 @@ export interface components {
2961
3096
  /** @description Project ID */
2962
3097
  project_id: string;
2963
3098
  };
2964
- PublicV1UpdatePublishSettingsInputBody: {
2965
- /** @description Complete set of group/user grants for visibility 'custom': replaces existing group and user grants, an empty list removes them all, omit to keep the current audience. Grants managed in the UI (org access, email invites) are preserved. Only valid with visibility 'custom'. */
2966
- audience?: components["schemas"]["PublicV1PublishAudienceTarget"][] | null;
3099
+ UpdatePublishSettingsRequest: {
3100
+ /** @description Audience grants, available only with selected-audience app access. Providing a list replaces all group and user grants and removes workspace-wide access; an empty list removes those grants. Existing organization access and email invitations managed in the UI are preserved. Omit to keep the current audience. */
3101
+ audience?: components["schemas"]["PublishAudienceTarget"][] | null;
2967
3102
  /** @description Set to false to take the published app offline; visibility and audience settings are kept and apply again on the next publish. true is rejected: publishing requires a deploy via POST /v1/projects/{project_id}/publish. */
2968
3103
  is_published?: boolean;
2969
3104
  /**
2970
- * @description Who can view the published app: public (anyone with the link), workspace (workspace members only), or custom (only the groups/users in audience). Omit to leave visibility unchanged. Clients must tolerate new values.
3105
+ * @description Who can view the published app. A selected audience can include existing grants managed in the UI. Omit to leave visibility unchanged. Clients must tolerate new values.
2971
3106
  * @enum {string}
2972
3107
  */
2973
3108
  visibility?: "public" | "workspace" | "custom";
2974
3109
  };
2975
- PublicV1UpdatePublishSettingsResponse: {
3110
+ PublishSettings: {
2976
3111
  /** @description Whether the project is currently published */
2977
3112
  is_published: boolean;
2978
- /** @description Published project URL */
3113
+ /** @description Published app URL. Omitted when is_published is false. */
2979
3114
  url?: string;
2980
- /** @description Resolved visibility of the published app */
2981
- visibility: string;
3115
+ /**
3116
+ * @description Who can view the published app. More values may be added; clients must tolerate unknown values.
3117
+ * @enum {string}
3118
+ */
3119
+ visibility: "public" | "workspace" | "custom";
2982
3120
  };
2983
- PublicV1Workspace: {
3121
+ Workspace: {
2984
3122
  /**
2985
3123
  * Format: date-time
2986
3124
  * @description When the workspace was created.
@@ -3014,10 +3152,11 @@ export interface components {
3014
3152
  */
3015
3153
  num_projects: number;
3016
3154
  /**
3017
- * @description Plan tier. One of: free, pro, business, enterprise. More values may be added; clients must tolerate unknown values.
3155
+ * @description Plan tier. More values may be added; clients must tolerate unknown values.
3018
3156
  * @example pro
3157
+ * @enum {string}
3019
3158
  */
3020
- plan: string;
3159
+ plan: "free" | "pro" | "business" | "enterprise";
3021
3160
  /**
3022
3161
  * Format: date-time
3023
3162
  * @description When the workspace was last updated.
@@ -3025,7 +3164,7 @@ export interface components {
3025
3164
  */
3026
3165
  updated_at?: string;
3027
3166
  };
3028
- PublicV1WorkspaceMember: {
3167
+ WorkspaceMembership: {
3029
3168
  /**
3030
3169
  * Format: date-time
3031
3170
  * @description When the caller joined the workspace.
@@ -3033,17 +3172,18 @@ export interface components {
3033
3172
  */
3034
3173
  joined_at?: string;
3035
3174
  /**
3036
- * @description Caller's role in the workspace. One of: owner, admin, member, viewer, collaborator. More values may be added; clients must tolerate unknown values.
3175
+ * @description Caller's role in the workspace. More values may be added; clients must tolerate unknown values.
3037
3176
  * @example admin
3177
+ * @enum {string}
3038
3178
  */
3039
- role: string;
3179
+ role: "owner" | "admin" | "member" | "viewer" | "collaborator";
3040
3180
  /**
3041
3181
  * @description Caller's user ID.
3042
3182
  * @example Xy7Kd2Lm9Qp4Rt6Vw8Zc1Bn3Fh5
3043
3183
  */
3044
3184
  user_id: string;
3045
3185
  };
3046
- PublicV1WorkspaceWithMembership: {
3186
+ WorkspaceWithMembership: {
3047
3187
  /**
3048
3188
  * Format: date-time
3049
3189
  * @description When the workspace was created.
@@ -3066,7 +3206,7 @@ export interface components {
3066
3206
  */
3067
3207
  image_url?: string;
3068
3208
  /** @description Caller's membership in this workspace. */
3069
- membership?: components["schemas"]["PublicV1WorkspaceMember"];
3209
+ membership?: components["schemas"]["WorkspaceMembership"];
3070
3210
  /**
3071
3211
  * @description Workspace display name.
3072
3212
  * @example Acme Inc
@@ -3079,10 +3219,11 @@ export interface components {
3079
3219
  */
3080
3220
  num_projects: number;
3081
3221
  /**
3082
- * @description Plan tier. One of: free, pro, business, enterprise. More values may be added; clients must tolerate unknown values.
3222
+ * @description Plan tier. More values may be added; clients must tolerate unknown values.
3083
3223
  * @example pro
3224
+ * @enum {string}
3084
3225
  */
3085
- plan: string;
3226
+ plan: "free" | "pro" | "business" | "enterprise";
3086
3227
  /**
3087
3228
  * Format: date-time
3088
3229
  * @description When the workspace was last updated.
@@ -3091,21 +3232,40 @@ export interface components {
3091
3232
  updated_at?: string;
3092
3233
  };
3093
3234
  RemixJobFailure: {
3235
+ /** @description Machine-readable failure code when the cause is recognized. Omitted for unclassified failures. */
3094
3236
  code?: string;
3095
- failed_step: string;
3237
+ /**
3238
+ * @description Stage of copying the project that failed. More values may be added; clients must tolerate unknown values.
3239
+ * @enum {string}
3240
+ */
3241
+ failed_step: "starting" | "creating_new_project" | "restoring_supabase" | "copying_history" | "preparing_repository" | "remixing_integration" | "pushing_repository" | "finalizing" | "completed" | "failed";
3242
+ /** @description Human-readable explanation of why this step failed. */
3096
3243
  message: string;
3097
3244
  };
3098
3245
  RemixJobStepInfo: {
3246
+ /** @description Details of a failed step, when available. */
3099
3247
  failure?: components["schemas"]["RemixJobFailure"];
3248
+ /** @description Connected service being copied, when the current step relates to an integration. */
3100
3249
  integration_name?: string;
3250
+ /** @description Progress detail reported by the connected service. Values vary by integration and are separate from the overall job status. */
3101
3251
  status?: string;
3102
- step: string;
3252
+ /**
3253
+ * @description Current stage of copying the project, such as preparing its code or copying connected services. More values may be added; clients must tolerate unknown values.
3254
+ * @enum {string}
3255
+ */
3256
+ step: "starting" | "creating_new_project" | "restoring_supabase" | "copying_history" | "preparing_repository" | "remixing_integration" | "pushing_repository" | "finalizing" | "completed" | "failed";
3103
3257
  };
3104
3258
  RemixWarning: {
3105
- /** @enum {string} */
3259
+ /**
3260
+ * @description Category of a non-fatal issue encountered while copying the project. More values may be added; clients must tolerate unknown values.
3261
+ * @enum {string}
3262
+ */
3106
3263
  code: "edge_functions_not_deployed" | "integration_skipped";
3264
+ /** @description Names of backend functions that could not be deployed in the new project. */
3107
3265
  failed_edge_functions?: string[] | null;
3266
+ /** @description Human-readable explanation of why the connected service was not copied. */
3108
3267
  reason?: string;
3268
+ /** @description Connected service that was not copied, when applicable. */
3109
3269
  skipped_integration?: string;
3110
3270
  };
3111
3271
  SeamlessConnectorAPI: {
@@ -3208,6 +3368,7 @@ export interface components {
3208
3368
  SearchWorkspaceProjectsResponse: {
3209
3369
  has_more: boolean;
3210
3370
  projects: components["schemas"]["SearchProjectItem"][] | null;
3371
+ title_search?: boolean;
3211
3372
  /** Format: int64 */
3212
3373
  total: number;
3213
3374
  };
@@ -3216,6 +3377,8 @@ export interface components {
3216
3377
  reason: string;
3217
3378
  };
3218
3379
  StandardConnectorAPI: {
3380
+ /** @description True when this workspace can publish apps into the connector's platform (the connect card then offers that choice) */
3381
+ can_deploy_apps: boolean;
3219
3382
  /** @description True when the workspace plan allows restricting connection creation to admins (Business and Enterprise) */
3220
3383
  can_restrict_to_admins: boolean;
3221
3384
  /** @description Connector categories (empty array when none) */
@@ -3286,7 +3449,7 @@ export interface components {
3286
3449
  updated_at: string;
3287
3450
  };
3288
3451
  TimeSeriesData: {
3289
- /** @description Per-bucket values ordered by date, one entry per bucket in the range (bucket size set by the granularity parameter). */
3452
+ /** @description Values ordered by bucket start time. Bucket size is set by granularity; future buckets are omitted. */
3290
3453
  data: components["schemas"]["TimeSeriesDataPoint"][] | null;
3291
3454
  /**
3292
3455
  * @description Metric identifier, e.g. "sessionDuration".
@@ -3295,7 +3458,7 @@ export interface components {
3295
3458
  label: string;
3296
3459
  /**
3297
3460
  * Format: double
3298
- * @description Period-level aggregate for this metric over the requested range. How it is computed (sum, ratio, or average) and its unit depend on the metric — see the metric field's description.
3461
+ * @description Aggregate over the requested range. The unit and calculation (sum, ratio, or average) are defined by the parent metric.
3299
3462
  * @example 1280
3300
3463
  */
3301
3464
  total: number;
@@ -3308,7 +3471,7 @@ export interface components {
3308
3471
  date: string;
3309
3472
  /**
3310
3473
  * Format: double
3311
- * @description Metric value for this bucket. Unit matches the parent metric see its description.
3474
+ * @description Metric value for this bucket, in the unit defined by the parent metric.
3312
3475
  * @example 1280
3313
3476
  */
3314
3477
  value: number;
@@ -3322,7 +3485,7 @@ export interface components {
3322
3485
  pageviewsPerVisit: components["schemas"]["TimeSeriesData"];
3323
3486
  /** @description Average session duration in seconds. Each data point is the mean session length for that bucket; total is the mean of the per-bucket values across buckets that had at least one visitor, rounded to whole seconds (it is not a sum). */
3324
3487
  sessionDuration: components["schemas"]["TimeSeriesData"];
3325
- /** @description Unique visitors. Each data point is that bucket's visitor count; total is the sum over the requested range. */
3488
+ /** @description Visitor sessions, counted once per time bucket. total sums the bucket counts, so a session active in multiple buckets is counted more than once. */
3326
3489
  visitors: components["schemas"]["TimeSeriesData"];
3327
3490
  };
3328
3491
  ToolDisplayData: {
@@ -3341,7 +3504,7 @@ export interface components {
3341
3504
  time: string;
3342
3505
  /**
3343
3506
  * Format: int64
3344
- * @description Number of visits recorded in this bucket.
3507
+ * @description Unique visitor sessions with a page view in this minute. A session can appear in multiple buckets.
3345
3508
  * @example 42
3346
3509
  */
3347
3510
  visits: number;
@@ -3359,6 +3522,11 @@ export interface components {
3359
3522
  awaiting_input?: components["schemas"]["V1AwaitingInputSummary"];
3360
3523
  /** @description Git commit SHA for this change */
3361
3524
  commit_sha?: string;
3525
+ /**
3526
+ * @description How the turn ended; only present once the turn has ended. Refines status: max_iterations means the agent hit its iteration cap and closed the turn with work possibly incomplete (status completed); policy_violation means safety validation blocked the turn before any model call (status completed). New values may be added; clients must tolerate unknown values by falling back to status
3527
+ * @enum {string}
3528
+ */
3529
+ completion_reason?: "finished" | "stopped" | "error" | "policy_violation" | "max_iterations";
3362
3530
  /** @description AI response text */
3363
3531
  content: string;
3364
3532
  /**
@@ -3423,34 +3591,14 @@ export interface components {
3423
3591
  event_id: string;
3424
3592
  /** @description UserInputBlock[] schema for tools that require structured user input */
3425
3593
  input_schema?: unknown;
3594
+ /** @description Validated JSON parameters of the tool call awaiting approval, as the Lovable editor shows them on the approval card. Absent when the call never reached parameter validation. */
3595
+ params?: unknown;
3426
3596
  /** @description Suspended AI message ID to pass back as prev_session_id when resuming */
3427
3597
  prev_session_id?: string;
3598
+ /** @description Stable identifier of the tool awaiting approval, e.g. app_user_connector--provision_app. Omitted when the tool call carries no stable tool id. */
3599
+ tool_id?: string;
3428
3600
  };
3429
- V1BillingBulkSetMemberCreditLimitInputBody: {
3430
- /** @description Per-member limits to apply (1-1000 entries). Use the workspace default (PATCH /v1/workspaces/{workspace_id}/settings) to cap everyone at once. */
3431
- members: components["schemas"]["V1BulkMemberCreditLimitItem"][];
3432
- };
3433
- V1BillingCreditLimitRow: {
3434
- /**
3435
- * Format: double
3436
- * @description Explicit monthly credit cap for this member. Absent means no per-member cap is set and the member inherits the workspace default.
3437
- */
3438
- monthly_credit_limit?: number;
3439
- /** @description Member the cap applies to. Join GET /v1/workspaces/{workspace_id}/members for display metadata. */
3440
- user_id: string;
3441
- };
3442
- V1BillingCreditLimitsBody: {
3443
- /** @description Items in this page. */
3444
- data: components["schemas"]["V1BillingCreditLimitRow"][] | null;
3445
- /**
3446
- * Format: double
3447
- * @description Workspace default cap applied to members without an explicit per-member limit. Absent when unset (members are bounded only by the workspace balance).
3448
- */
3449
- default_monthly_credit_limit?: number;
3450
- /** @description Pagination cursors for fetching adjacent pages. */
3451
- pagination: components["schemas"]["Pagination"];
3452
- };
3453
- V1BillingPeriod: {
3601
+ BillingPeriod: {
3454
3602
  /**
3455
3603
  * Format: date-time
3456
3604
  * @description Exclusive end of the period these credit figures cover (RFC3339, UTC).
@@ -3464,49 +3612,53 @@ export interface components {
3464
3612
  */
3465
3613
  start: string;
3466
3614
  };
3467
- V1BillingUsageBody: {
3615
+ CreditUsagePage: {
3468
3616
  /** @description Items in this page. */
3469
- data: components["schemas"]["V1BillingUsageRow"][] | null;
3617
+ data: components["schemas"]["CreditUsageEntry"][] | null;
3470
3618
  /**
3471
3619
  * Format: int64
3472
3620
  * @description Number of grouped entities across all pages; group_by queries only.
3473
3621
  * @example 12
3474
3622
  */
3475
3623
  entity_count?: number;
3476
- /** @description Pagination cursors for fetching adjacent pages. */
3624
+ /** @description Whether more results are available and the cursor to fetch the next page. */
3477
3625
  pagination: components["schemas"]["Pagination"];
3478
- /** @description The resolved window these rows cover, echoed so callers can see what the server applied. */
3479
- period: components["schemas"]["V1BillingUsagePeriod"];
3626
+ /** @description Date window and grouping applied to this response. */
3627
+ period: components["schemas"]["CreditUsagePeriod"];
3480
3628
  /**
3481
3629
  * Format: double
3482
- * @description Total matching credits across the whole window same on every page, not just this page's rows.
3630
+ * @description Total matching credits across the requested window and all pages. Includes usage without a member or project attribution, which is omitted from grouped rows.
3483
3631
  * @example 500
3484
3632
  */
3485
3633
  workspace_total: number;
3486
3634
  };
3487
- V1BillingUsagePeriod: {
3635
+ CreditUsagePeriod: {
3488
3636
  /**
3489
3637
  * @description Inclusive end of the covered window (YYYY-MM-DD, UTC).
3490
3638
  * @example 2026-01-31
3491
3639
  */
3492
3640
  end: string;
3493
3641
  /**
3494
- * @description Grouping dimension the rows use; group_by queries only.
3642
+ * @description Grouping dimension the rows use; group_by queries only. More values may be added; clients must tolerate unknown values.
3495
3643
  * @example member
3644
+ * @enum {string}
3496
3645
  */
3497
- group_by?: string;
3498
- /** @description Bucket size the rows use; interval queries only. */
3499
- interval?: string;
3646
+ group_by?: "member" | "project";
3647
+ /**
3648
+ * @description Bucket size the rows use; interval queries only. More values may be added; clients must tolerate unknown values.
3649
+ * @enum {string}
3650
+ */
3651
+ interval?: "day" | "week" | "month";
3500
3652
  /**
3501
3653
  * @description Inclusive start of the covered window (YYYY-MM-DD, UTC).
3502
3654
  * @example 2026-01-01
3503
3655
  */
3504
3656
  start: string;
3505
3657
  };
3506
- V1BillingUsageRow: {
3658
+ CreditUsageEntry: {
3507
3659
  /**
3508
3660
  * Format: double
3509
- * @description Build-time credits.
3661
+ * @description Credits used to create, edit, or plan apps in Lovable.
3510
3662
  * @example 120
3511
3663
  */
3512
3664
  build: number;
@@ -3517,7 +3669,7 @@ export interface components {
3517
3669
  */
3518
3670
  connectors: number;
3519
3671
  /** @description Per-connector breakdown. Interval buckets only. */
3520
- connectors_breakdown?: components["schemas"]["V1WorkspaceUsageConnectorBreakdown"][] | null;
3672
+ connectors_breakdown?: components["schemas"]["ConnectorUsage"][] | null;
3521
3673
  /**
3522
3674
  * Format: double
3523
3675
  * @description Database credits.
@@ -3525,14 +3677,14 @@ export interface components {
3525
3677
  */
3526
3678
  database: number;
3527
3679
  /** @description Database server/storage breakdown. Interval buckets only. */
3528
- database_breakdown?: components["schemas"]["V1WorkspaceUsageDatabaseBreakdown"][] | null;
3680
+ database_breakdown?: components["schemas"]["DatabaseUsage"][] | null;
3529
3681
  /**
3530
- * @description Member display name. Present on member-attributed rows (group_by=member, or a query filtered to one user_id).
3682
+ * @description Member display name, when available. Included only when grouping by workspace membership, or for ungrouped results filtered to one user_id.
3531
3683
  * @example Jane Cooper
3532
3684
  */
3533
3685
  display_name?: string;
3534
3686
  /**
3535
- * @description Member email as stored on the workspace membership (not the user's primary/personal email). Present on member-attributed rows.
3687
+ * @description Member email address in this workspace, when available. Included only when grouping by workspace membership, or for ungrouped results filtered to one user_id.
3536
3688
  * @example jane.cooper@acme.com
3537
3689
  */
3538
3690
  email?: string;
@@ -3544,12 +3696,12 @@ export interface components {
3544
3696
  functions: number;
3545
3697
  /**
3546
3698
  * Format: double
3547
- * @description AI Gateway credits.
3699
+ * @description Credits used for AI model requests made by apps through Lovable AI.
3548
3700
  * @example 200
3549
3701
  */
3550
3702
  gateway: number;
3551
- /** @description Per-model AI Gateway breakdown. Interval buckets only. */
3552
- gateway_models?: components["schemas"]["V1WorkspaceUsageGatewayModel"][] | null;
3703
+ /** @description Up to three AI models with the highest credit usage in this time bucket, ordered by credits descending. Their sum may be less than gateway. Included only for interval queries. */
3704
+ gateway_models?: components["schemas"]["GatewayModelUsage"][] | null;
3553
3705
  /**
3554
3706
  * Format: double
3555
3707
  * @description Network data-transfer credits.
@@ -3560,17 +3712,17 @@ export interface components {
3560
3712
  period_end?: string;
3561
3713
  /** @description Inclusive row start (YYYY-MM-DD, UTC). Present on interval buckets and the aggregate row. */
3562
3714
  period_start?: string;
3563
- /** @description Project this row aggregates (group_by=project). Join /v1/projects for the name. */
3715
+ /** @description Project ID when grouping usage by project. Use GET /v1/projects/{project_id} for project details. */
3564
3716
  project_id?: string;
3565
3717
  /**
3566
3718
  * Format: double
3567
- * @description Realtime credits.
3719
+ * @description Credits used for realtime app updates and subscriptions.
3568
3720
  * @example 40
3569
3721
  */
3570
3722
  realtime: number;
3571
3723
  /**
3572
3724
  * Format: double
3573
- * @description Run-time credits (sum of the per-category fields below).
3725
+ * @description Credits used by app services, equal to the sum of gateway, realtime, functions, storage, database, network, and connectors.
3574
3726
  * @example 380
3575
3727
  */
3576
3728
  run: number;
@@ -3582,22 +3734,27 @@ export interface components {
3582
3734
  storage: number;
3583
3735
  /**
3584
3736
  * Format: double
3585
- * @description Total credits in this row.
3737
+ * @description Total Lovable credits used in this row, equal to build plus run.
3586
3738
  * @example 500
3587
3739
  */
3588
3740
  total: number;
3589
3741
  /**
3590
- * @description Member this row aggregates (group_by=member) or is filtered to (user_id).
3742
+ * @description Member whose usage this row summarizes. Present when grouping by workspace membership or filtering to one user_id.
3591
3743
  * @example Xy7Kd2Lm9Qp4Rt6Vw8Zc1Bn3Fh5
3592
3744
  */
3593
3745
  user_id?: string;
3594
3746
  };
3595
3747
  V1BulkMemberCreditLimitItem: {
3748
+ /**
3749
+ * @description How long the limit applies. Omit for an ongoing limit. Temporary increases must exceed an existing effective limit and expire at the end of the current UTC calendar month. Temporary increases must be supported by the workspace.
3750
+ * @enum {string}
3751
+ */
3752
+ duration?: "permanent" | "current_period";
3596
3753
  /** @description Member's workspace email (case-insensitive; the address on the workspace membership, not the user's personal email). Provide exactly one of user_id or email. */
3597
3754
  email?: string;
3598
3755
  /**
3599
3756
  * Format: double
3600
- * @description A number (0 blocks all spend) to set the cap, or null to clear it (the member inherits the workspace default).
3757
+ * @description Monthly build-credit limit, as a nonnegative number of Lovable credits. Zero sets a zero-credit limit. With permanent duration, null clears the explicit limit so the workspace default applies. An active higher temporary limit can still apply.
3601
3758
  * @example 500
3602
3759
  */
3603
3760
  monthly_credit_limit: number | null;
@@ -3608,18 +3765,29 @@ export interface components {
3608
3765
  user_id?: string;
3609
3766
  };
3610
3767
  V1BulkMemberCreditLimitResult: {
3768
+ /**
3769
+ * Format: date-time
3770
+ * @description When a current-period limit expires. Omitted for permanent updates.
3771
+ */
3772
+ approved_until?: string;
3773
+ /**
3774
+ * @description Duration of a temporary-limit update. Omitted for ongoing-limit updates. More values may be added; clients must tolerate unknown values.
3775
+ * @enum {string}
3776
+ */
3777
+ duration?: "current_period";
3611
3778
  /** @description Echoed when the item was addressed by email, so email-addressed results stay correlatable. */
3612
3779
  email?: string;
3613
3780
  /**
3614
- * @description Failure reason when status is error.
3781
+ * @description Reason the member update did not succeed.
3615
3782
  * @example member not found
3616
3783
  */
3617
3784
  error?: string;
3618
3785
  /**
3619
- * @description success or error.
3786
+ * @description Outcome of this member update. More values may be added; clients must tolerate unknown values.
3620
3787
  * @example error
3788
+ * @enum {string}
3621
3789
  */
3622
- status: string;
3790
+ status: "success" | "error";
3623
3791
  /**
3624
3792
  * @description The member this result is for (resolved from email when the item was addressed by email).
3625
3793
  * @example Xy7Kd2Lm9Qp4Rt6Vw8Zc1Bn3Fh5
@@ -3684,16 +3852,16 @@ export interface components {
3684
3852
  /** @description MCP server URL */
3685
3853
  url?: string;
3686
3854
  };
3687
- V1CreateEmbedURLInputBody: {
3855
+ CreateEmbedURLRequest: {
3688
3856
  /**
3689
- * @description Exact HTTPS origin (scheme + host, no path) allowed to frame the static preview. The minted token only loads inside a frame served from this origin.
3857
+ * @description HTTPS origin allowed to embed the preview, using a lowercase hostname with no port, trailing slash, path, query, or fragment. The preview URL only loads in an iframe on this origin.
3690
3858
  * @example https://acme.com
3691
3859
  */
3692
3860
  parent_origin: string;
3693
3861
  };
3694
- V1CreateEmbedURLOutputBody: {
3862
+ CreateEmbedURLResponse: {
3695
3863
  /**
3696
- * @description Origin-bound static-preview URL carrying a short-lived signed token (?__lovable_token=…). Load it in an iframe on the requested parent_origin.
3864
+ * @description Preview URL for an iframe on parent_origin. It allows visitors to view the built preview without a Lovable login until expires_at.
3697
3865
  * @example https://acme-landing-page.lovable.app/?__lovable_token=eyJhbGciOiJIUzI1NiJ9
3698
3866
  */
3699
3867
  embed_url: string;
@@ -3711,14 +3879,14 @@ export interface components {
3711
3879
  display_name?: string;
3712
3880
  /**
3713
3881
  * @deprecated
3714
- * @description Deprecated (ENT-3330): both create-time file fields are slated for removal in favor of a unified attachment mechanism, but this is still the only supported way to attach uploads on create meanwhile. Ephemeral file references returned by POST /v1/files/ephemeral-upload-url; requires initial_message. file_id is the full "ephemeral/{user_id}/{uuid}" path; file_name/mime_type/type are carried through to the promoted file ref so the chat renderer keeps image-vs-file distinction. Copied into the new project's bucket and attached to the initial message after the project is created.
3882
+ * @description Deprecated: create-time file attachment is slated for replacement by a unified attachment mechanism, but this is still the only supported way to attach uploads on create meanwhile. Ephemeral file references for files staged before the project exists; requires initial_message. file_id is the full "ephemeral/{user_id}/{uuid}" path; file_name/mime_type/type are carried through to the promoted file ref so the image-vs-file distinction is kept. Copied into the new project's bucket and attached to the initial message after the project is created.
3715
3883
  */
3716
3884
  ephemeral_files?: components["schemas"]["V1UnscopedFile"][] | null;
3717
3885
  /** @description Public HTTPS image or HTML file URLs to fetch server-side and attach to the initial message. Currently supports JPEG, PNG, WebP, and HTML. */
3718
3886
  file_urls?: string[] | null;
3719
3887
  /**
3720
3888
  * @deprecated
3721
- * @description Deprecated (ENT-3330): both create-time file fields are slated for removal in favor of a unified attachment mechanism; use ephemeral_files meanwhile. Pre-uploaded user-scoped file references ("{user_id}/{uuid}/{name}" from the deprecated POST /v1/files/upload-url endpoint), attached in place without copying; requires initial_message.
3889
+ * @description Deprecated: create-time file attachment is slated for replacement by a unified attachment mechanism; use ephemeral_files meanwhile. Pre-uploaded user-scoped file references ("{user_id}/{uuid}/{name}"), attached in place without copying; requires initial_message.
3722
3890
  */
3723
3891
  files?: components["schemas"]["V1UnscopedFile"][] | null;
3724
3892
  /** @description Initial chat message to send after creation */
@@ -3776,7 +3944,7 @@ export interface components {
3776
3944
  is_published?: boolean;
3777
3945
  /**
3778
3946
  * Format: date-time
3779
- * @description When the project was last edited.
3947
+ * @description When the project last received an edit or a user chat message.
3780
3948
  * @example 2026-01-15T09:30:00Z
3781
3949
  */
3782
3950
  last_edited_at?: string;
@@ -3798,7 +3966,7 @@ export interface components {
3798
3966
  */
3799
3967
  name?: string;
3800
3968
  /**
3801
- * @description Open Graph image URL.
3969
+ * @description Image URL used when sharing a link to the project on social platforms.
3802
3970
  * @example https://lovable.dev/cdn/projects/acme-landing-page/og.png
3803
3971
  */
3804
3972
  og_image_url?: string;
@@ -3808,31 +3976,23 @@ export interface components {
3808
3976
  */
3809
3977
  preview_url?: string;
3810
3978
  /**
3811
- * @description Project type. One of: project, library. Absent on older projects. More values may be added; clients must tolerate unknown values.
3979
+ * @description Project type. Absent on older projects. More values may be added; clients must tolerate unknown values.
3812
3980
  * @example project
3981
+ * @enum {string}
3813
3982
  */
3814
- project_type?: string;
3983
+ project_type?: "project" | "library";
3815
3984
  /**
3816
- * @description Published visibility. One of: public, private. More values may be added; clients must tolerate unknown values.
3985
+ * @description Who can access the published app. Separate from editor sharing. More values may be added; clients must tolerate unknown values.
3817
3986
  * @example public
3987
+ * @enum {string}
3818
3988
  */
3819
- publish_visibility?: string;
3989
+ publish_visibility?: "public" | "private" | "workspace_only";
3820
3990
  /**
3821
- * @description Provisioning status of the project, not agent build progress. 'completed' means the project scaffold was created, and is set before the agent has finished the initial message, so the code at that point is often an empty starter page. To check whether the agent finished building, poll GET /v1/messages/{message_id}. One of: in_progress, completed, failed. More values may be added; clients must tolerate unknown values.
3991
+ * @description Project setup status. Successful setup means the project has been created; the AI may still be processing a message and the preview may not be ready. More values may be added; clients must tolerate unknown values.
3822
3992
  * @example completed
3993
+ * @enum {string}
3823
3994
  */
3824
- status?: string;
3825
- /**
3826
- * @description Project tech stack.
3827
- * @example vite_react_shadcn_ts
3828
- */
3829
- tech_stack?: string;
3830
- /**
3831
- * Format: date-time
3832
- * @description When the project was last updated.
3833
- * @example 2026-01-15T09:30:00Z
3834
- */
3835
- updated_at?: string;
3995
+ status?: "in_progress" | "completed" | "failed";
3836
3996
  /**
3837
3997
  * @description Published project URL.
3838
3998
  * @example https://acme-landing-page.lovable.app
@@ -3844,10 +4004,11 @@ export interface components {
3844
4004
  */
3845
4005
  user_id?: string;
3846
4006
  /**
3847
- * @description Project visibility: draft, private, workspace_view, or public.
4007
+ * @description Controls access to the project in the Lovable editor. Workspace roles and explicit sharing grants determine access. Published app access and open remixing are configured separately. More values may be added; clients must tolerate unknown values.
3848
4008
  * @example public
4009
+ * @enum {string}
3849
4010
  */
3850
- visibility?: string;
4011
+ visibility?: "draft" | "private" | "workspace_view" | "public";
3851
4012
  /**
3852
4013
  * @description Workspace the project belongs to.
3853
4014
  * @example workspace_01jw3k9m2xq8r5v0c7d4e6f2gh
@@ -3870,7 +4031,12 @@ export interface components {
3870
4031
  /** @description The variant's identifier */
3871
4032
  variant_id: string;
3872
4033
  };
3873
- V1CreditHistoryEntry: {
4034
+ CreditHistoryEntry: {
4035
+ /**
4036
+ * @description ID linking entries for the same credit allocation. A granted entry followed by an offsetting adjustment means the remaining credits were removed early, for example after a plan change or refund. Usage deductions are not included in this history, so summing these entries does not give the remaining balance.
4037
+ * @example 01jw3k9m2xq8r5v0c7d4e6f2aa
4038
+ */
4039
+ credit_grant_id: string;
3874
4040
  /**
3875
4041
  * Format: double
3876
4042
  * @description Signed change in Lovable credits: positive for grants, negative for expiries and debits.
@@ -3878,13 +4044,13 @@ export interface components {
3878
4044
  */
3879
4045
  credits_change: number;
3880
4046
  /**
3881
- * @description What happened to the credits.
4047
+ * @description How this event changed the credit balance. Early removal can reflect a plan change or refund replacing or revoking an earlier grant. Legacy balances may also be re-denominated.
3882
4048
  * @example granted
3883
4049
  * @enum {string}
3884
4050
  */
3885
4051
  event_type: "granted" | "expired" | "adjustment" | "converted";
3886
4052
  /**
3887
- * @description Credit bucket this entry affected.
4053
+ * @description Source of the credits affected. More values may be added; clients must tolerate unknown values.
3888
4054
  * @example billing
3889
4055
  * @enum {string}
3890
4056
  */
@@ -3983,11 +4149,11 @@ export interface components {
3983
4149
  has_more: boolean;
3984
4150
  };
3985
4151
  V1GetSecurityScanOutputBody: {
3986
- /** @description Security findings captured in this scan. */
4152
+ /** @description Findings in this scan snapshot, including results reused from earlier scans and findings marked fixed or ignored. */
3987
4153
  findings: components["schemas"]["V1SecurityFinding"][] | null;
3988
- /** @description Scan invocation summary. */
4154
+ /** @description Status, initiator, and timing of the security scan. */
3989
4155
  scan: components["schemas"]["V1SecurityScanSummary"];
3990
- /** @description Per-scanner execution records for this scan. */
4156
+ /** @description Execution results for individual security checks. Results may be reused from an earlier scan. */
3991
4157
  scanner_runs: components["schemas"]["V1SecurityScannerRun"][] | null;
3992
4158
  };
3993
4159
  V1GetWorkspaceSkillOutputBody: {
@@ -4107,9 +4273,9 @@ export interface components {
4107
4273
  */
4108
4274
  total: number;
4109
4275
  };
4110
- V1ListWorkspacesBody: {
4276
+ WorkspacePage: {
4111
4277
  /** @description Workspaces the user is a member of */
4112
- data: components["schemas"]["PublicV1WorkspaceWithMembership"][] | null;
4278
+ data: components["schemas"]["WorkspaceWithMembership"][] | null;
4113
4279
  /** @description Pagination metadata */
4114
4280
  pagination: components["schemas"]["Pagination"];
4115
4281
  };
@@ -4138,6 +4304,11 @@ export interface components {
4138
4304
  awaiting_input?: components["schemas"]["V1AwaitingInputSummary"];
4139
4305
  /** @description Git commit SHA for this change */
4140
4306
  commit_sha?: string;
4307
+ /**
4308
+ * @description How the assistant turn ended; only present for assistant messages once the turn has ended. Refines status: max_iterations means the agent hit its iteration cap and closed the turn with work possibly incomplete (status completed); policy_violation means safety validation blocked the turn before any model call (status completed). New values may be added; clients must tolerate unknown values by falling back to status
4309
+ * @enum {string}
4310
+ */
4311
+ completion_reason?: "finished" | "stopped" | "error" | "policy_violation" | "max_iterations";
4141
4312
  /** @description Message text content */
4142
4313
  content: string;
4143
4314
  /**
@@ -4175,50 +4346,56 @@ export interface components {
4175
4346
  /** @description Project IDs to move into the folder */
4176
4347
  project_ids: string[] | null;
4177
4348
  };
4178
- V1ProjectCollaborator: {
4349
+ ProjectCollaborator: {
4179
4350
  /**
4180
4351
  * Format: date-time
4181
- * @description When the user accepted the project invitation. Null if the invite is still pending.
4352
+ * @description When the user accepted the project invitation. Omitted when no acceptance time is recorded, including pending invitations.
4182
4353
  * @example 2026-01-15T09:30:00Z
4183
4354
  */
4184
4355
  accepted_at?: string;
4185
4356
  /**
4186
- * @description Access level: owner, admin, write, or read
4357
+ * @description Access level granted to this collaborator.
4187
4358
  * @example admin
4188
4359
  * @enum {string}
4189
4360
  */
4190
4361
  access_level: "owner" | "admin" | "write" | "read" | "none";
4191
4362
  /**
4192
- * @description Human-readable display name. Falls back to the email when the user has not set a display name.
4363
+ * @description Collaborator display name, falling back to the email address. Omitted when neither is available.
4193
4364
  * @example Jane Cooper
4194
4365
  */
4195
4366
  display_name?: string;
4196
4367
  /**
4197
- * @description Email address of the collaborator. Empty if the user has no resolvable email (e.g. deleted user records that were not filtered out, or service-account-like users without an email on file).
4368
+ * @description Collaborator email address. Uses the workspace membership email when available, otherwise the account email. Omitted when unavailable.
4198
4369
  * @example jane.cooper@acme.com
4199
4370
  */
4200
4371
  email?: string;
4201
4372
  /**
4202
4373
  * Format: date-time
4203
- * @description When the user was invited to the project. Null for the project owner.
4374
+ * @description When the user was invited to the project. Omitted when no invitation time is recorded.
4204
4375
  * @example 2026-01-15T09:30:00Z
4205
4376
  */
4206
4377
  invited_at?: string;
4207
4378
  /**
4208
- * @description User ID of the inviter. Empty for the project owner.
4379
+ * @description User ID of the inviter. Omitted when no inviter is recorded.
4209
4380
  * @example Xy7Kd2Lm9Qp4Rt6Vw8Zc1Bn3Fh5
4210
4381
  */
4211
4382
  invited_by?: string;
4212
4383
  /**
4213
- * @description True when the user is internal to the workspace: either a workspace member, or their email belongs to a domain the workspace has verified (typical SSO / JIT provisioning case). Useful for distinguishing internal vs. external collaborators in security reviews.
4384
+ * @description Whether the collaborator belongs to the project's workspace or has an email address on a domain verified by that workspace. Internal refers to the customer's workspace, not Lovable staff.
4214
4385
  * @example true
4215
4386
  */
4216
4387
  is_internal: boolean;
4217
4388
  /**
4218
- * @description True when the user is a member of the project's workspace. False indicates an ad-hoc project collaborator who has no broader workspace access.
4389
+ * @description Whether the collaborator also belongs to the project's workspace.
4219
4390
  * @example true
4220
4391
  */
4221
4392
  is_workspace_member: boolean;
4393
+ /**
4394
+ * Format: date-time
4395
+ * @description When the collaborator last accessed this project, from the most recent project or preview auth token mint (session-start granularity, not per page view). Any authenticated open of the project surface counts, including a published-site open by a collaborator. Always present, so an access review can tell 'never accessed' from a missing field. Null when no access is recorded under the current grant: an access that predates invited_at belongs to a revoked grant and reports as null.
4396
+ * @example 2026-01-20T14:05:00Z
4397
+ */
4398
+ last_accessed_at: string | null;
4222
4399
  /**
4223
4400
  * @description User ID of the collaborator
4224
4401
  * @example Xy7Kd2Lm9Qp4Rt6Vw8Zc1Bn3Fh5
@@ -4242,7 +4419,7 @@ export interface components {
4242
4419
  */
4243
4420
  total: number;
4244
4421
  };
4245
- V1ProjectResponse: {
4422
+ Project: {
4246
4423
  /**
4247
4424
  * Format: date-time
4248
4425
  * @description When the project was created.
@@ -4281,7 +4458,7 @@ export interface components {
4281
4458
  is_published?: boolean;
4282
4459
  /**
4283
4460
  * Format: date-time
4284
- * @description When the project was last edited.
4461
+ * @description When the project last received an edit or a user chat message.
4285
4462
  * @example 2026-01-15T09:30:00Z
4286
4463
  */
4287
4464
  last_edited_at?: string;
@@ -4301,7 +4478,7 @@ export interface components {
4301
4478
  */
4302
4479
  name?: string;
4303
4480
  /**
4304
- * @description Open Graph image URL.
4481
+ * @description Image URL used when sharing a link to the project on social platforms.
4305
4482
  * @example https://lovable.dev/cdn/projects/acme-landing-page/og.png
4306
4483
  */
4307
4484
  og_image_url?: string;
@@ -4311,31 +4488,23 @@ export interface components {
4311
4488
  */
4312
4489
  preview_url?: string;
4313
4490
  /**
4314
- * @description Project type. One of: project, library. Absent on older projects. More values may be added; clients must tolerate unknown values.
4491
+ * @description Project type. Absent on older projects. More values may be added; clients must tolerate unknown values.
4315
4492
  * @example project
4493
+ * @enum {string}
4316
4494
  */
4317
- project_type?: string;
4495
+ project_type?: "project" | "library";
4318
4496
  /**
4319
- * @description Published visibility. One of: public, private. More values may be added; clients must tolerate unknown values.
4497
+ * @description Who can access the published app. Separate from editor sharing. More values may be added; clients must tolerate unknown values.
4320
4498
  * @example public
4499
+ * @enum {string}
4321
4500
  */
4322
- publish_visibility?: string;
4501
+ publish_visibility?: "public" | "private" | "workspace_only";
4323
4502
  /**
4324
- * @description Provisioning status of the project, not agent build progress. 'completed' means the project scaffold was created, and is set before the agent has finished the initial message, so the code at that point is often an empty starter page. To check whether the agent finished building, poll GET /v1/messages/{message_id}. One of: in_progress, completed, failed. More values may be added; clients must tolerate unknown values.
4503
+ * @description Project setup status. Successful setup means the project has been created; the AI may still be processing a message and the preview may not be ready. More values may be added; clients must tolerate unknown values.
4325
4504
  * @example completed
4505
+ * @enum {string}
4326
4506
  */
4327
- status?: string;
4328
- /**
4329
- * @description Project tech stack.
4330
- * @example vite_react_shadcn_ts
4331
- */
4332
- tech_stack?: string;
4333
- /**
4334
- * Format: date-time
4335
- * @description When the project was last updated.
4336
- * @example 2026-01-15T09:30:00Z
4337
- */
4338
- updated_at?: string;
4507
+ status?: "in_progress" | "completed" | "failed";
4339
4508
  /**
4340
4509
  * @description Published project URL.
4341
4510
  * @example https://acme-landing-page.lovable.app
@@ -4347,10 +4516,11 @@ export interface components {
4347
4516
  */
4348
4517
  user_id?: string;
4349
4518
  /**
4350
- * @description Project visibility: draft, private, workspace_view, or public.
4519
+ * @description Controls access to the project in the Lovable editor. Workspace roles and explicit sharing grants determine access. Published app access and open remixing are configured separately. More values may be added; clients must tolerate unknown values.
4351
4520
  * @example public
4521
+ * @enum {string}
4352
4522
  */
4353
- visibility?: string;
4523
+ visibility?: "draft" | "private" | "workspace_view" | "public";
4354
4524
  /**
4355
4525
  * @description Workspace the project belongs to.
4356
4526
  * @example workspace_01jw3k9m2xq8r5v0c7d4e6f2gh
@@ -4385,7 +4555,7 @@ export interface components {
4385
4555
  /** @description Custom name for the new project */
4386
4556
  project_name?: string;
4387
4557
  /**
4388
- * @description How to apply message_id: before starts before the message, including includes that message's completed turn. Defaults to including.
4558
+ * @description Whether to include message_id's completed turn in the copy. Includes it by default.
4389
4559
  * @enum {string}
4390
4560
  */
4391
4561
  remix_mode?: "before" | "including";
@@ -4440,7 +4610,7 @@ export interface components {
4440
4610
  */
4441
4611
  description?: string;
4442
4612
  /**
4443
- * @description Raw scanner output (e.g. matched pattern fragments). May be empty due to access restrictions; use 'description' and 'metadata' for the user-facing summary.
4613
+ * @description Additional scanner detail, available only to Lovable staff and omitted for API integrations. Use description for the finding summary.
4444
4614
  * @example table: public.profiles; rls_enabled: false
4445
4615
  */
4446
4616
  details?: string;
@@ -4450,21 +4620,22 @@ export interface components {
4450
4620
  */
4451
4621
  finding_id: string;
4452
4622
  /**
4453
- * @description Scan invocation ID where this finding was first seen.
4623
+ * @description ID of the security scan that first recorded this finding.
4454
4624
  * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
4455
4625
  */
4456
4626
  first_seen_scan_id?: string;
4457
4627
  /**
4458
- * @description error | warn | info
4628
+ * @description Severity reported by the scanner. More values may be added; clients must tolerate unknown values.
4459
4629
  * @example error
4630
+ * @enum {string}
4460
4631
  */
4461
- level: string;
4632
+ level: "error" | "warn" | "info";
4462
4633
  /**
4463
4634
  * @description Link to remediation guidance for this finding.
4464
4635
  * @example https://docs.lovable.dev/security/rls
4465
4636
  */
4466
4637
  link?: string;
4467
- /** @description Scanner-specific metadata (file_path, line_number, package, cve, ...) */
4638
+ /** @description Additional context supplied by the scanner, such as file_path, line_number, package, or cve. Keys vary by scanner and finding type. */
4468
4639
  metadata?: {
4469
4640
  [key: string]: unknown;
4470
4641
  };
@@ -4475,12 +4646,12 @@ export interface components {
4475
4646
  name: string;
4476
4647
  /**
4477
4648
  * Format: int64
4478
- * @description Number of consecutive scans this finding has appeared in
4649
+ * @description Number of times this finding has been detected again while ignored. Starts at zero and resets when the finding is ignored again.
4479
4650
  * @example 3
4480
4651
  */
4481
4652
  recurrence: number;
4482
4653
  /**
4483
- * @description Estimated remediation effort (easy, medium, or hard).
4654
+ * @description Estimated remediation effort reported by the scanner (e.g. easy, medium, or hard).
4484
4655
  * @example medium
4485
4656
  */
4486
4657
  remediation_difficulty?: string;
@@ -4490,10 +4661,11 @@ export interface components {
4490
4661
  */
4491
4662
  scanner_name: string;
4492
4663
  /**
4493
- * @description Finding status. One of: open, fixed, ignored. More values may be added; clients must tolerate unknown values.
4664
+ * @description Review state of the security finding. More values may be added; clients must tolerate unknown values.
4494
4665
  * @example open
4666
+ * @enum {string}
4495
4667
  */
4496
- status: string;
4668
+ status: "open" | "fixed" | "ignored";
4497
4669
  /**
4498
4670
  * Format: date-time
4499
4671
  * @description When this finding was last updated, UTC.
@@ -4508,12 +4680,15 @@ export interface components {
4508
4680
  id?: string;
4509
4681
  /** @description Display name of the user actor, when resolvable. */
4510
4682
  name?: string;
4511
- /** @description Actor type. One of: user, system. More values may be added; clients must tolerate unknown values. */
4512
- type: string;
4683
+ /**
4684
+ * @description Kind of initiator. Automatic editor checks and scans without a recorded source are attributed to the caller; scheduled and integration-triggered scans are automated. More values may be added; clients must tolerate unknown values.
4685
+ * @enum {string}
4686
+ */
4687
+ type: "user" | "system";
4513
4688
  };
4514
4689
  V1SecurityScanSummary: {
4515
4690
  /**
4516
- * @description Project commit at scan start
4691
+ * @description Git commit SHA of the project when the scan started. Omitted when unavailable.
4517
4692
  * @example 9fceb02d0ae598e95dc970b74767f19372d61af8
4518
4693
  */
4519
4694
  commit_sha?: string;
@@ -4523,10 +4698,10 @@ export interface components {
4523
4698
  * @example 2026-01-15T09:30:00Z
4524
4699
  */
4525
4700
  finished_at?: string;
4526
- /** @description Scanners requested for this invocation */
4701
+ /** @description Identifiers of the security checks requested for this scan. */
4527
4702
  requested_scanners: string[] | null;
4528
4703
  /**
4529
- * @description Unique scan invocation ID
4704
+ * @description Unique ID for this security scan.
4530
4705
  * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
4531
4706
  */
4532
4707
  scan_id: string;
@@ -4537,27 +4712,29 @@ export interface components {
4537
4712
  */
4538
4713
  started_at: string;
4539
4714
  /**
4540
- * @description Scan status. One of: running, completed, failed. More values may be added; clients must tolerate unknown values.
4715
+ * @description Overall scan state. Finishing a scan does not mean that no security issues were found. More values may be added; clients must tolerate unknown values.
4541
4716
  * @example completed
4717
+ * @enum {string}
4542
4718
  */
4543
- status: string;
4719
+ status: "running" | "completed" | "failed";
4544
4720
  /**
4545
- * @description What triggered the scan. Known values include: workflow, user, ui_auto, aikido_import, app_mcp_deep_auto, hvt_scheduled, workspace_scheduled, enterprise_batch, gitsync_pull. More values may be added; clients must tolerate unknown values.
4721
+ * @description How the scan was initiated. More values may be added; clients must tolerate unknown values.
4546
4722
  * @example workflow
4723
+ * @enum {string}
4547
4724
  */
4548
- trigger_source: string;
4725
+ trigger_source: "workflow" | "user" | "ui_auto" | "aikido_import" | "manage_findings" | "app_mcp_deep_auto" | "hvt_scheduled" | "workspace_scheduled" | "enterprise_batch" | "gitsync_pull";
4549
4726
  /** @description Actor that triggered the scan. */
4550
4727
  triggered_by: components["schemas"]["V1SecurityScanActor"];
4551
4728
  };
4552
4729
  V1SecurityScannerRun: {
4553
4730
  /**
4554
- * @description Commit at which this scanner actually ran (may differ from invocation commit on carry-forward)
4731
+ * @description Git commit SHA checked by this scanner. May be older than scan.commit_sha when results from an earlier scan are reused.
4555
4732
  * @example 9fceb02d0ae598e95dc970b74767f19372d61af8
4556
4733
  */
4557
4734
  commit_sha?: string;
4558
4735
  /**
4559
- * @description Error message when the scanner failed.
4560
- * @example Scanner timed out after 300s
4736
+ * @description User-facing retry guidance when the scanner failed. Omitted for other statuses.
4737
+ * @example The scanner failed to complete. Try running the security scan again.
4561
4738
  */
4562
4739
  error_message?: string;
4563
4740
  /**
@@ -4567,12 +4744,12 @@ export interface components {
4567
4744
  */
4568
4745
  finished_at?: string;
4569
4746
  /**
4570
- * @description Name of the scanner that ran.
4747
+ * @description Identifier of the security check.
4571
4748
  * @example agent_security
4572
4749
  */
4573
4750
  scanner_name: string;
4574
4751
  /**
4575
- * @description Version of the scanner that ran.
4752
+ * @description Version of the security check, when available.
4576
4753
  * @example 1.4.2
4577
4754
  */
4578
4755
  scanner_version?: string;
@@ -4583,10 +4760,11 @@ export interface components {
4583
4760
  */
4584
4761
  started_at: string;
4585
4762
  /**
4586
- * @description Scanner run status. One of: succeeded, failed, skipped. More values may be added; clients must tolerate unknown values.
4763
+ * @description Execution outcome for this check. Success does not mean that no security issues were found. More values may be added; clients must tolerate unknown values.
4587
4764
  * @example failed
4765
+ * @enum {string}
4588
4766
  */
4589
- status: string;
4767
+ status: "succeeded" | "failed" | "skipped";
4590
4768
  };
4591
4769
  V1SelectedLibrary: {
4592
4770
  /**
@@ -4673,15 +4851,16 @@ export interface components {
4673
4851
  */
4674
4852
  message?: string;
4675
4853
  /**
4676
- * @description Scan invocation ID. Poll GET /v1/projects/{project_id}/security-scans/{scan_id} for status (running | completed | failed) and findings.
4854
+ * @description ID of the new or reused scan. Poll GET /v1/projects/{project_id}/security-scans/{scan_id} for status and findings.
4677
4855
  * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
4678
4856
  */
4679
4857
  scan_id: string;
4680
4858
  /**
4681
- * @description One of: started, running, completed. More values may be added; clients must tolerate unknown values.
4859
+ * @description Whether a new scan began or an existing scan covers this request. In-progress scans are reused for the same commit and scanner set; finished scans are reused for the current commit. More values may be added; clients must tolerate unknown values.
4682
4860
  * @example started
4861
+ * @enum {string}
4683
4862
  */
4684
- status: string;
4863
+ status: "started" | "running" | "completed";
4685
4864
  };
4686
4865
  V1UnscopedFile: {
4687
4866
  /**
@@ -4718,21 +4897,13 @@ export interface components {
4718
4897
  V1UpdateWorkspaceSettingsInputBody: {
4719
4898
  /**
4720
4899
  * Format: double
4721
- * @description Default monthly credit cap applied to each member without an explicit per-member limit. Send a number >= 0 (0 blocks all member spend) to set it, or null to clear it (members are then bounded only by the workspace balance).
4900
+ * @description Default monthly build-credit limit for members without an explicit per-member limit. Send a nonnegative number of Lovable credits, or null to clear the default. Explicit member limits and active higher temporary limits still apply. This field is required for an update.
4722
4901
  * @example 500
4723
4902
  */
4724
4903
  default_monthly_member_credit_limit?: number | null;
4725
4904
  /** @description Workspace ID. */
4726
4905
  workspace_id: string;
4727
4906
  };
4728
- V1UpdateWorkspaceSettingsNestedInputBody: {
4729
- /**
4730
- * Format: double
4731
- * @description Default monthly credit cap applied to each member without an explicit per-member limit. Send a number >= 0 (0 blocks all member spend) to set it, or null to clear it (members are then bounded only by the workspace balance).
4732
- * @example 500
4733
- */
4734
- default_monthly_member_credit_limit?: number | null;
4735
- };
4736
4907
  V1UsagePeriod: {
4737
4908
  /** @description Inclusive end of the covered window (YYYY-MM-DD, UTC). */
4738
4909
  end: string;
@@ -4831,32 +5002,32 @@ export interface components {
4831
5002
  V1WorkspaceAuditLogsBody: {
4832
5003
  /** @description Items in this page. */
4833
5004
  data: components["schemas"]["V1WorkspaceAuditLogEntry"][] | null;
4834
- /** @description Pagination cursors for fetching adjacent pages. */
5005
+ /** @description Whether more results are available and the cursor to fetch the next page. */
4835
5006
  pagination: components["schemas"]["Pagination"];
4836
5007
  };
4837
- V1WorkspaceCreditHistoryBody: {
5008
+ CreditHistoryPage: {
4838
5009
  /** @description Items in this page. */
4839
- data: components["schemas"]["V1CreditHistoryEntry"][] | null;
4840
- /** @description Pagination cursors for fetching adjacent pages. */
5010
+ data: components["schemas"]["CreditHistoryEntry"][] | null;
5011
+ /** @description Whether more results are available and the cursor to fetch the next page. */
4841
5012
  pagination: components["schemas"]["Pagination"];
4842
5013
  /**
4843
5014
  * Format: int64
4844
- * @description Total entry count, present only on the first page. Capped see total_is_capped.
5015
+ * @description Number of matching entries in the past 365 days, up to 500. Present only on the first page. Check total_is_capped before treating this as an exact count.
4845
5016
  * @example 42
4846
5017
  */
4847
5018
  total?: number;
4848
5019
  /**
4849
- * @description True when total reached the count cap and the real total is higher.
5020
+ * @description Whether more than 500 matching entries exist. When true, total is 500 and is a lower bound. Present only on the first page.
4850
5021
  * @example false
4851
5022
  */
4852
5023
  total_is_capped?: boolean;
4853
5024
  };
4854
- V1WorkspaceCreditsBody: {
5025
+ CreditBalance: {
4855
5026
  /** @description The workspace billing cycle that total_billing_period_used covers. */
4856
- billing_period: components["schemas"]["V1BillingPeriod"];
5027
+ billing_period: components["schemas"]["BillingPeriod"];
4857
5028
  /**
4858
5029
  * Format: double
4859
- * @description Daily credit limit for this workspace.
5030
+ * @description Total credits allocated by active daily grants, before usage. This is a daily allowance, not a cap on spending other credits.
4860
5031
  * @example 500
4861
5032
  */
4862
5033
  daily_limit: number;
@@ -4866,10 +5037,10 @@ export interface components {
4866
5037
  * @example 300
4867
5038
  */
4868
5039
  daily_remaining: number;
4869
- /** @description All future grant expiry groups sorted by date (excluding daily/overage). */
4870
- expiring_grants: components["schemas"]["V1WorkspaceCreditsExpiringGrant"][] | null;
4871
- /** @description Per-display-bucket credit balances. */
4872
- grant_type_balances: components["schemas"]["V1WorkspaceCreditsGrantTypeBalance"][] | null;
5040
+ /** @description Remaining general-purpose and build credits with expiry dates, grouped by source, eligible usage, and expiry time. Ordered by earliest expiry first. Excludes daily credits. */
5041
+ expiring_grants: components["schemas"]["ExpiringCreditGrant"][] | null;
5042
+ /** @description General-purpose and build-credit balances grouped by source or allocation category. */
5043
+ grant_type_balances: components["schemas"]["CreditGrantTypeBalance"][] | null;
4873
5044
  /**
4874
5045
  * Format: double
4875
5046
  * @description Credits used in the current billing period (see billing_period for the exact window).
@@ -4878,23 +5049,24 @@ export interface components {
4878
5049
  total_billing_period_used: number;
4879
5050
  /**
4880
5051
  * Format: double
4881
- * @description Total credits granted across all active grants.
5052
+ * @description Original amount granted for the active general-purpose and build-credit grants, including amounts already used. This is not a lifetime total.
4882
5053
  * @example 2000
4883
5054
  */
4884
5055
  total_granted: number;
4885
5056
  /**
4886
5057
  * Format: double
4887
- * @description Total remaining credits across all active grants.
5058
+ * @description Remaining general-purpose and build credits, including daily credits. Excludes separate Cloud and AI allowances.
4888
5059
  * @example 1500
4889
5060
  */
4890
5061
  total_remaining: number;
4891
5062
  };
4892
- V1WorkspaceCreditsExpiringGrant: {
5063
+ ExpiringCreditGrant: {
4893
5064
  /**
4894
- * @description What the expiring credits apply to (e.g. build_time, cloud, ai_gateway).
5065
+ * @description Usage categories that can consume this grant. Omitted when unspecified. More values may be added; clients must tolerate unknown values.
4895
5066
  * @example build_time
5067
+ * @enum {string}
4896
5068
  */
4897
- applicability?: string;
5069
+ applicability?: "generic" | "build_time" | "build_mode" | "plan_mode";
4898
5070
  /**
4899
5071
  * Format: double
4900
5072
  * @description Total credits expiring at this date.
@@ -4908,17 +5080,19 @@ export interface components {
4908
5080
  */
4909
5081
  expires_at: string;
4910
5082
  /**
4911
- * @description Display bucket: billing, rollover, topup, commitment, cashback, or granted.
5083
+ * @description Source or allocation category of the credits. More values may be added; clients must tolerate unknown values.
4912
5084
  * @example billing
5085
+ * @enum {string}
4913
5086
  */
4914
- grant_type: string;
5087
+ grant_type: "billing" | "rollover" | "topup" | "commitment" | "cashback" | "granted" | "overage" | "unlimited" | "allowance";
4915
5088
  };
4916
- V1WorkspaceCreditsGrantTypeBalance: {
5089
+ CreditGrantTypeBalance: {
4917
5090
  /**
4918
- * @description Display bucket: billing, daily, rollover, topup, commitment, cashback, or granted.
5091
+ * @description Source or allocation category of the credits. More values may be added; clients must tolerate unknown values.
4919
5092
  * @example billing
5093
+ * @enum {string}
4920
5094
  */
4921
- grant_type: string;
5095
+ grant_type: "billing" | "daily" | "rollover" | "topup" | "commitment" | "cashback" | "granted" | "overage" | "unlimited" | "allowance";
4922
5096
  /**
4923
5097
  * Format: double
4924
5098
  * @description Total credits granted for this type.
@@ -4932,7 +5106,7 @@ export interface components {
4932
5106
  */
4933
5107
  remaining: number;
4934
5108
  };
4935
- V1WorkspaceGroup: {
5109
+ WorkspaceGroup: {
4936
5110
  /**
4937
5111
  * Format: date-time
4938
5112
  * @description When the group was created.
@@ -4977,86 +5151,89 @@ export interface components {
4977
5151
  */
4978
5152
  workspace_id: string;
4979
5153
  };
4980
- V1WorkspaceInsightsActivityFreshness: {
5154
+ WorkspaceInsightsActivityFreshness: {
4981
5155
  /**
4982
5156
  * Format: date-time
4983
- * @description Data horizon for the edit counts.
5157
+ * @description Latest data timestamp used by the stored edit counts on this page. Omitted when unavailable.
4984
5158
  * @example 2026-01-15T09:30:00Z
4985
5159
  */
4986
5160
  edits_as_of?: string;
4987
5161
  /**
4988
5162
  * Format: date-time
4989
- * @description Data horizon for the visitor counts.
5163
+ * @description Latest data timestamp used by stored visitor counts on this page. Omitted when counts are retrieved live or no timestamp is available.
4990
5164
  * @example 2026-01-15T09:30:00Z
4991
5165
  */
4992
5166
  visitors_as_of?: string;
4993
5167
  };
4994
- V1WorkspaceInsightsBody: {
5168
+ WorkspaceInsights: {
4995
5169
  /**
4996
5170
  * Format: date-time
4997
- * @description Conservative workspace-wide freshness horizon for the risk rollups; individual project rollups may be newer.
5171
+ * @description Timestamp indicating the freshness of workspace review-priority data. Individual projects may have newer results. Omitted when unavailable. This is not a security scan completion time.
4998
5172
  * @example 2026-01-15T09:30:00Z
4999
5173
  */
5000
5174
  as_of?: string;
5001
- /** @description Finding-catalog counts, dominance-suppressed and severity-ordered. */
5002
- findings: components["schemas"]["V1WorkspaceInsightsFinding"][] | null;
5003
- /** @description KPI cards for the workspace security posture. */
5004
- summary: components["schemas"]["V1WorkspaceInsightsSummary"];
5175
+ /** @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 omitted when that feature is unavailable. Returns an empty array when no types are included. */
5176
+ findings: components["schemas"]["WorkspaceInsightsFinding"][];
5177
+ /** @description Workspace project counts, membership counts, and project review priorities. */
5178
+ summary: components["schemas"]["WorkspaceInsightsSummary"];
5005
5179
  };
5006
- V1WorkspaceInsightsEdgeFunction: {
5180
+ WorkspaceInsightsEdgeFunction: {
5007
5181
  /**
5008
- * @description Edge function name.
5182
+ * @description Name of a backend function deployed for this project.
5009
5183
  * @example send-welcome-email
5010
5184
  */
5011
5185
  name: string;
5012
5186
  };
5013
- V1WorkspaceInsightsFinding: {
5187
+ WorkspaceInsightsFinding: {
5014
5188
  /**
5015
- * @description Finding category (e.g. data, access, exposure).
5016
- * @example data
5189
+ * @description Finding category. More values may be added; clients must tolerate unknown values.
5190
+ * @example exposure
5191
+ * @enum {string}
5017
5192
  */
5018
- category: string;
5193
+ category: "security" | "data" | "exposure" | "credentials" | "access" | "integrations" | "runtime";
5019
5194
  /**
5020
- * @description Human-readable finding description.
5021
- * @example A public table has row-level security disabled, exposing all rows to anonymous callers.
5195
+ * @description Explanation of the condition represented by this finding type.
5196
+ * @example Publicly published projects with error-level security findings.
5022
5197
  */
5023
5198
  description: string;
5024
5199
  /**
5025
- * @description Stable finding-catalog slug (e.g. public_pii_exposure, orphaned_owner).
5026
- * @example public_pii_exposure
5200
+ * @description Stable identifier for the finding type. Use as finding_id on GET /v1/workspaces/{workspace_id}/security-center/insights/projects to list matching projects; that endpoint requires Enterprise.
5201
+ * @example public_security_exposure
5027
5202
  */
5028
5203
  id: string;
5029
5204
  /**
5030
5205
  * Format: int64
5031
- * @description Projects matching this finding.
5206
+ * @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.
5032
5207
  * @example 12
5033
5208
  */
5034
5209
  project_count: number;
5035
5210
  /**
5036
- * @description Review priority: needs_review | review_recommended | no_review_needed.
5211
+ * @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.
5037
5212
  * @example needs_review
5213
+ * @enum {string}
5038
5214
  */
5039
- severity: string;
5215
+ severity: "needs_review" | "review_recommended" | "no_review_needed";
5040
5216
  /**
5041
- * @description Human-readable finding title.
5042
- * @example Row-level security disabled on a public table
5217
+ * @description Short display name for the finding type. Use id for programmatic matching.
5218
+ * @example Public app with security errors
5043
5219
  */
5044
5220
  title: string;
5045
5221
  };
5046
- V1WorkspaceInsightsOwner: {
5222
+ WorkspaceInsightsOwner: {
5047
5223
  /**
5048
5224
  * @description Project owner's display name.
5049
5225
  * @example Jane Cooper
5050
5226
  */
5051
5227
  display_name?: string;
5052
5228
  };
5053
- V1WorkspaceInsightsProject: {
5229
+ WorkspaceInsightsProject: {
5054
5230
  /**
5055
- * @description Activity bucket: active, inactive, or dead.
5056
- * @example active
5231
+ * @description Last-edit recency, using 14-day and 60-day boundaries. More values may be added; clients must tolerate unknown values.
5232
+ * @example last_14_days
5233
+ * @enum {string}
5057
5234
  */
5058
- activity_group?: string;
5059
- /** @description Configured connector names. */
5235
+ activity_group?: "last_14_days" | "last_60_days" | "older";
5236
+ /** @description Names of services connected to the project. */
5060
5237
  connectors?: string[] | null;
5061
5238
  /**
5062
5239
  * @description User-provided project description.
@@ -5068,8 +5245,8 @@ export interface components {
5068
5245
  * @example Acme Landing Page
5069
5246
  */
5070
5247
  display_name?: string;
5071
- /** @description Deployed edge functions. */
5072
- edge_functions?: components["schemas"]["V1WorkspaceInsightsEdgeFunction"][] | null;
5248
+ /** @description Backend functions deployed for the project. */
5249
+ edge_functions?: components["schemas"]["WorkspaceInsightsEdgeFunction"][] | null;
5073
5250
  /**
5074
5251
  * Format: int64
5075
5252
  * @description Total edits over the project's lifetime.
@@ -5117,15 +5294,15 @@ export interface components {
5117
5294
  last_edited_at?: string;
5118
5295
  /**
5119
5296
  * Format: date-time
5120
- * @description When the project was last security-scanned.
5297
+ * @description Completion time of the latest completed security scan. Omitted if no completed scan is available.
5121
5298
  * @example 2026-01-15T09:30:00Z
5122
5299
  */
5123
5300
  last_security_scan_at?: string;
5124
- /** @description The reason matching the single applied finding_id, when set. */
5125
- matched_reason?: components["schemas"]["V1WorkspaceInsightsReason"];
5301
+ /** @description Condition matching the finding_id filter when exactly one finding type is selected. May be absent from review_priority_explanation when a more specific condition is displayed there. */
5302
+ matched_reason?: components["schemas"]["WorkspaceInsightsReason"];
5126
5303
  /**
5127
5304
  * Format: int64
5128
- * @description Total chat messages in the project.
5305
+ * @description Agent message usage recorded for this project during the current UTC calendar month, excluding usage covered by unlimited plans.
5129
5306
  * @example 56
5130
5307
  */
5131
5308
  message_count: number;
@@ -5139,32 +5316,35 @@ export interface components {
5139
5316
  * @example https://lovable.dev/cdn/projects/acme-landing-page/og.png
5140
5317
  */
5141
5318
  og_image_url?: string;
5142
- /** @description Project owner identity. */
5143
- owner?: components["schemas"]["V1WorkspaceInsightsOwner"];
5319
+ /** @description Project owner's display name, when available. */
5320
+ owner?: components["schemas"]["WorkspaceInsightsOwner"];
5144
5321
  /**
5145
- * @description Publishing status: external, workspace, or not_published.
5146
- * @example external
5322
+ * @description Who can access the published site. Separate from editor sharing. More values may be added; clients must tolerate unknown values.
5323
+ * @example public
5324
+ * @enum {string}
5147
5325
  */
5148
- publish_visibility?: string;
5326
+ publish_visibility?: "public" | "private" | "workspace_only";
5149
5327
  /**
5150
- * @description Review priority: needs_review, review_recommended, no_review_needed, or unscored.
5328
+ * @description Security Center review priority, or an indication that the project has not yet been scored. A lower priority does not guarantee the absence of security issues. More values may be added; clients must tolerate unknown values.
5151
5329
  * @example needs_review
5330
+ * @enum {string}
5152
5331
  */
5153
- review_priority?: string;
5154
- /** @description Risk reasons explaining the review priority. */
5155
- review_priority_explanation: components["schemas"]["V1WorkspaceInsightsReason"][] | null;
5332
+ review_priority?: "needs_review" | "review_recommended" | "no_review_needed" | "unscored";
5333
+ /** @description Conditions contributing to the project's review priority. Not every scoring input is listed, and related conditions may be combined under a more specific explanation. */
5334
+ review_priority_explanation: components["schemas"]["WorkspaceInsightsReason"][] | null;
5156
5335
  /** @description Per-project security and activity signals. */
5157
- signals: components["schemas"]["V1WorkspaceInsightsSignals"];
5336
+ signals: components["schemas"]["WorkspaceInsightsSignals"];
5158
5337
  /**
5159
- * @description Live project preview URL.
5338
+ * @description Configured site URL, when available. Unpublishing clears it, but later renames or URL changes can set it while the app is offline; check is_published before using it.
5160
5339
  * @example https://acme-landing-page.lovable.app
5161
5340
  */
5162
5341
  url?: string;
5163
5342
  /**
5164
- * @description Project visibility: public, private, or draft.
5343
+ * @description Who can access the project in the Lovable editor. Separate from published site access. More values may be added; clients must tolerate unknown values.
5165
5344
  * @example public
5345
+ * @enum {string}
5166
5346
  */
5167
- visibility?: string;
5347
+ visibility?: "draft" | "private" | "workspace_view" | "public";
5168
5348
  /**
5169
5349
  * Format: int64
5170
5350
  * @description Unique visitors in the last 24 hours.
@@ -5184,20 +5364,20 @@ export interface components {
5184
5364
  */
5185
5365
  visitors_7d: number;
5186
5366
  };
5187
- V1WorkspaceInsightsProjectsBody: {
5188
- /** @description Per-family data horizons for the activity columns. */
5189
- activity_as_of?: components["schemas"]["V1WorkspaceInsightsActivityFreshness"];
5190
- /** @description The catalog finding applied as a filter, when exactly one finding_id is set. */
5191
- applied_finding?: components["schemas"]["V1WorkspaceInsightsFinding"];
5367
+ WorkspaceInsightsProjectPage: {
5368
+ /** @description Available data timestamps for the edit and visitor counts on this page. */
5369
+ activity_as_of?: components["schemas"]["WorkspaceInsightsActivityFreshness"];
5370
+ /** @description Finding type used as a filter when exactly one finding_id is selected. project_count equals the total matching projects after all filters are applied. */
5371
+ applied_finding?: components["schemas"]["WorkspaceInsightsFinding"];
5192
5372
  /**
5193
5373
  * Format: date-time
5194
- * @description Conservative workspace-wide freshness horizon for the risk rollups; individual project rollups may be newer.
5374
+ * @description Timestamp indicating the freshness of workspace review-priority data. Individual projects may have newer results. Omitted when unavailable; not a security scan completion time.
5195
5375
  * @example 2026-01-15T09:30:00Z
5196
5376
  */
5197
5377
  as_of?: string;
5198
5378
  /** @description Items in this page. */
5199
- data: components["schemas"]["V1WorkspaceInsightsProject"][] | null;
5200
- /** @description Pagination cursors for fetching adjacent pages. */
5379
+ data: components["schemas"]["WorkspaceInsightsProject"][] | null;
5380
+ /** @description Whether more results are available and the cursor to fetch the next page. */
5201
5381
  pagination: components["schemas"]["Pagination"];
5202
5382
  /**
5203
5383
  * Format: int64
@@ -5206,36 +5386,38 @@ export interface components {
5206
5386
  */
5207
5387
  total: number;
5208
5388
  };
5209
- V1WorkspaceInsightsReason: {
5389
+ WorkspaceInsightsReason: {
5210
5390
  /**
5211
- * @description Risk-reason category (e.g. data, access, exposure).
5391
+ * @description Topic of the condition contributing to the review priority. More values may be added; clients must tolerate unknown values.
5212
5392
  * @example data
5393
+ * @enum {string}
5213
5394
  */
5214
- category: string;
5395
+ category: "security" | "data" | "exposure" | "credentials" | "access" | "integrations" | "runtime";
5215
5396
  /**
5216
- * @description Human-readable explanation of the risk reason.
5397
+ * @description Explanation of how this condition contributes to the project's review priority.
5217
5398
  * @example A public table exposes personal data to anonymous callers.
5218
5399
  */
5219
5400
  detail: string;
5220
5401
  /**
5221
- * @description Stable risk-reason slug.
5402
+ * @description Stable identifier for the condition contributing to this project's review priority.
5222
5403
  * @example public_pii_exposure
5223
5404
  */
5224
5405
  id: string;
5225
5406
  /**
5226
- * @description Human-readable risk-reason label.
5407
+ * @description Short display name for this condition. Use id for programmatic matching.
5227
5408
  * @example Public PII exposure
5228
5409
  */
5229
5410
  label: string;
5230
5411
  /**
5231
- * @description Review priority: needs_review | review_recommended | no_review_needed.
5412
+ * @description Review priority assigned to this condition. May differ from the project's overall priority. More values may be added; clients must tolerate unknown values.
5232
5413
  * @example needs_review
5414
+ * @enum {string}
5233
5415
  */
5234
- severity: string;
5235
- /** @description Typed per-reason counts. */
5236
- values?: components["schemas"]["V1WorkspaceInsightsReasonValues"];
5416
+ severity: "needs_review" | "review_recommended" | "no_review_needed";
5417
+ /** @description Counts relevant to this condition. Only applicable fields are populated. */
5418
+ values?: components["schemas"]["WorkspaceInsightsReasonValues"];
5237
5419
  };
5238
- V1WorkspaceInsightsReasonValues: {
5420
+ WorkspaceInsightsReasonValues: {
5239
5421
  /**
5240
5422
  * Format: int64
5241
5423
  * @description Number of configured connectors.
@@ -5285,27 +5467,27 @@ export interface components {
5285
5467
  */
5286
5468
  warning_count?: number;
5287
5469
  };
5288
- V1WorkspaceInsightsReviewPriority: {
5470
+ WorkspaceInsightsReviewPriority: {
5289
5471
  /**
5290
5472
  * Format: int64
5291
- * @description Projects that need review (critical risk).
5473
+ * @description Projects assigned high review priority, shown as "High" in Security Center.
5292
5474
  * @example 3
5293
5475
  */
5294
5476
  needs_review: number;
5295
5477
  /**
5296
5478
  * Format: int64
5297
- * @description Projects that don't need review (low or minimal risk).
5479
+ * @description Projects assigned low review priority, shown as "Low" in Security Center. This classification does not guarantee that a project has no security issues.
5298
5480
  * @example 12
5299
5481
  */
5300
5482
  no_review_needed: number;
5301
5483
  /**
5302
5484
  * Format: int64
5303
- * @description Projects where review is recommended (high or medium risk).
5485
+ * @description Projects assigned medium review priority, shown as "Medium" in Security Center.
5304
5486
  * @example 5
5305
5487
  */
5306
5488
  review_recommended: number;
5307
5489
  };
5308
- V1WorkspaceInsightsSignals: {
5490
+ WorkspaceInsightsSignals: {
5309
5491
  /**
5310
5492
  * Format: int64
5311
5493
  * @description Number of chat attachments.
@@ -5341,12 +5523,12 @@ export interface components {
5341
5523
  */
5342
5524
  has_chat_attachment: boolean;
5343
5525
  /**
5344
- * @description Whether the project has collaborators outside the workspace.
5526
+ * @description Whether the project has collaborators outside the workspace. Interpret only when external_collaborators_known is true.
5345
5527
  * @example true
5346
5528
  */
5347
5529
  has_external_collaborators: boolean;
5348
5530
  /**
5349
- * @description Whether the project has any detected PII.
5531
+ * @description Whether the project is flagged as containing personally identifiable information (PII). False when personal data detection is unavailable.
5350
5532
  * @example true
5351
5533
  */
5352
5534
  has_pii: boolean;
@@ -5382,7 +5564,7 @@ export interface components {
5382
5564
  */
5383
5565
  is_published: boolean;
5384
5566
  /**
5385
- * @description Whether Lovable Cloud (Supabase) is enabled for the project.
5567
+ * @description Whether the project uses Lovable Cloud for its backend.
5386
5568
  * @example true
5387
5569
  */
5388
5570
  lovable_cloud_enabled: boolean;
@@ -5393,7 +5575,7 @@ export interface components {
5393
5575
  */
5394
5576
  open_pii_finding_count: number;
5395
5577
  /**
5396
- * @description Whether the project is shared more broadly than recommended.
5578
+ * @description Whether the project is shared with at least 10 users.
5397
5579
  * @example false
5398
5580
  */
5399
5581
  overshared: boolean;
@@ -5443,19 +5625,19 @@ export interface components {
5443
5625
  supabase_table_count?: number;
5444
5626
  /**
5445
5627
  * Format: int64
5446
- * @description Number of error-level supply-chain findings.
5628
+ * @description Number of error-level findings in project dependencies.
5447
5629
  * @example 1
5448
5630
  */
5449
5631
  supply_chain_error_count: number;
5450
5632
  /**
5451
5633
  * Format: int64
5452
- * @description Number of info-level supply-chain findings.
5634
+ * @description Number of informational findings in project dependencies.
5453
5635
  * @example 4
5454
5636
  */
5455
5637
  supply_chain_info_count: number;
5456
5638
  /**
5457
5639
  * Format: int64
5458
- * @description Number of warning-level supply-chain findings.
5640
+ * @description Number of warning-level findings in project dependencies.
5459
5641
  * @example 3
5460
5642
  */
5461
5643
  supply_chain_warning_count: number;
@@ -5466,48 +5648,48 @@ export interface components {
5466
5648
  */
5467
5649
  warning_count: number;
5468
5650
  };
5469
- V1WorkspaceInsightsStat: {
5651
+ WorkspaceInsightsStat: {
5470
5652
  /**
5471
5653
  * Format: int64
5472
- * @description Signed change over the delta window.
5654
+ * @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.
5473
5655
  * @example 3
5474
5656
  */
5475
5657
  delta_30d: number;
5476
5658
  /**
5477
- * @description Human-readable window for delta_30d (e.g. "30 days").
5659
+ * @description Display label for the reporting period used by delta_30d. Currently "30 days".
5478
5660
  * @example 30 days
5479
5661
  */
5480
5662
  delta_window: string;
5481
5663
  /**
5482
5664
  * Format: int64
5483
- * @description Current count.
5665
+ * @description Current count for this metric.
5484
5666
  * @example 42
5485
5667
  */
5486
5668
  value: number;
5487
5669
  };
5488
- V1WorkspaceInsightsSummary: {
5489
- /** @description Projects published to an external (public) audience. */
5490
- externally_published: components["schemas"]["V1WorkspaceInsightsStat"];
5491
- /** @description Review-priority rollup across scored projects (needs_review / review_recommended / no_review_needed). */
5492
- risk: components["schemas"]["V1WorkspaceInsightsReviewPriority"];
5493
- /** @description Total projects in the workspace. */
5494
- total_projects: components["schemas"]["V1WorkspaceInsightsStat"];
5495
- /** @description Active workspace members. */
5496
- workspace_members: components["schemas"]["V1WorkspaceInsightsStat"];
5670
+ WorkspaceInsightsSummary: {
5671
+ /** @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. */
5672
+ externally_published: components["schemas"]["WorkspaceInsightsStat"];
5673
+ /** @description Project counts grouped by review priority. Projects without a calculated priority are excluded, so these counts may total less than total_projects.value. */
5674
+ risk: components["schemas"]["WorkspaceInsightsReviewPriority"];
5675
+ /** @description Projects currently in the workspace, excluding deleted projects. delta_30d counts those created within the last 30 days. */
5676
+ total_projects: components["schemas"]["WorkspaceInsightsStat"];
5677
+ /** @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. */
5678
+ workspace_members: components["schemas"]["WorkspaceInsightsStat"];
5497
5679
  };
5498
- V1WorkspaceMember: {
5680
+ WorkspaceMember: {
5499
5681
  /**
5500
- * @description User display name as stored on the membership.
5682
+ * @description Member display name in this workspace. Omitted when unavailable.
5501
5683
  * @example Jane Cooper
5502
5684
  */
5503
5685
  display_name?: string;
5504
5686
  /**
5505
- * @description Member email as stored on the membership. For pending invites this is the invited email. May be absent on legacy membership rows.
5687
+ * @description Member email address in this workspace. For pending invitations, this is the invited address. Omitted when unavailable.
5506
5688
  * @example jane.cooper@acme.com
5507
5689
  */
5508
5690
  email?: string;
5509
5691
  /** @description Groups the member belongs to, sorted by group name. Never truncated: a member in many groups returns all of them, so response size scales with group membership. Present whenever the request asks for include=groups, empty for a member in no groups; absent otherwise. */
5510
- groups?: components["schemas"]["V1WorkspaceMemberGroup"][];
5692
+ groups?: components["schemas"]["WorkspaceMemberGroup"][];
5511
5693
  /**
5512
5694
  * Format: date-time
5513
5695
  * @description When the user was invited.
@@ -5522,17 +5704,18 @@ export interface components {
5522
5704
  joined_at?: string;
5523
5705
  /**
5524
5706
  * Format: double
5525
- * @description Explicit monthly credit cap for this member. Absent means no per-member cap is set and the workspace default applies. Visible for yourself; visible for other members only with permission to view member usage.
5707
+ * @description Explicit monthly build-credit limit for this member. When unset, the workspace default applies. Omitted when unset or when the caller lacks permission to view this member's limit. Your own limit is visible to you.
5526
5708
  * @example 500
5527
5709
  */
5528
5710
  monthly_credit_limit?: number;
5529
5711
  /**
5530
- * @description Workspace role. One of: owner, admin, member, viewer, collaborator.
5712
+ * @description Workspace role. More values may be added; clients must tolerate unknown values.
5531
5713
  * @example admin
5714
+ * @enum {string}
5532
5715
  */
5533
- role: string;
5716
+ role: "owner" | "admin" | "member" | "viewer" | "collaborator";
5534
5717
  /**
5535
- * @description Stable opaque identifier for the entry. For active members this is the user ID; for pending invites this is the Spanner-generated membership row id (never an email-derived value).
5718
+ * @description Opaque identifier for this member or invitation. For active members it is the user ID. For pending invitations it identifies the invitation and cannot be used to update a member credit limit.
5536
5719
  * @example Xy7Kd2Lm9Qp4Rt6Vw8Zc1Bn3Fh5
5537
5720
  */
5538
5721
  user_id: string;
@@ -5542,7 +5725,7 @@ export interface components {
5542
5725
  */
5543
5726
  workspace_id: string;
5544
5727
  };
5545
- V1WorkspaceMemberGroup: {
5728
+ WorkspaceMemberGroup: {
5546
5729
  /**
5547
5730
  * @description Group ID, as returned by GET /v1/workspaces/{workspace_id}/groups.
5548
5731
  * @example engineering_workspace_01jw3k9m2xq8r5v0c7d4e6f2gh
@@ -5554,37 +5737,38 @@ export interface components {
5554
5737
  */
5555
5738
  name: string;
5556
5739
  };
5557
- V1WorkspaceSettingsBody: {
5740
+ WorkspaceSettings: {
5558
5741
  /**
5559
5742
  * Format: date-time
5560
- * @description End of the current billing period.
5743
+ * @description Exclusive end of the current billing period. Omitted when no billing period is recorded or when the caller lacks permission to view workspace usage.
5561
5744
  * @example 2026-02-01T00:00:00Z
5562
5745
  */
5563
5746
  billing_period_end_date?: string;
5564
5747
  /**
5565
5748
  * Format: date-time
5566
- * @description Start of the current billing period.
5749
+ * @description Inclusive start of the current billing period. Omitted when no billing period is recorded or when the caller lacks permission to view workspace usage.
5567
5750
  * @example 2026-01-01T00:00:00Z
5568
5751
  */
5569
5752
  billing_period_start_date?: string;
5570
5753
  /**
5571
5754
  * Format: double
5572
- * @description Default monthly credit cap applied to each member who has no explicit per-member limit. Absent when unset (members are bounded only by the workspace balance) or when the caller lacks permission to view workspace usage.
5755
+ * @description Default monthly build-credit limit for members without an explicit per-member limit. Omitted when unset or when the caller lacks permission to view workspace usage. Active higher temporary limits can override it.
5573
5756
  * @example 500
5574
5757
  */
5575
5758
  default_monthly_member_credit_limit?: number;
5576
5759
  /**
5577
- * @description Default visibility applied to new projects. One of: public, private, draft. Absent means the workspace effective default of private.
5760
+ * @description Default editor sharing for new projects, separate from published app access. New projects follow workspace roles unless the setting restricts access to project and workspace owners and explicit sharing grants, and the plan supports that restriction. Unsupported or omitted settings fall back to workspace roles. More values may be added; clients must tolerate unknown values.
5578
5761
  * @example private
5762
+ * @enum {string}
5579
5763
  */
5580
- default_project_visibility?: string;
5764
+ default_project_visibility?: "draft" | "private" | "workspace_view" | "public";
5581
5765
  /**
5582
- * @description Whether PII scanning is enabled across project resources.
5766
+ * @description Whether scanning for personally identifiable information (PII), such as names and email addresses, is enabled for workspace projects.
5583
5767
  * @example true
5584
5768
  */
5585
5769
  enable_pii: boolean;
5586
5770
  /**
5587
- * @description Whether SSO is enforced for all members.
5771
+ * @description Whether workspace members are required to sign in through single sign-on (SSO).
5588
5772
  * @example true
5589
5773
  */
5590
5774
  enforce_sso: boolean;
@@ -5600,20 +5784,22 @@ export interface components {
5600
5784
  name: string;
5601
5785
  /**
5602
5786
  * Format: int64
5603
- * @description Workspace-specific seat limit when one has been explicitly configured. Absent when the workspace runs on its plan's default (Enterprise workspaces are typically unlimited unless a per-tenant cap is set).
5787
+ * @description Configured maximum number of workspace seats. Omitted when no positive workspace-specific seat limit is configured or when the caller lacks permission to view workspace usage.
5604
5788
  * @example 25
5605
5789
  */
5606
5790
  num_seats?: number;
5607
5791
  /**
5608
- * @description Plan tier. One of: free, pro, business, enterprise. More values may be added; clients must tolerate unknown values.
5792
+ * @description Plan tier. More values may be added; clients must tolerate unknown values.
5609
5793
  * @example enterprise
5794
+ * @enum {string}
5610
5795
  */
5611
- plan: string;
5796
+ plan: "free" | "pro" | "business" | "enterprise";
5612
5797
  /**
5613
- * @description Restriction on what publish audiences are allowed: org_only, workspace_only, or disabled. Absent means no restriction.
5798
+ * @description Policy limiting who can view published apps or preventing publishing altogether. Omitted when no audience restriction is configured. More values may be added; clients must tolerate unknown values.
5614
5799
  * @example workspace_only
5800
+ * @enum {string}
5615
5801
  */
5616
- publishing_policy?: string;
5802
+ publishing_policy?: "org_only" | "workspace_only" | "disabled";
5617
5803
  };
5618
5804
  V1WorkspaceSkillDTO: {
5619
5805
  /** @description Short description from SKILL.md frontmatter */
@@ -5631,7 +5817,7 @@ export interface components {
5631
5817
  };
5632
5818
  V1WorkspaceUsageBreakdownBody: {
5633
5819
  /** @description The calendar month that each row's total_credits_used_in_billing_period covers. */
5634
- billing_period: components["schemas"]["V1BillingPeriod"];
5820
+ billing_period: components["schemas"]["BillingPeriod"];
5635
5821
  /** @description Items in this page. */
5636
5822
  data: components["schemas"]["V1WorkspaceUsageBreakdownEntry"][] | null;
5637
5823
  /**
@@ -5639,7 +5825,7 @@ export interface components {
5639
5825
  * @description Total matching members across all pages.
5640
5826
  */
5641
5827
  member_count: number;
5642
- /** @description Pagination cursors for fetching adjacent pages. */
5828
+ /** @description Whether more results are available and the cursor to fetch the next page. */
5643
5829
  pagination: components["schemas"]["Pagination"];
5644
5830
  };
5645
5831
  V1WorkspaceUsageBreakdownEntry: {
@@ -5667,7 +5853,7 @@ export interface components {
5667
5853
  /** @description User ID, or pending-invite ID for unaccepted invitations. */
5668
5854
  user_id: string;
5669
5855
  };
5670
- V1WorkspaceUsageConnectorBreakdown: {
5856
+ ConnectorUsage: {
5671
5857
  /**
5672
5858
  * Format: double
5673
5859
  * @description Credits attributed to this connector in the bucket.
@@ -5678,7 +5864,7 @@ export interface components {
5678
5864
  /** @description Display label for the connector. */
5679
5865
  label: string;
5680
5866
  };
5681
- V1WorkspaceUsageDatabaseBreakdown: {
5867
+ DatabaseUsage: {
5682
5868
  /**
5683
5869
  * Format: double
5684
5870
  * @description Credits attributed to this database subcategory in the bucket.
@@ -5697,7 +5883,7 @@ export interface components {
5697
5883
  */
5698
5884
  label: string;
5699
5885
  };
5700
- V1WorkspaceUsageGatewayModel: {
5886
+ GatewayModelUsage: {
5701
5887
  /**
5702
5888
  * Format: double
5703
5889
  * @description Credits attributed to this model in the bucket.
@@ -5789,7 +5975,7 @@ export interface components {
5789
5975
  * @description Number of projects with usage in the window.
5790
5976
  */
5791
5977
  entity_count: number;
5792
- /** @description Pagination cursors for fetching adjacent pages. */
5978
+ /** @description Whether more results are available and the cursor to fetch the next page. */
5793
5979
  pagination: components["schemas"]["Pagination"];
5794
5980
  /** @description The resolved window these rows cover, echoed so callers can see the dates the server applied. */
5795
5981
  period: components["schemas"]["V1UsagePeriod"];
@@ -5802,7 +5988,7 @@ export interface components {
5802
5988
  V1WorkspaceUsageTimeseriesBody: {
5803
5989
  /** @description Items in this page. */
5804
5990
  data: components["schemas"]["V1WorkspaceUsageTimeseriesBucket"][] | null;
5805
- /** @description Pagination cursors for fetching adjacent pages. */
5991
+ /** @description Whether more results are available and the cursor to fetch the next page. */
5806
5992
  pagination: components["schemas"]["Pagination"];
5807
5993
  /** @description The resolved window these buckets cover, echoed so callers can see the dates and granularity the server applied. */
5808
5994
  period: components["schemas"]["V1UsagePeriod"];
@@ -5824,14 +6010,14 @@ export interface components {
5824
6010
  */
5825
6011
  connectors: number;
5826
6012
  /** @description Per-connector breakdown for the bucket. */
5827
- connectors_breakdown: components["schemas"]["V1WorkspaceUsageConnectorBreakdown"][] | null;
6013
+ connectors_breakdown: components["schemas"]["ConnectorUsage"][] | null;
5828
6014
  /**
5829
6015
  * Format: double
5830
6016
  * @description Database credits.
5831
6017
  */
5832
6018
  database: number;
5833
6019
  /** @description Database server/storage breakdown for the bucket. */
5834
- database_breakdown: components["schemas"]["V1WorkspaceUsageDatabaseBreakdown"][] | null;
6020
+ database_breakdown: components["schemas"]["DatabaseUsage"][] | null;
5835
6021
  /**
5836
6022
  * Format: double
5837
6023
  * @description Compute credits from functions and workers.
@@ -5843,7 +6029,7 @@ export interface components {
5843
6029
  */
5844
6030
  gateway: number;
5845
6031
  /** @description Per-model AI Gateway breakdown for the bucket. */
5846
- gateway_models: components["schemas"]["V1WorkspaceUsageGatewayModel"][] | null;
6032
+ gateway_models: components["schemas"]["GatewayModelUsage"][] | null;
5847
6033
  /**
5848
6034
  * Format: double
5849
6035
  * @description Network data-transfer credits.
@@ -5895,8 +6081,8 @@ export interface components {
5895
6081
  previous_visibility?: "public" | "private" | "draft" | "workspace_view";
5896
6082
  project_id: string;
5897
6083
  };
5898
- WorkspaceAnalyticsResponse: {
5899
- /** @description Workspace-wide time-series metrics aggregated across all projects. */
6084
+ WorkspaceAnalytics: {
6085
+ /** @description Website traffic metrics for the workspace, including historical traffic from projects that have since been deleted. */
5900
6086
  timeSeries: components["schemas"]["TimeSeriesGroup"];
5901
6087
  };
5902
6088
  };
@@ -5964,7 +6150,7 @@ export interface operations {
5964
6150
  [name: string]: unknown;
5965
6151
  };
5966
6152
  content: {
5967
- "application/json": components["schemas"]["ProjectTrendResponse"];
6153
+ "application/json": components["schemas"]["AnalyticsTrend"];
5968
6154
  };
5969
6155
  };
5970
6156
  /** @description Error */
@@ -5983,9 +6169,9 @@ export interface operations {
5983
6169
  query: {
5984
6170
  /** @description Workspace ID */
5985
6171
  workspace_id: string;
5986
- /** @description Maximum results per page. */
6172
+ /** @description Maximum number of items to return per page. */
5987
6173
  limit?: number;
5988
- /** @description Opaque cursor returned by a previous page; omit for the first page. */
6174
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
5989
6175
  cursor?: string;
5990
6176
  /** @description Comma-separated audit-log action filter (exact match, e.g. workspace.member.added). */
5991
6177
  actions?: string;
@@ -5995,9 +6181,9 @@ export interface operations {
5995
6181
  target_ids?: string;
5996
6182
  /** @description Token-based search on target_id and target_display_name. Minimum 3 characters. */
5997
6183
  search?: string;
5998
- /** @description RFC3339 inclusive start of the time range. Defaults to 30 days ago. When paginating with cursor, pass an explicit start_date so the default lower bound does not drift between pages. */
6184
+ /** @description RFC3339 inclusive start of the time range. Defaults to 30 days ago. Entries are retained for 13 weeks; on /v1beta/workspaces/{workspace_id}/audit-logs an older start_date is clamped to 13 weeks ago when end_date is omitted. When paginating with cursor, pass an explicit start_date so the default lower bound does not drift between pages. */
5999
6185
  start_date?: string;
6000
- /** @description RFC3339 inclusive end of the time range. Defaults to now. */
6186
+ /** @description RFC3339 inclusive end of the time range. Defaults to now. On /v1beta/workspaces/{workspace_id}/audit-logs an explicit end_date must be at most 13 weeks after start_date. */
6001
6187
  end_date?: string;
6002
6188
  };
6003
6189
  header?: never;
@@ -6031,9 +6217,9 @@ export interface operations {
6031
6217
  query: {
6032
6218
  /** @description Project ID */
6033
6219
  project_id: string;
6034
- /** @description Maximum number of items to return */
6220
+ /** @description Maximum number of items to return per page. */
6035
6221
  limit?: number;
6036
- /** @description Opaque pagination cursor returned by the previous page */
6222
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
6037
6223
  cursor?: string;
6038
6224
  };
6039
6225
  header?: never;
@@ -6048,7 +6234,7 @@ export interface operations {
6048
6234
  [name: string]: unknown;
6049
6235
  };
6050
6236
  content: {
6051
- "application/json": components["schemas"]["CursorListResponseV1ProjectCollaborator"];
6237
+ "application/json": components["schemas"]["ProjectCollaboratorPage"];
6052
6238
  };
6053
6239
  };
6054
6240
  /** @description Error */
@@ -6071,9 +6257,9 @@ export interface operations {
6071
6257
  type?: string;
6072
6258
  /** @description Optional status filter. For seamless and app-user connectors, connected matches workspace-enabled connectors. */
6073
6259
  status?: "connected";
6074
- /** @description Maximum number of items to return */
6260
+ /** @description Maximum number of items to return per page. */
6075
6261
  limit?: number;
6076
- /** @description Opaque pagination cursor returned by the previous page */
6262
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
6077
6263
  cursor?: string;
6078
6264
  };
6079
6265
  header?: never;
@@ -6109,9 +6295,9 @@ export interface operations {
6109
6295
  workspace_id: string;
6110
6296
  /** @description Filter to one or more event types. Repeat to include multiple; omit for all. */
6111
6297
  event_type?: ("granted" | "expired" | "adjustment" | "converted")[] | null;
6112
- /** @description Maximum number of items to return */
6298
+ /** @description Maximum number of items to return per page. */
6113
6299
  limit?: number;
6114
- /** @description Opaque pagination cursor returned by the previous page */
6300
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
6115
6301
  cursor?: string;
6116
6302
  };
6117
6303
  header?: never;
@@ -6126,7 +6312,7 @@ export interface operations {
6126
6312
  [name: string]: unknown;
6127
6313
  };
6128
6314
  content: {
6129
- "application/json": components["schemas"]["V1WorkspaceCreditHistoryBody"];
6315
+ "application/json": components["schemas"]["CreditHistoryPage"];
6130
6316
  };
6131
6317
  };
6132
6318
  /** @description Error */
@@ -6158,7 +6344,7 @@ export interface operations {
6158
6344
  [name: string]: unknown;
6159
6345
  };
6160
6346
  content: {
6161
- "application/json": components["schemas"]["V1WorkspaceCreditsBody"];
6347
+ "application/json": components["schemas"]["CreditBalance"];
6162
6348
  };
6163
6349
  };
6164
6350
  /** @description Error */
@@ -6384,9 +6570,9 @@ export interface operations {
6384
6570
  project_id: string;
6385
6571
  /** @description Git ref (commit SHA, branch, or tag). Defaults to the latest ref. */
6386
6572
  ref?: string;
6387
- /** @description Maximum number of items to return */
6573
+ /** @description Maximum number of items to return per page. */
6388
6574
  limit?: number;
6389
- /** @description Opaque pagination cursor returned by the previous page */
6575
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
6390
6576
  cursor?: string;
6391
6577
  };
6392
6578
  header?: never;
@@ -6518,7 +6704,7 @@ export interface operations {
6518
6704
  };
6519
6705
  };
6520
6706
  };
6521
- "get-v1-me": {
6707
+ getMe: {
6522
6708
  parameters: {
6523
6709
  query?: never;
6524
6710
  header?: never;
@@ -6533,7 +6719,7 @@ export interface operations {
6533
6719
  [name: string]: unknown;
6534
6720
  };
6535
6721
  content: {
6536
- "application/json": components["schemas"]["GetMeOutputBody"];
6722
+ "application/json": components["schemas"]["CurrentUser"];
6537
6723
  };
6538
6724
  };
6539
6725
  /** @description Error */
@@ -6552,23 +6738,23 @@ export interface operations {
6552
6738
  query: {
6553
6739
  /** @description Workspace ID */
6554
6740
  workspace_id: string;
6555
- /** @description Maximum results per page. */
6741
+ /** @description Maximum number of items to return per page. */
6556
6742
  limit?: number;
6557
- /** @description Opaque cursor from a prior response. Omit on the first page. */
6743
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
6558
6744
  cursor?: string;
6559
- /** @description Substring filter applied to display name, username, and email tokens (matching the workspace member search backend). */
6745
+ /** @description Search by display name, username, or email. Each search term of at least 3 characters must match at least one of these fields; shorter terms are ignored. */
6560
6746
  query?: string;
6561
- /** @description Comma-separated role filter. Valid values: owner, admin, member, viewer, collaborator. Empty = all roles. Unknown values return 400. */
6747
+ /** @description Comma-separated workspace role filter. Omit to include every role. Unknown roles return 400. */
6562
6748
  roles?: string;
6563
- /** @description Filter by membership status. Default 'active' excludes pending invites. */
6749
+ /** @description Filter by membership status. Pending invites are excluded by default. */
6564
6750
  status?: "all" | "active" | "pending";
6565
- /** @description Sort field. Defaults to relevance when query is set, otherwise role + recency. */
6751
+ /** @description Sort field. With a search query, results default to best matches first. Otherwise, members are ordered by role precedence, then most recently joined or invited. */
6566
6752
  sort_by?: "name" | "joined_at" | "role" | "relevance";
6567
- /** @description Sort direction. Only applied when sort_by is set; the default-sort case has a fixed direction baked into the underlying query. */
6753
+ /** @description Direction for an explicit sort field. Defaults to descending. Ignored for the default order and relevance sorting. */
6568
6754
  sort_order?: "asc" | "desc";
6569
- /** @description Filter by SCIM provisioning status. Empty = all members, 'managed' = only SCIM-provisioned members, 'unmanaged' = only members not managed by SCIM. */
6755
+ /** @description Filter by identity-provider provisioning through SCIM (System for Cross-domain Identity Management). Omit to include members regardless of provisioning method. */
6570
6756
  scim_managed?: "managed" | "unmanaged";
6571
- /** @description Comma-separated optional expansions. Valid values: groups. Unknown values return 400, but a misspelled parameter *name* is ignored rather than rejected (the response carries X-Lovable-Unknown-Query-Params), so check the header if an expansion you asked for is missing. Expansions cost extra reads, so each response field is absent unless asked for. */
6757
+ /** @description Optional additional member details. Set include=groups to include group memberships; otherwise groups is omitted. Unknown values return 400. Unrecognized query parameter names on any endpoint are ignored and listed in the X-Lovable-Unknown-Query-Params response header. */
6572
6758
  include?: string;
6573
6759
  };
6574
6760
  header?: never;
@@ -6583,7 +6769,7 @@ export interface operations {
6583
6769
  [name: string]: unknown;
6584
6770
  };
6585
6771
  content: {
6586
- "application/json": components["schemas"]["CursorListResponseV1WorkspaceMember"];
6772
+ "application/json": components["schemas"]["WorkspaceMemberPage"];
6587
6773
  };
6588
6774
  };
6589
6775
  /** @description Error */
@@ -6652,7 +6838,7 @@ export interface operations {
6652
6838
  [name: string]: unknown;
6653
6839
  };
6654
6840
  content: {
6655
- "application/json": components["schemas"]["V1WorkspaceMember"];
6841
+ "application/json": components["schemas"]["WorkspaceMember"];
6656
6842
  };
6657
6843
  };
6658
6844
  /** @description Error */
@@ -6832,9 +7018,9 @@ export interface operations {
6832
7018
  query: {
6833
7019
  /** @description Project ID */
6834
7020
  project_id: string;
6835
- /** @description Page size */
7021
+ /** @description Maximum number of items to return per page. */
6836
7022
  limit?: number;
6837
- /** @description Opaque cursor returned by a previous page; omit for the first page */
7023
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
6838
7024
  cursor?: string;
6839
7025
  };
6840
7026
  header?: never;
@@ -6896,33 +7082,29 @@ export interface operations {
6896
7082
  };
6897
7083
  };
6898
7084
  };
6899
- "get-v1-projects": {
7085
+ listProjects: {
6900
7086
  parameters: {
6901
7087
  query: {
6902
7088
  /** @description Workspace ID */
6903
7089
  workspace_id: string;
6904
- /** @description Filter by project creator user ID */
7090
+ /** @description Filter by project owner user ID */
6905
7091
  user_id?: string;
6906
- /** @description Filter by visibility */
7092
+ /** @description Filter projects by editor-sharing scope. Omit to include every scope you can access. */
6907
7093
  visibility?: "personal" | "workspace" | "public" | "all";
6908
- /** @description Filter by publish status */
7094
+ /** @description Filter by publication state and audience. Audience-specific filters require an explicit app-access setting; projects without one remain in the broader publication-state results. Omit to include every state. */
6909
7095
  publish_status?: "any" | "published" | "internal" | "external" | "not_published";
6910
7096
  /** @description Filter by folder ID */
6911
7097
  folder_id?: string;
6912
- /** @description Filter by multiple folder IDs (comma-separated, takes precedence over folder_id) */
6913
- folder_ids?: string;
6914
- /** @description Filter by project type. library returns design-system libraries; template returns non-library templates. */
7098
+ /** @description Filter by project type. Design-system libraries and reusable templates exclude personal drafts unless the sharing filter selects them. Omit to include every type. */
6915
7099
  type?: "" | "project" | "library" | "template" | "all";
6916
- /** @description Search query */
7100
+ /** @description Search project names, generated descriptions, and owner names or email addresses. Terms shorter than 3 characters are ignored. */
6917
7101
  query?: string;
6918
- /** @description Maximum number of projects to return */
7102
+ /** @description Maximum number of items to return per page. */
6919
7103
  limit?: number;
6920
- /** @description Opaque pagination cursor returned by the previous page */
7104
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
6921
7105
  cursor?: string;
6922
7106
  /** @description Only return projects viewed by the current user */
6923
7107
  viewed_by_me?: boolean;
6924
- /** @description Which fields to search: empty for all (default), 'name' for project name only */
6925
- search_fields?: "" | "name";
6926
7108
  };
6927
7109
  header?: never;
6928
7110
  path?: never;
@@ -6936,7 +7118,7 @@ export interface operations {
6936
7118
  [name: string]: unknown;
6937
7119
  };
6938
7120
  content: {
6939
- "application/json": components["schemas"]["CursorListResponsePublicV1ProjectListItem"];
7121
+ "application/json": components["schemas"]["ProjectSummaryPage"];
6940
7122
  };
6941
7123
  };
6942
7124
  /** @description Error */
@@ -6963,7 +7145,7 @@ export interface operations {
6963
7145
  };
6964
7146
  };
6965
7147
  responses: {
6966
- /** @description OK */
7148
+ /** @description Not returned by current servers; retained from an earlier published contract. Treat like 201. */
6967
7149
  200: {
6968
7150
  headers: {
6969
7151
  [name: string]: unknown;
@@ -6972,7 +7154,7 @@ export interface operations {
6972
7154
  "application/json": components["schemas"]["PublicV1CreateProjectResponse"];
6973
7155
  };
6974
7156
  };
6975
- /** @description Created */
7157
+ /** @description Project created. The body is the new project; message_id is present when initial_message was given. Location points at the project. */
6976
7158
  201: {
6977
7159
  headers: {
6978
7160
  Location?: string;
@@ -6982,7 +7164,7 @@ export interface operations {
6982
7164
  "application/json": components["schemas"]["PublicV1CreateProjectResponse"];
6983
7165
  };
6984
7166
  };
6985
- /** @description Accepted */
7167
+ /** @description Remix accepted. The body carries job_id only; poll GET /v1/remix-jobs/{job_id} (the Location header) for progress. */
6986
7168
  202: {
6987
7169
  headers: {
6988
7170
  Location?: string;
@@ -7003,7 +7185,7 @@ export interface operations {
7003
7185
  };
7004
7186
  };
7005
7187
  };
7006
- "get-v1-projects-project_id": {
7188
+ getProject: {
7007
7189
  parameters: {
7008
7190
  query?: never;
7009
7191
  header?: never;
@@ -7021,7 +7203,7 @@ export interface operations {
7021
7203
  [name: string]: unknown;
7022
7204
  };
7023
7205
  content: {
7024
- "application/json": components["schemas"]["V1ProjectResponse"];
7206
+ "application/json": components["schemas"]["Project"];
7025
7207
  };
7026
7208
  };
7027
7209
  /** @description Error */
@@ -7035,7 +7217,7 @@ export interface operations {
7035
7217
  };
7036
7218
  };
7037
7219
  };
7038
- "delete-v1-projects-project_id": {
7220
+ deleteProject: {
7039
7221
  parameters: {
7040
7222
  query?: never;
7041
7223
  header?: never;
@@ -7065,7 +7247,7 @@ export interface operations {
7065
7247
  };
7066
7248
  };
7067
7249
  };
7068
- "patch-v1-projects-project_id": {
7250
+ updateProject: {
7069
7251
  parameters: {
7070
7252
  query?: never;
7071
7253
  header?: never;
@@ -7077,7 +7259,7 @@ export interface operations {
7077
7259
  };
7078
7260
  requestBody: {
7079
7261
  content: {
7080
- "application/json": components["schemas"]["PublicV1PatchProjectBody"];
7262
+ "application/json": components["schemas"]["UpdateProjectRequest"];
7081
7263
  };
7082
7264
  };
7083
7265
  responses: {
@@ -7087,7 +7269,7 @@ export interface operations {
7087
7269
  [name: string]: unknown;
7088
7270
  };
7089
7271
  content: {
7090
- "application/json": components["schemas"]["V1ProjectResponse"];
7272
+ "application/json": components["schemas"]["Project"];
7091
7273
  };
7092
7274
  };
7093
7275
  /** @description Error */
@@ -7101,16 +7283,16 @@ export interface operations {
7101
7283
  };
7102
7284
  };
7103
7285
  };
7104
- "get-v1-projects-project_id-analytics": {
7286
+ getProjectAnalytics: {
7105
7287
  parameters: {
7106
7288
  query?: {
7107
- /** @description historical returns the time series and breakdowns for the requested date range; trend returns the real-time visitor trend for the last 30 minutes. */
7289
+ /** @description Select date-range analytics or the real-time visitor series for the last 30 minutes. */
7108
7290
  series?: "historical" | "trend";
7109
- /** @description Start date in RFC 3339 format (e.g. 2026-04-01T00:00:00Z). Required when series=historical. */
7291
+ /** @description Start of the date range in RFC 3339 format using UTC timestamps ending in Z (e.g. 2026-04-01T00:00:00Z). Required when series=historical (the default); ignored when series=trend. */
7110
7292
  start_date?: string;
7111
- /** @description End date in RFC 3339 format (e.g. 2026-04-08T00:00:00Z). Required when series=historical. */
7293
+ /** @description End of the date range in RFC 3339 format using UTC timestamps ending in Z (e.g. 2026-04-08T00:00:00Z). Required when series=historical (the default); ignored when series=trend. */
7112
7294
  end_date?: string;
7113
- /** @description Time bucket size for series=historical: hourly or daily (default: daily). */
7295
+ /** @description Time-bucket size for date-range analytics. Daily buckets include complete calendar dates from start_date through end_date; hourly buckets use the supplied times inclusively and support at most 31 days. Defaults to daily buckets. Ignored for real-time visitor data. */
7114
7296
  granularity?: string;
7115
7297
  };
7116
7298
  header?: never;
@@ -7128,7 +7310,7 @@ export interface operations {
7128
7310
  [name: string]: unknown;
7129
7311
  };
7130
7312
  content: {
7131
- "application/json": components["schemas"]["PublicV1ProjectAnalyticsBody"];
7313
+ "application/json": components["schemas"]["ProjectAnalytics"];
7132
7314
  };
7133
7315
  };
7134
7316
  /** @description Error */
@@ -7160,7 +7342,7 @@ export interface operations {
7160
7342
  [name: string]: unknown;
7161
7343
  };
7162
7344
  content: {
7163
- "application/json": components["schemas"]["ProjectTrendResponse"];
7345
+ "application/json": components["schemas"]["AnalyticsTrend"];
7164
7346
  };
7165
7347
  };
7166
7348
  /** @description Error */
@@ -7174,12 +7356,12 @@ export interface operations {
7174
7356
  };
7175
7357
  };
7176
7358
  };
7177
- "get-v1-projects-project_id-collaborators": {
7359
+ listProjectCollaborators: {
7178
7360
  parameters: {
7179
7361
  query?: {
7180
- /** @description Maximum number of items to return */
7362
+ /** @description Maximum number of items to return per page. */
7181
7363
  limit?: number;
7182
- /** @description Opaque pagination cursor returned by the previous page */
7364
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
7183
7365
  cursor?: string;
7184
7366
  };
7185
7367
  header?: never;
@@ -7197,7 +7379,7 @@ export interface operations {
7197
7379
  [name: string]: unknown;
7198
7380
  };
7199
7381
  content: {
7200
- "application/json": components["schemas"]["CursorListResponseV1ProjectCollaborator"];
7382
+ "application/json": components["schemas"]["ProjectCollaboratorPage"];
7201
7383
  };
7202
7384
  };
7203
7385
  /** @description Error */
@@ -7348,7 +7530,7 @@ export interface operations {
7348
7530
  };
7349
7531
  };
7350
7532
  };
7351
- "post-v1-projects-project_id-embed-url": {
7533
+ createEmbedUrl: {
7352
7534
  parameters: {
7353
7535
  query?: never;
7354
7536
  header?: never;
@@ -7360,17 +7542,17 @@ export interface operations {
7360
7542
  };
7361
7543
  requestBody: {
7362
7544
  content: {
7363
- "application/json": components["schemas"]["V1CreateEmbedURLInputBody"];
7545
+ "application/json": components["schemas"]["CreateEmbedURLRequest"];
7364
7546
  };
7365
7547
  };
7366
7548
  responses: {
7367
- /** @description OK */
7549
+ /** @description Embed URL created. The token expires after one hour. */
7368
7550
  200: {
7369
7551
  headers: {
7370
7552
  [name: string]: unknown;
7371
7553
  };
7372
7554
  content: {
7373
- "application/json": components["schemas"]["V1CreateEmbedURLOutputBody"];
7555
+ "application/json": components["schemas"]["CreateEmbedURLResponse"];
7374
7556
  };
7375
7557
  };
7376
7558
  /** @description Error */
@@ -7716,12 +7898,12 @@ export interface operations {
7716
7898
  };
7717
7899
  };
7718
7900
  };
7719
- "get-v1-projects-project_id-pii-labels": {
7901
+ listPiiLabels: {
7720
7902
  parameters: {
7721
7903
  query?: {
7722
- /** @description Page size */
7904
+ /** @description Maximum number of items to return per page. */
7723
7905
  limit?: number;
7724
- /** @description Opaque cursor returned by a previous page; omit for the first page */
7906
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
7725
7907
  cursor?: string;
7726
7908
  };
7727
7909
  header?: never;
@@ -7739,7 +7921,7 @@ export interface operations {
7739
7921
  [name: string]: unknown;
7740
7922
  };
7741
7923
  content: {
7742
- "application/json": components["schemas"]["CursorListResponseProjectPIIFindingDTO"];
7924
+ "application/json": components["schemas"]["PiiLabelPage"];
7743
7925
  };
7744
7926
  };
7745
7927
  /** @description Error */
@@ -7753,7 +7935,7 @@ export interface operations {
7753
7935
  };
7754
7936
  };
7755
7937
  };
7756
- "post-v1-projects-project_id-publish": {
7938
+ publishProject: {
7757
7939
  parameters: {
7758
7940
  query?: never;
7759
7941
  header?: never;
@@ -7765,26 +7947,18 @@ export interface operations {
7765
7947
  };
7766
7948
  requestBody: {
7767
7949
  content: {
7768
- "application/json": components["schemas"]["PublicV1PublishProjectInputBody"];
7950
+ "application/json": components["schemas"]["PublishProjectRequest"];
7769
7951
  };
7770
7952
  };
7771
7953
  responses: {
7772
- /** @description OK */
7773
- 200: {
7774
- headers: {
7775
- [name: string]: unknown;
7776
- };
7777
- content: {
7778
- "application/json": components["schemas"]["PublicV1PublishProjectResponse"];
7779
- };
7780
- };
7781
- /** @description Accepted */
7954
+ /** @description Deployment started. Poll GET /v1/projects/{project_id}/publish/{deployment_id} (the Location header) with the returned deployment_id until deployment finishes. */
7782
7955
  202: {
7783
7956
  headers: {
7957
+ Location?: string;
7784
7958
  [name: string]: unknown;
7785
7959
  };
7786
7960
  content: {
7787
- "application/json": components["schemas"]["PublicV1PublishProjectResponse"];
7961
+ "application/json": components["schemas"]["PublishProjectResponse"];
7788
7962
  };
7789
7963
  };
7790
7964
  /** @description Error */
@@ -7798,7 +7972,7 @@ export interface operations {
7798
7972
  };
7799
7973
  };
7800
7974
  };
7801
- "patch-v1-projects-project_id-publish": {
7975
+ updatePublishSettings: {
7802
7976
  parameters: {
7803
7977
  query?: never;
7804
7978
  header?: never;
@@ -7810,7 +7984,7 @@ export interface operations {
7810
7984
  };
7811
7985
  requestBody: {
7812
7986
  content: {
7813
- "application/json": components["schemas"]["PublicV1UpdatePublishSettingsInputBody"];
7987
+ "application/json": components["schemas"]["UpdatePublishSettingsRequest"];
7814
7988
  };
7815
7989
  };
7816
7990
  responses: {
@@ -7820,7 +7994,7 @@ export interface operations {
7820
7994
  [name: string]: unknown;
7821
7995
  };
7822
7996
  content: {
7823
- "application/json": components["schemas"]["PublicV1UpdatePublishSettingsResponse"];
7997
+ "application/json": components["schemas"]["PublishSettings"];
7824
7998
  };
7825
7999
  };
7826
8000
  /** @description Error */
@@ -7834,7 +8008,7 @@ export interface operations {
7834
8008
  };
7835
8009
  };
7836
8010
  };
7837
- "get-v1-projects-project_id-publish-deployment_id": {
8011
+ getDeployment: {
7838
8012
  parameters: {
7839
8013
  query?: never;
7840
8014
  header?: never;
@@ -7854,7 +8028,7 @@ export interface operations {
7854
8028
  [name: string]: unknown;
7855
8029
  };
7856
8030
  content: {
7857
- "application/json": components["schemas"]["PublicV1PublishStatusResponse"];
8031
+ "application/json": components["schemas"]["Deployment"];
7858
8032
  };
7859
8033
  };
7860
8034
  /** @description Error */
@@ -7939,12 +8113,12 @@ export interface operations {
7939
8113
  };
7940
8114
  };
7941
8115
  };
7942
- "get-v1-projects-project_id-security-scans": {
8116
+ listSecurityScans: {
7943
8117
  parameters: {
7944
8118
  query?: {
7945
- /** @description Page size (max 100) */
8119
+ /** @description Maximum number of items to return per page. */
7946
8120
  limit?: number;
7947
- /** @description Opaque cursor from a prior response */
8121
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
7948
8122
  cursor?: string;
7949
8123
  };
7950
8124
  header?: never;
@@ -7962,39 +8136,7 @@ export interface operations {
7962
8136
  [name: string]: unknown;
7963
8137
  };
7964
8138
  content: {
7965
- "application/json": components["schemas"]["CursorListResponseV1SecurityScanSummary"];
7966
- };
7967
- };
7968
- /** @description Error */
7969
- default: {
7970
- headers: {
7971
- [name: string]: unknown;
7972
- };
7973
- content: {
7974
- "application/problem+json": components["schemas"]["ErrorModel"];
7975
- };
7976
- };
7977
- };
7978
- };
7979
- "post-v1-projects-project_id-security-scans": {
7980
- parameters: {
7981
- query?: never;
7982
- header?: never;
7983
- path: {
7984
- /** @description Project ID */
7985
- project_id: string;
7986
- };
7987
- cookie?: never;
7988
- };
7989
- requestBody?: never;
7990
- responses: {
7991
- /** @description OK */
7992
- 200: {
7993
- headers: {
7994
- [name: string]: unknown;
7995
- };
7996
- content: {
7997
- "application/json": components["schemas"]["V1TriggerSecurityScanResponseBody"];
8139
+ "application/json": components["schemas"]["SecurityScanPage"];
7998
8140
  };
7999
8141
  };
8000
8142
  /** @description Error */
@@ -8008,14 +8150,14 @@ export interface operations {
8008
8150
  };
8009
8151
  };
8010
8152
  };
8011
- "get-v1-projects-project_id-security-scans-scan_id": {
8153
+ getSecurityScan: {
8012
8154
  parameters: {
8013
8155
  query?: never;
8014
8156
  header?: never;
8015
8157
  path: {
8016
8158
  /** @description Project ID */
8017
8159
  project_id: string;
8018
- /** @description Scan invocation ID from the list endpoint */
8160
+ /** @description Security scan ID returned by the list or trigger endpoint. */
8019
8161
  scan_id: string;
8020
8162
  };
8021
8163
  cookie?: never;
@@ -8028,7 +8170,7 @@ export interface operations {
8028
8170
  [name: string]: unknown;
8029
8171
  };
8030
8172
  content: {
8031
- "application/json": components["schemas"]["V1GetSecurityScanOutputBody"];
8173
+ "application/json": components["schemas"]["SecurityScanDetail"];
8032
8174
  };
8033
8175
  };
8034
8176
  /** @description Error */
@@ -8226,9 +8368,9 @@ export interface operations {
8226
8368
  query: {
8227
8369
  /** @description Project ID */
8228
8370
  project_id: string;
8229
- /** @description Page size (max 100) */
8371
+ /** @description Maximum number of items to return per page. */
8230
8372
  limit?: number;
8231
- /** @description Opaque cursor from a prior response */
8373
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
8232
8374
  cursor?: string;
8233
8375
  };
8234
8376
  header?: never;
@@ -8273,6 +8415,7 @@ export interface operations {
8273
8415
  /** @description OK */
8274
8416
  200: {
8275
8417
  headers: {
8418
+ Location?: string;
8276
8419
  [name: string]: unknown;
8277
8420
  };
8278
8421
  content: {
@@ -8298,7 +8441,7 @@ export interface operations {
8298
8441
  };
8299
8442
  header?: never;
8300
8443
  path: {
8301
- /** @description Scan invocation ID from the list endpoint */
8444
+ /** @description Security scan ID returned by the list or trigger endpoint. */
8302
8445
  scan_id: string;
8303
8446
  };
8304
8447
  cookie?: never;
@@ -8343,7 +8486,7 @@ export interface operations {
8343
8486
  [name: string]: unknown;
8344
8487
  };
8345
8488
  content: {
8346
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
8489
+ "application/json": components["schemas"]["WorkspaceSettings"];
8347
8490
  };
8348
8491
  };
8349
8492
  /** @description Error */
@@ -8376,7 +8519,7 @@ export interface operations {
8376
8519
  [name: string]: unknown;
8377
8520
  };
8378
8521
  content: {
8379
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
8522
+ "application/json": components["schemas"]["WorkspaceSettings"];
8380
8523
  };
8381
8524
  };
8382
8525
  /** @description Error */
@@ -8395,9 +8538,9 @@ export interface operations {
8395
8538
  query: {
8396
8539
  /** @description Project ID */
8397
8540
  project_id: string;
8398
- /** @description Maximum number of items to return */
8541
+ /** @description Maximum number of items to return per page. */
8399
8542
  limit?: number;
8400
- /** @description Opaque pagination cursor returned by the previous page */
8543
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
8401
8544
  cursor?: string;
8402
8545
  };
8403
8546
  header?: never;
@@ -8473,9 +8616,9 @@ export interface operations {
8473
8616
  sort_order?: "asc" | "desc";
8474
8617
  /** @description Membership status filter. Default excludes pending invites since they have no usage yet. */
8475
8618
  status?: "active" | "pending" | "all";
8476
- /** @description Maximum number of items to return */
8619
+ /** @description Maximum number of items to return per page. */
8477
8620
  limit?: number;
8478
- /** @description Opaque pagination cursor returned by the previous page */
8621
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
8479
8622
  cursor?: string;
8480
8623
  };
8481
8624
  header?: never;
@@ -8547,9 +8690,9 @@ export interface operations {
8547
8690
  end_date?: string;
8548
8691
  /** @description Filter credits to All, Build, or Run. */
8549
8692
  category?: "all" | "build" | "run";
8550
- /** @description Maximum number of items to return */
8693
+ /** @description Maximum number of items to return per page. */
8551
8694
  limit?: number;
8552
- /** @description Opaque pagination cursor returned by the previous page */
8695
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
8553
8696
  cursor?: string;
8554
8697
  };
8555
8698
  header?: never;
@@ -8595,9 +8738,9 @@ export interface operations {
8595
8738
  project_id?: string;
8596
8739
  /** @description Optional: restrict the series to a single member's usage. */
8597
8740
  user_id?: string;
8598
- /** @description Maximum number of items to return */
8741
+ /** @description Maximum number of items to return per page. */
8599
8742
  limit?: number;
8600
- /** @description Opaque pagination cursor returned by the previous page */
8743
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
8601
8744
  cursor?: string;
8602
8745
  };
8603
8746
  header?: never;
@@ -8626,12 +8769,12 @@ export interface operations {
8626
8769
  };
8627
8770
  };
8628
8771
  };
8629
- "get-v1-workspaces": {
8772
+ listWorkspaces: {
8630
8773
  parameters: {
8631
8774
  query?: {
8632
- /** @description Maximum number of items to return */
8775
+ /** @description Maximum number of items to return per page. */
8633
8776
  limit?: number;
8634
- /** @description Opaque pagination cursor returned by the previous page */
8777
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
8635
8778
  cursor?: string;
8636
8779
  };
8637
8780
  header?: never;
@@ -8646,7 +8789,7 @@ export interface operations {
8646
8789
  [name: string]: unknown;
8647
8790
  };
8648
8791
  content: {
8649
- "application/json": components["schemas"]["V1ListWorkspacesBody"];
8792
+ "application/json": components["schemas"]["WorkspacePage"];
8650
8793
  };
8651
8794
  };
8652
8795
  /** @description Error */
@@ -8660,7 +8803,7 @@ export interface operations {
8660
8803
  };
8661
8804
  };
8662
8805
  };
8663
- "get-v1-workspaces-workspace_id": {
8806
+ getWorkspace: {
8664
8807
  parameters: {
8665
8808
  query?: never;
8666
8809
  header?: never;
@@ -8678,7 +8821,7 @@ export interface operations {
8678
8821
  [name: string]: unknown;
8679
8822
  };
8680
8823
  content: {
8681
- "application/json": components["schemas"]["PublicV1GetWorkspaceBody"];
8824
+ "application/json": components["schemas"]["GetWorkspaceResponse"];
8682
8825
  };
8683
8826
  };
8684
8827
  /** @description Error */
@@ -8692,14 +8835,20 @@ export interface operations {
8692
8835
  };
8693
8836
  };
8694
8837
  };
8695
- "get-v1-workspaces-workspace_id-analytics": {
8838
+ getWorkspaceAnalytics: {
8696
8839
  parameters: {
8697
- query?: {
8698
- /** @description Start date in RFC 3339 format (e.g. 2026-07-01T00:00:00Z). Required. */
8699
- start_date?: string;
8700
- /** @description End date in RFC 3339 format (e.g. 2026-07-08T00:00:00Z). Required. */
8701
- end_date?: string;
8702
- /** @description Time bucket size: hourly or daily (default: daily) */
8840
+ query: {
8841
+ /**
8842
+ * @description Required start of the date range in RFC 3339 format. Use a UTC timestamp ending in Z, such as 2026-07-01T00:00:00Z.
8843
+ * @example 2026-07-01T00:00:00Z
8844
+ */
8845
+ start_date: string;
8846
+ /**
8847
+ * @description Required end of the date range in RFC 3339 format. Use a UTC timestamp ending in Z, such as 2026-07-08T00:00:00Z.
8848
+ * @example 2026-07-08T00:00:00Z
8849
+ */
8850
+ end_date: string;
8851
+ /** @description Time-bucket size. Whole-date buckets include start_date and end_date; sub-day buckets use the supplied times inclusively and support at most 31 days. */
8703
8852
  granularity?: "hourly" | "daily";
8704
8853
  };
8705
8854
  header?: never;
@@ -8717,7 +8866,7 @@ export interface operations {
8717
8866
  [name: string]: unknown;
8718
8867
  };
8719
8868
  content: {
8720
- "application/json": components["schemas"]["WorkspaceAnalyticsResponse"];
8869
+ "application/json": components["schemas"]["WorkspaceAnalytics"];
8721
8870
  };
8722
8871
  };
8723
8872
  /** @description Error */
@@ -8842,7 +8991,7 @@ export interface operations {
8842
8991
  };
8843
8992
  };
8844
8993
  };
8845
- "get-v1-workspaces-workspace_id-billing-credit-balance": {
8994
+ getCreditBalance: {
8846
8995
  parameters: {
8847
8996
  query?: never;
8848
8997
  header?: never;
@@ -8860,7 +9009,7 @@ export interface operations {
8860
9009
  [name: string]: unknown;
8861
9010
  };
8862
9011
  content: {
8863
- "application/json": components["schemas"]["V1WorkspaceCreditsBody"];
9012
+ "application/json": components["schemas"]["CreditBalance"];
8864
9013
  };
8865
9014
  };
8866
9015
  /** @description Error */
@@ -8874,51 +9023,14 @@ export interface operations {
8874
9023
  };
8875
9024
  };
8876
9025
  };
8877
- "get-v1-workspaces-workspace_id-billing-credit-history": {
9026
+ listCreditHistory: {
8878
9027
  parameters: {
8879
9028
  query?: {
8880
9029
  /** @description Filter to one or more event types. Repeat to include multiple; omit for all. */
8881
9030
  event_type?: ("granted" | "expired" | "adjustment" | "converted")[] | null;
8882
- /** @description Maximum number of items to return */
8883
- limit?: number;
8884
- /** @description Opaque pagination cursor returned by the previous page */
8885
- cursor?: string;
8886
- };
8887
- header?: never;
8888
- path: {
8889
- /** @description Workspace ID */
8890
- workspace_id: string;
8891
- };
8892
- cookie?: never;
8893
- };
8894
- requestBody?: never;
8895
- responses: {
8896
- /** @description OK */
8897
- 200: {
8898
- headers: {
8899
- [name: string]: unknown;
8900
- };
8901
- content: {
8902
- "application/json": components["schemas"]["V1WorkspaceCreditHistoryBody"];
8903
- };
8904
- };
8905
- /** @description Error */
8906
- default: {
8907
- headers: {
8908
- [name: string]: unknown;
8909
- };
8910
- content: {
8911
- "application/problem+json": components["schemas"]["ErrorModel"];
8912
- };
8913
- };
8914
- };
8915
- };
8916
- "get-v1-workspaces-workspace_id-billing-credit-limits": {
8917
- parameters: {
8918
- query?: {
8919
- /** @description Maximum results per page. */
9031
+ /** @description Maximum number of items to return per page. */
8920
9032
  limit?: number;
8921
- /** @description Opaque cursor from a prior response. Omit on the first page. */
9033
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
8922
9034
  cursor?: string;
8923
9035
  };
8924
9036
  header?: never;
@@ -8936,52 +9048,7 @@ export interface operations {
8936
9048
  [name: string]: unknown;
8937
9049
  };
8938
9050
  content: {
8939
- "application/json": components["schemas"]["V1BillingCreditLimitsBody"];
8940
- };
8941
- };
8942
- /** @description Error */
8943
- default: {
8944
- headers: {
8945
- [name: string]: unknown;
8946
- };
8947
- content: {
8948
- "application/problem+json": components["schemas"]["ErrorModel"];
8949
- };
8950
- };
8951
- };
8952
- };
8953
- "post-v1-workspaces-workspace_id-billing-credit-limits": {
8954
- parameters: {
8955
- query?: never;
8956
- header?: never;
8957
- path: {
8958
- /** @description Workspace ID */
8959
- workspace_id: string;
8960
- };
8961
- cookie?: never;
8962
- };
8963
- requestBody: {
8964
- content: {
8965
- "application/json": components["schemas"]["V1BillingBulkSetMemberCreditLimitInputBody"];
8966
- };
8967
- };
8968
- responses: {
8969
- /** @description OK */
8970
- 200: {
8971
- headers: {
8972
- [name: string]: unknown;
8973
- };
8974
- content: {
8975
- "application/json": components["schemas"]["V1BulkSetMemberCreditLimitOutputBody"];
8976
- };
8977
- };
8978
- /** @description Every member failed; same per-member response body as 200 */
8979
- 422: {
8980
- headers: {
8981
- [name: string]: unknown;
8982
- };
8983
- content: {
8984
- "application/json": components["schemas"]["V1BulkSetMemberCreditLimitOutputBody"];
9051
+ "application/json": components["schemas"]["CreditHistoryPage"];
8985
9052
  };
8986
9053
  };
8987
9054
  /** @description Error */
@@ -8995,26 +9062,26 @@ export interface operations {
8995
9062
  };
8996
9063
  };
8997
9064
  };
8998
- "get-v1-workspaces-workspace_id-billing-credit-usage": {
9065
+ getCreditUsage: {
8999
9066
  parameters: {
9000
9067
  query: {
9001
- /** @description Group rows by member or project across the window. Omit for one workspace-wide aggregate row. Cannot be combined with interval. */
9068
+ /** @description Group usage over the requested window. Omit both group_by and interval for one aggregate row. Cannot be combined with interval. */
9002
9069
  group_by?: "member" | "project";
9003
- /** @description Bucket rows by time. Coarser intervals allow a longer window (~400 days at day, ~3 years at week, ~10 years at month). Cannot be combined with group_by. */
9070
+ /** @description Time-bucket size in UTC. Weeks start Monday and months follow the calendar. Maximum windows are 400 days for daily buckets, 1100 days for weekly buckets, and 3660 days for monthly buckets. Cannot be combined with group_by. */
9004
9071
  interval?: "day" | "week" | "month";
9005
9072
  /** @description Required inclusive start (UTC day). */
9006
9073
  start_date: string;
9007
9074
  /** @description Inclusive end (UTC day). Defaults to today (UTC). */
9008
9075
  end_date?: string;
9009
- /** @description Filter credits to All, Build, or Run. */
9076
+ /** @description Filter usage by spend category. App-creation usage covers creating and editing apps in Lovable; deployed-app usage covers services such as AI, compute, storage, and databases. Omit to include both. */
9010
9077
  category?: "all" | "build" | "run";
9011
9078
  /** @description Optional: restrict to a single project's usage. */
9012
9079
  project_id?: string;
9013
9080
  /** @description Optional: restrict to a single member's usage. Pass 'me' for the calling user; queries not restricted to the caller require workspace admin permission. */
9014
9081
  user_id?: string;
9015
- /** @description Maximum number of items to return */
9082
+ /** @description Maximum number of items to return per page. */
9016
9083
  limit?: number;
9017
- /** @description Opaque pagination cursor returned by the previous page */
9084
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
9018
9085
  cursor?: string;
9019
9086
  };
9020
9087
  header?: never;
@@ -9032,7 +9099,7 @@ export interface operations {
9032
9099
  [name: string]: unknown;
9033
9100
  };
9034
9101
  content: {
9035
- "application/json": components["schemas"]["V1BillingUsageBody"];
9102
+ "application/json": components["schemas"]["CreditUsagePage"];
9036
9103
  };
9037
9104
  };
9038
9105
  /** @description Error */
@@ -9064,7 +9131,7 @@ export interface operations {
9064
9131
  [name: string]: unknown;
9065
9132
  };
9066
9133
  content: {
9067
- "application/json": components["schemas"]["V1WorkspaceCreditsBody"];
9134
+ "application/json": components["schemas"]["CreditBalance"];
9068
9135
  };
9069
9136
  };
9070
9137
  /** @description Error */
@@ -9081,23 +9148,23 @@ export interface operations {
9081
9148
  "get-v1-workspaces-workspace_id-billing-usage": {
9082
9149
  parameters: {
9083
9150
  query: {
9084
- /** @description Group rows by member or project across the window. Omit for one workspace-wide aggregate row. Cannot be combined with interval. */
9151
+ /** @description Group usage over the requested window. Omit both group_by and interval for one aggregate row. Cannot be combined with interval. */
9085
9152
  group_by?: "member" | "project";
9086
- /** @description Bucket rows by time. Coarser intervals allow a longer window (~400 days at day, ~3 years at week, ~10 years at month). Cannot be combined with group_by. */
9153
+ /** @description Time-bucket size in UTC. Weeks start Monday and months follow the calendar. Maximum windows are 400 days for daily buckets, 1100 days for weekly buckets, and 3660 days for monthly buckets. Cannot be combined with group_by. */
9087
9154
  interval?: "day" | "week" | "month";
9088
9155
  /** @description Required inclusive start (UTC day). */
9089
9156
  start_date: string;
9090
9157
  /** @description Inclusive end (UTC day). Defaults to today (UTC). */
9091
9158
  end_date?: string;
9092
- /** @description Filter credits to All, Build, or Run. */
9159
+ /** @description Filter usage by spend category. App-creation usage covers creating and editing apps in Lovable; deployed-app usage covers services such as AI, compute, storage, and databases. Omit to include both. */
9093
9160
  category?: "all" | "build" | "run";
9094
9161
  /** @description Optional: restrict to a single project's usage. */
9095
9162
  project_id?: string;
9096
9163
  /** @description Optional: restrict to a single member's usage. Pass 'me' for the calling user; queries not restricted to the caller require workspace admin permission. */
9097
9164
  user_id?: string;
9098
- /** @description Maximum number of items to return */
9165
+ /** @description Maximum number of items to return per page. */
9099
9166
  limit?: number;
9100
- /** @description Opaque pagination cursor returned by the previous page */
9167
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
9101
9168
  cursor?: string;
9102
9169
  };
9103
9170
  header?: never;
@@ -9115,7 +9182,7 @@ export interface operations {
9115
9182
  [name: string]: unknown;
9116
9183
  };
9117
9184
  content: {
9118
- "application/json": components["schemas"]["V1BillingUsageBody"];
9185
+ "application/json": components["schemas"]["CreditUsagePage"];
9119
9186
  };
9120
9187
  };
9121
9188
  /** @description Error */
@@ -9499,12 +9566,12 @@ export interface operations {
9499
9566
  };
9500
9567
  };
9501
9568
  };
9502
- "get-v1-workspaces-workspace_id-groups": {
9569
+ listWorkspaceGroups: {
9503
9570
  parameters: {
9504
9571
  query?: {
9505
- /** @description Maximum number of items to return */
9572
+ /** @description Maximum number of items to return per page. */
9506
9573
  limit?: number;
9507
- /** @description Opaque pagination cursor returned by the previous page */
9574
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
9508
9575
  cursor?: string;
9509
9576
  };
9510
9577
  header?: never;
@@ -9522,7 +9589,7 @@ export interface operations {
9522
9589
  [name: string]: unknown;
9523
9590
  };
9524
9591
  content: {
9525
- "application/json": components["schemas"]["CursorListResponseV1WorkspaceGroup"];
9592
+ "application/json": components["schemas"]["WorkspaceGroupPage"];
9526
9593
  };
9527
9594
  };
9528
9595
  /** @description Error */
@@ -9604,26 +9671,26 @@ export interface operations {
9604
9671
  };
9605
9672
  };
9606
9673
  };
9607
- "get-v1-workspaces-workspace_id-members": {
9674
+ listWorkspaceMembers: {
9608
9675
  parameters: {
9609
9676
  query?: {
9610
- /** @description Maximum results per page. */
9677
+ /** @description Maximum number of items to return per page. */
9611
9678
  limit?: number;
9612
- /** @description Opaque cursor from a prior response. Omit on the first page. */
9679
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
9613
9680
  cursor?: string;
9614
- /** @description Substring filter applied to display name, username, and email tokens (matching the workspace member search backend). */
9681
+ /** @description Search by display name, username, or email. Each search term of at least 3 characters must match at least one of these fields; shorter terms are ignored. */
9615
9682
  query?: string;
9616
- /** @description Comma-separated role filter. Valid values: owner, admin, member, viewer, collaborator. Empty = all roles. Unknown values return 400. */
9683
+ /** @description Comma-separated workspace role filter. Omit to include every role. Unknown roles return 400. */
9617
9684
  roles?: string;
9618
- /** @description Filter by membership status. Default 'active' excludes pending invites. */
9685
+ /** @description Filter by membership status. Pending invites are excluded by default. */
9619
9686
  status?: "all" | "active" | "pending";
9620
- /** @description Sort field. Defaults to relevance when query is set, otherwise role + recency. */
9687
+ /** @description Sort field. With a search query, results default to best matches first. Otherwise, members are ordered by role precedence, then most recently joined or invited. */
9621
9688
  sort_by?: "name" | "joined_at" | "role" | "relevance";
9622
- /** @description Sort direction. Only applied when sort_by is set; the default-sort case has a fixed direction baked into the underlying query. */
9689
+ /** @description Direction for an explicit sort field. Defaults to descending. Ignored for the default order and relevance sorting. */
9623
9690
  sort_order?: "asc" | "desc";
9624
- /** @description Filter by SCIM provisioning status. Empty = all members, 'managed' = only SCIM-provisioned members, 'unmanaged' = only members not managed by SCIM. */
9691
+ /** @description Filter by identity-provider provisioning through SCIM (System for Cross-domain Identity Management). Omit to include members regardless of provisioning method. */
9625
9692
  scim_managed?: "managed" | "unmanaged";
9626
- /** @description Comma-separated optional expansions. Valid values: groups. Unknown values return 400, but a misspelled parameter *name* is ignored rather than rejected (the response carries X-Lovable-Unknown-Query-Params), so check the header if an expansion you asked for is missing. Expansions cost extra reads, so each response field is absent unless asked for. */
9693
+ /** @description Optional additional member details. Set include=groups to include group memberships; otherwise groups is omitted. Unknown values return 400. Unrecognized query parameter names on any endpoint are ignored and listed in the X-Lovable-Unknown-Query-Params response header. */
9627
9694
  include?: string;
9628
9695
  };
9629
9696
  header?: never;
@@ -9641,7 +9708,7 @@ export interface operations {
9641
9708
  [name: string]: unknown;
9642
9709
  };
9643
9710
  content: {
9644
- "application/json": components["schemas"]["CursorListResponseV1WorkspaceMember"];
9711
+ "application/json": components["schemas"]["WorkspaceMemberPage"];
9645
9712
  };
9646
9713
  };
9647
9714
  /** @description Error */
@@ -9658,6 +9725,8 @@ export interface operations {
9658
9725
  "get-v1-workspaces-workspace_id-projects": {
9659
9726
  parameters: {
9660
9727
  query?: {
9728
+ /** @description Match visible project titles and order by relevance; acknowledged by title_search in the response */
9729
+ title_search?: boolean;
9661
9730
  /** @description Include per-project risk rollup fields (risk_score, risk_level, signals, reasons). Honored only for workspaces with the risk read surface enabled; ignored otherwise. Off by default so the default project list avoids the risk-table joins. */
9662
9731
  include_risk?: boolean;
9663
9732
  /** @description Skip computing the total: total is returned as -1; has_more still reports whether more results exist. Use for list UIs that paginate on has_more. */
@@ -9756,17 +9825,15 @@ export interface operations {
9756
9825
  };
9757
9826
  };
9758
9827
  };
9759
- "get-v1-workspaces-workspace_id-security-center-insights": {
9828
+ getSecurityInsights: {
9760
9829
  parameters: {
9761
9830
  query?: {
9762
- /** @description Repeat to keep only findings at these review priorities (needs_review=critical, review_recommended=high+medium, no_review_needed=low+minimal). Omit for all. */
9831
+ /** @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. */
9763
9832
  review_priority?: ("needs_review" | "review_recommended" | "no_review_needed")[] | null;
9764
- /** @description Deprecated (ENT-3348): alias for review_priority; values from both parameters are combined. */
9765
- severity?: ("needs_review" | "review_recommended" | "no_review_needed")[] | null;
9766
9833
  };
9767
9834
  header?: never;
9768
9835
  path: {
9769
- /** @description Workspace ID */
9836
+ /** @description ID of the workspace to retrieve security insights for. */
9770
9837
  workspace_id: string;
9771
9838
  };
9772
9839
  cookie?: never;
@@ -9779,7 +9846,7 @@ export interface operations {
9779
9846
  [name: string]: unknown;
9780
9847
  };
9781
9848
  content: {
9782
- "application/json": components["schemas"]["V1WorkspaceInsightsBody"];
9849
+ "application/json": components["schemas"]["WorkspaceInsights"];
9783
9850
  };
9784
9851
  };
9785
9852
  /** @description Error */
@@ -9793,32 +9860,32 @@ export interface operations {
9793
9860
  };
9794
9861
  };
9795
9862
  };
9796
- "get-v1-workspaces-workspace_id-security-center-insights-projects": {
9863
+ listSecurityInsightProjects: {
9797
9864
  parameters: {
9798
9865
  query?: {
9799
- /** @description Max results per page. */
9866
+ /** @description Maximum number of items to return per page. */
9800
9867
  limit?: number;
9801
- /** @description Opaque cursor from a prior response. Omit on the first page. */
9868
+ /** @description Pass pagination.next_cursor from the previous response to fetch the next page. Omit for the first page; keep the same filters and sort order across pages. */
9802
9869
  cursor?: string;
9803
9870
  /** @description Free-text search across project name and owner. */
9804
9871
  query?: string;
9805
- /** @description Sort axis. When omitted, results sort by last_edited (or by relevance when 'query' is set). */
9872
+ /** @description Sort order. Defaults to most recently edited, or best matches first when query is set. Priority sorting puts the most urgent projects first; scan-time sorting uses the latest finished scan. */
9806
9873
  sort_by?: "review_priority_desc" | "name_asc" | "name_desc" | "published_status_asc" | "published_status_desc" | "last_edited_asc" | "last_edited_desc" | "risk_factors_asc" | "risk_factors_desc" | "pii_findings_asc" | "pii_findings_desc" | "external_access_asc" | "external_access_desc" | "most_edited_24h" | "most_edited_7d" | "most_edited_30d" | "most_visitors_24h" | "most_visitors_7d" | "most_visitors_30d" | "last_scan_desc" | "last_scan_asc";
9807
- /** @description Activity bucket filter. */
9874
+ /** @description Filter by time since the last edit, or last update for projects never edited. Uses 14-day and 60-day boundaries. */
9808
9875
  activity?: "active" | "inactive" | "dead";
9809
9876
  /** @description Filter by publishing status. Omit for no filter. */
9810
9877
  is_published?: "true" | "false";
9811
- /** @description Filter by project visibility. */
9878
+ /** @description Filter by who can access the project in the editor. Separate from the published site access controlled by publish_status. */
9812
9879
  visibility?: "public" | "private" | "draft";
9813
- /** @description Filter to projects flagged with PII. */
9880
+ /** @description Set true to include only projects flagged with personally identifiable information (PII). False or omitted applies no filter. Ignored when personal data detection is unavailable. */
9814
9881
  contains_pii?: boolean;
9815
- /** @description Filter to projects with at least one connector. */
9882
+ /** @description Set true to include only projects with a connected service. False or omitted applies no filter. */
9816
9883
  has_connectors?: boolean;
9817
- /** @description Repeat to include multiple publishing statuses. Omit for all. */
9884
+ /** @description Filter by published site access. Restricted sites may also have selected external viewers. Repeat to match any selected status; omit for no filter. */
9818
9885
  publish_status?: ("external" | "workspace" | "not_published")[] | null;
9819
- /** @description Repeat to include multiple review priorities (needs_review=critical, review_recommended=high+medium, no_review_needed=low+minimal). Unscored projects are not filterable but may appear in results. */
9886
+ /** @description Filter projects by Security Center review priority. Repeat to match any selected priority. Omit to include every project, including those not yet scored. */
9820
9887
  review_priority?: ("needs_review" | "review_recommended" | "no_review_needed")[] | null;
9821
- /** @description Repeat to filter to projects matching any of the listed catalog findings (e.g. public_pii_exposure, abandoned_published). Unknown finding ids return 400. */
9888
+ /** @description Finding type IDs returned by GET /v1/workspaces/{workspace_id}/security-center/insights. Repeat to match any selected type. Unknown IDs return 400. Types requiring personal data detection are ignored when that feature is unavailable. */
9822
9889
  finding_id?: string[] | null;
9823
9890
  };
9824
9891
  header?: never;
@@ -9836,7 +9903,7 @@ export interface operations {
9836
9903
  [name: string]: unknown;
9837
9904
  };
9838
9905
  content: {
9839
- "application/json": components["schemas"]["V1WorkspaceInsightsProjectsBody"];
9906
+ "application/json": components["schemas"]["WorkspaceInsightsProjectPage"];
9840
9907
  };
9841
9908
  };
9842
9909
  /** @description Error */
@@ -9850,7 +9917,7 @@ export interface operations {
9850
9917
  };
9851
9918
  };
9852
9919
  };
9853
- "get-v1-workspaces-workspace_id-settings": {
9920
+ getWorkspaceSettings: {
9854
9921
  parameters: {
9855
9922
  query?: never;
9856
9923
  header?: never;
@@ -9868,43 +9935,7 @@ export interface operations {
9868
9935
  [name: string]: unknown;
9869
9936
  };
9870
9937
  content: {
9871
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
9872
- };
9873
- };
9874
- /** @description Error */
9875
- default: {
9876
- headers: {
9877
- [name: string]: unknown;
9878
- };
9879
- content: {
9880
- "application/problem+json": components["schemas"]["ErrorModel"];
9881
- };
9882
- };
9883
- };
9884
- };
9885
- "patch-v1-workspaces-workspace_id-settings": {
9886
- parameters: {
9887
- query?: never;
9888
- header?: never;
9889
- path: {
9890
- /** @description Workspace ID. */
9891
- workspace_id: string;
9892
- };
9893
- cookie?: never;
9894
- };
9895
- requestBody: {
9896
- content: {
9897
- "application/json": components["schemas"]["V1UpdateWorkspaceSettingsNestedInputBody"];
9898
- };
9899
- };
9900
- responses: {
9901
- /** @description OK */
9902
- 200: {
9903
- headers: {
9904
- [name: string]: unknown;
9905
- };
9906
- content: {
9907
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
9938
+ "application/json": components["schemas"]["WorkspaceSettings"];
9908
9939
  };
9909
9940
  };
9910
9941
  /** @description Error */