@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.
package/dist/index.d.ts CHANGED
@@ -120,7 +120,7 @@ interface paths {
120
120
  /**
121
121
  * Get workspace credit history
122
122
  * @deprecated
123
- * @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.
123
+ * @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.
124
124
  */
125
125
  get: operations["get-v1-credit-history"];
126
126
  put?: never;
@@ -355,9 +355,9 @@ interface paths {
355
355
  };
356
356
  /**
357
357
  * Get current user
358
- * @description Returns the authenticated user's profile and workspaces.
358
+ * @description Returns the authenticated user's profile and workspaces accessible with these credentials. A workspace-scoped API key returns only its workspace.
359
359
  */
360
- get: operations["get-v1-me"];
360
+ get: operations["getMe"];
361
361
  put?: never;
362
362
  post?: never;
363
363
  delete?: never;
@@ -571,11 +571,12 @@ interface paths {
571
571
  * List projects
572
572
  * @description Returns projects in a workspace, sorted by last edited time descending then project ID ascending. Pass workspace_id as a query parameter.
573
573
  */
574
- get: operations["get-v1-projects"];
574
+ get: operations["listProjects"];
575
575
  put?: never;
576
576
  /**
577
577
  * Create project
578
- * @description Creates a new project. Pass workspace_id in the request body.
578
+ * @deprecated
579
+ * @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.
579
580
  */
580
581
  post: operations["post-v1-projects"];
581
582
  delete?: never;
@@ -595,21 +596,21 @@ interface paths {
595
596
  * Get project
596
597
  * @description Returns project details.
597
598
  */
598
- get: operations["get-v1-projects-project_id"];
599
+ get: operations["getProject"];
599
600
  put?: never;
600
601
  post?: never;
601
602
  /**
602
603
  * Delete project
603
- * @description Soft-deletes a project. Repeated deletes are treated as successful.
604
+ * @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.
604
605
  */
605
- delete: operations["delete-v1-projects-project_id"];
606
+ delete: operations["deleteProject"];
606
607
  options?: never;
607
608
  head?: never;
608
609
  /**
609
610
  * Update project
610
- * @description Updates supported project fields such as visibility and display_name.
611
+ * @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.
611
612
  */
612
- patch: operations["patch-v1-projects-project_id"];
613
+ patch: operations["updateProject"];
613
614
  trace?: never;
614
615
  };
615
616
  "/v1/projects/{project_id}/analytics": {
@@ -621,9 +622,9 @@ interface paths {
621
622
  };
622
623
  /**
623
624
  * Get project analytics
624
- * @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.
625
+ * @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.
625
626
  */
626
- get: operations["get-v1-projects-project_id-analytics"];
627
+ get: operations["getProjectAnalytics"];
627
628
  put?: never;
628
629
  post?: never;
629
630
  delete?: never;
@@ -662,9 +663,9 @@ interface paths {
662
663
  };
663
664
  /**
664
665
  * List project collaborators
665
- * @description Returns the users with direct access to this project.
666
+ * @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.
666
667
  */
667
- get: operations["get-v1-projects-project_id-collaborators"];
668
+ get: operations["listProjectCollaborators"];
668
669
  put?: never;
669
670
  post?: never;
670
671
  delete?: never;
@@ -768,9 +769,9 @@ interface paths {
768
769
  put?: never;
769
770
  /**
770
771
  * Create embed URL
771
- * @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.
772
+ * @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.
772
773
  */
773
- post: operations["post-v1-projects-project_id-embed-url"];
774
+ post: operations["createEmbedUrl"];
774
775
  delete?: never;
775
776
  options?: never;
776
777
  head?: never;
@@ -942,10 +943,10 @@ interface paths {
942
943
  cookie?: never;
943
944
  };
944
945
  /**
945
- * List PII labels
946
- * @description Returns PII labels detected for the project, newest first.
946
+ * List personal data findings
947
+ * @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.
947
948
  */
948
- get: operations["get-v1-projects-project_id-pii-labels"];
949
+ get: operations["listPiiLabels"];
949
950
  put?: never;
950
951
  post?: never;
951
952
  delete?: never;
@@ -965,17 +966,17 @@ interface paths {
965
966
  put?: never;
966
967
  /**
967
968
  * Publish project
968
- * @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.
969
+ * @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.
969
970
  */
970
- post: operations["post-v1-projects-project_id-publish"];
971
+ post: operations["publishProject"];
971
972
  delete?: never;
972
973
  options?: never;
973
974
  head?: never;
974
975
  /**
975
976
  * Update publish settings
976
- * @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.
977
+ * @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.
977
978
  */
978
- patch: operations["patch-v1-projects-project_id-publish"];
979
+ patch: operations["updatePublishSettings"];
979
980
  trace?: never;
980
981
  };
981
982
  "/v1/projects/{project_id}/publish/{deployment_id}": {
@@ -987,9 +988,9 @@ interface paths {
987
988
  };
988
989
  /**
989
990
  * Get publish status
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 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.
991
+ * @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.
991
992
  */
992
- get: operations["get-v1-projects-project_id-publish-deployment_id"];
993
+ get: operations["getDeployment"];
993
994
  put?: never;
994
995
  post?: never;
995
996
  delete?: never;
@@ -1049,15 +1050,11 @@ interface paths {
1049
1050
  };
1050
1051
  /**
1051
1052
  * List security scans
1052
- * @description Returns the project's security scan invocations, newest first.
1053
+ * @description Returns the project's security scans ordered by start time, newest first. Use a scan's detail endpoint to retrieve findings.
1053
1054
  */
1054
- get: operations["get-v1-projects-project_id-security-scans"];
1055
+ get: operations["listSecurityScans"];
1055
1056
  put?: never;
1056
- /**
1057
- * Trigger security scan
1058
- * @description Starts a security scan for the project's latest commit and returns a scan_id.
1059
- */
1060
- post: operations["post-v1-projects-project_id-security-scans"];
1057
+ post?: never;
1061
1058
  delete?: never;
1062
1059
  options?: never;
1063
1060
  head?: never;
@@ -1073,9 +1070,9 @@ interface paths {
1073
1070
  };
1074
1071
  /**
1075
1072
  * Get security scan
1076
- * @description Returns a single security scan invocation with per-scanner run details and findings.
1073
+ * @description Returns a security scan's status and findings. A scan may include results reused from earlier scans.
1077
1074
  */
1078
- get: operations["get-v1-projects-project_id-security-scans-scan_id"];
1075
+ get: operations["getSecurityScan"];
1079
1076
  put?: never;
1080
1077
  post?: never;
1081
1078
  delete?: never;
@@ -1177,7 +1174,8 @@ interface paths {
1177
1174
  };
1178
1175
  /**
1179
1176
  * Get remix job
1180
- * @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.
1177
+ * @deprecated
1178
+ * @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.
1181
1179
  */
1182
1180
  get: operations["get-v1-remix-jobs-job_id"];
1183
1181
  put?: never;
@@ -1396,9 +1394,9 @@ interface paths {
1396
1394
  };
1397
1395
  /**
1398
1396
  * List workspaces
1399
- * @description Returns workspaces the authenticated user belongs to with cursor pagination.
1397
+ * @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.
1400
1398
  */
1401
- get: operations["get-v1-workspaces"];
1399
+ get: operations["listWorkspaces"];
1402
1400
  put?: never;
1403
1401
  post?: never;
1404
1402
  delete?: never;
@@ -1416,9 +1414,9 @@ interface paths {
1416
1414
  };
1417
1415
  /**
1418
1416
  * Get workspace
1419
- * @description Returns workspace details.
1417
+ * @description Returns workspace details and the authenticated user's membership.
1420
1418
  */
1421
- get: operations["get-v1-workspaces-workspace_id"];
1419
+ get: operations["getWorkspace"];
1422
1420
  put?: never;
1423
1421
  post?: never;
1424
1422
  delete?: never;
@@ -1436,9 +1434,9 @@ interface paths {
1436
1434
  };
1437
1435
  /**
1438
1436
  * Get workspace analytics
1439
- * @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.
1437
+ * @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.
1440
1438
  */
1441
- get: operations["get-v1-workspaces-workspace_id-analytics"];
1439
+ get: operations["getWorkspaceAnalytics"];
1442
1440
  put?: never;
1443
1441
  post?: never;
1444
1442
  delete?: never;
@@ -1519,9 +1517,9 @@ interface paths {
1519
1517
  };
1520
1518
  /**
1521
1519
  * Get workspace credit balance
1522
- * @description Returns the workspace's aggregated credit balance, daily limit, billing-period usage, expiring grants, and per-bucket balances.
1520
+ * @description Returns current general-purpose and build-credit balances, the daily credit allowance, credit usage in the billing period, and upcoming expirations.
1523
1521
  */
1524
- get: operations["get-v1-workspaces-workspace_id-billing-credit-balance"];
1522
+ get: operations["getCreditBalance"];
1525
1523
  put?: never;
1526
1524
  post?: never;
1527
1525
  delete?: never;
@@ -1539,9 +1537,9 @@ interface paths {
1539
1537
  };
1540
1538
  /**
1541
1539
  * Get workspace credit history
1542
- * @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.
1540
+ * @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.
1543
1541
  */
1544
- get: operations["get-v1-workspaces-workspace_id-billing-credit-history"];
1542
+ get: operations["listCreditHistory"];
1545
1543
  put?: never;
1546
1544
  post?: never;
1547
1545
  delete?: never;
@@ -1550,30 +1548,6 @@ interface paths {
1550
1548
  patch?: never;
1551
1549
  trace?: never;
1552
1550
  };
1553
- "/v1/workspaces/{workspace_id}/billing/credit-limits": {
1554
- parameters: {
1555
- query?: never;
1556
- header?: never;
1557
- path?: never;
1558
- cookie?: never;
1559
- };
1560
- /**
1561
- * Get member credit limits
1562
- * @description Returns each active member's monthly credit limit plus the workspace default, paginated. Members without an explicit limit inherit the workspace default.
1563
- */
1564
- get: operations["get-v1-workspaces-workspace_id-billing-credit-limits"];
1565
- put?: never;
1566
- /**
1567
- * Set member credit limits
1568
- * @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.
1569
- */
1570
- post: operations["post-v1-workspaces-workspace_id-billing-credit-limits"];
1571
- delete?: never;
1572
- options?: never;
1573
- head?: never;
1574
- patch?: never;
1575
- trace?: never;
1576
- };
1577
1551
  "/v1/workspaces/{workspace_id}/billing/credit-usage": {
1578
1552
  parameters: {
1579
1553
  query?: never;
@@ -1583,9 +1557,9 @@ interface paths {
1583
1557
  };
1584
1558
  /**
1585
1559
  * Get workspace credit usage
1586
- * @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.
1560
+ * @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.
1587
1561
  */
1588
- get: operations["get-v1-workspaces-workspace_id-billing-credit-usage"];
1562
+ get: operations["getCreditUsage"];
1589
1563
  put?: never;
1590
1564
  post?: never;
1591
1565
  delete?: never;
@@ -1837,7 +1811,7 @@ interface paths {
1837
1811
  * List workspace groups
1838
1812
  * @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.
1839
1813
  */
1840
- get: operations["get-v1-workspaces-workspace_id-groups"];
1814
+ get: operations["listWorkspaceGroups"];
1841
1815
  put?: never;
1842
1816
  post?: never;
1843
1817
  delete?: never;
@@ -1883,7 +1857,7 @@ interface paths {
1883
1857
  * List workspace members
1884
1858
  * @description Returns a paginated list of workspace members, filtered by role and status.
1885
1859
  */
1886
- get: operations["get-v1-workspaces-workspace_id-members"];
1860
+ get: operations["listWorkspaceMembers"];
1887
1861
  put?: never;
1888
1862
  post?: never;
1889
1863
  delete?: never;
@@ -1927,9 +1901,11 @@ interface paths {
1927
1901
  };
1928
1902
  /**
1929
1903
  * Get workspace security insights
1930
- * @description Returns the workspace security insights summary.
1904
+ * @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.
1905
+ *
1906
+ * 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.
1931
1907
  */
1932
- get: operations["get-v1-workspaces-workspace_id-security-center-insights"];
1908
+ get: operations["getSecurityInsights"];
1933
1909
  put?: never;
1934
1910
  post?: never;
1935
1911
  delete?: never;
@@ -1947,9 +1923,9 @@ interface paths {
1947
1923
  };
1948
1924
  /**
1949
1925
  * List workspace security project inventory
1950
- * @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.
1926
+ * @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.
1951
1927
  */
1952
- get: operations["get-v1-workspaces-workspace_id-security-center-insights-projects"];
1928
+ get: operations["listSecurityInsightProjects"];
1953
1929
  put?: never;
1954
1930
  post?: never;
1955
1931
  delete?: never;
@@ -1967,19 +1943,15 @@ interface paths {
1967
1943
  };
1968
1944
  /**
1969
1945
  * Get workspace settings
1970
- * @description Returns a curated subset of the workspace's settings.
1946
+ * @description Returns workspace plan, security and publishing settings, and the default member credit limit.
1971
1947
  */
1972
- get: operations["get-v1-workspaces-workspace_id-settings"];
1948
+ get: operations["getWorkspaceSettings"];
1973
1949
  put?: never;
1974
1950
  post?: never;
1975
1951
  delete?: never;
1976
1952
  options?: never;
1977
1953
  head?: never;
1978
- /**
1979
- * Update workspace settings
1980
- * @description Updates writable workspace settings. Currently supports the default per-member monthly credit limit.
1981
- */
1982
- patch: operations["patch-v1-workspaces-workspace_id-settings"];
1954
+ patch?: never;
1983
1955
  trace?: never;
1984
1956
  };
1985
1957
  "/v1/workspaces/{workspace_id}/skills": {
@@ -2079,8 +2051,8 @@ 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 @@ 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. */
2131
2109
  pagination: components["schemas"]["Pagination"];
2132
2110
  };
2133
- CursorListResponsePublicV1ProjectListItem: {
2111
+ ProjectSummaryPage: {
2134
2112
  /** @description Items in this page. */
2135
- data: components["schemas"]["PublicV1ProjectListItem"][] | null;
2136
- /** @description Pagination cursors for fetching adjacent pages. */
2113
+ data: components["schemas"]["ProjectSummary"][] | null;
2114
+ /** @description Whether more results are available and the cursor to fetch the next page. */
2115
+ pagination: components["schemas"]["Pagination"];
2116
+ };
2117
+ SecurityScanPage: {
2118
+ /** @description Items in this page. */
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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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}
3645
+ */
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}
3496
3650
  */
3497
- group_by?: string;
3498
- /** @description Bucket size the rows use; interval queries only. */
3499
- interval?: string;
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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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;
4323
- /**
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.
4325
- * @example completed
4326
- */
4327
- status?: string;
4328
- /**
4329
- * @description Project tech stack.
4330
- * @example vite_react_shadcn_ts
4331
- */
4332
- tech_stack?: string;
4501
+ publish_visibility?: "public" | "private" | "workspace_only";
4333
4502
  /**
4334
- * Format: date-time
4335
- * @description When the project was last updated.
4336
- * @example 2026-01-15T09:30:00Z
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.
4504
+ * @example completed
4505
+ * @enum {string}
4337
4506
  */
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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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
  };
@@ -5963,7 +6149,7 @@ interface operations {
5963
6149
  [name: string]: unknown;
5964
6150
  };
5965
6151
  content: {
5966
- "application/json": components["schemas"]["ProjectTrendResponse"];
6152
+ "application/json": components["schemas"]["AnalyticsTrend"];
5967
6153
  };
5968
6154
  };
5969
6155
  /** @description Error */
@@ -5982,9 +6168,9 @@ interface operations {
5982
6168
  query: {
5983
6169
  /** @description Workspace ID */
5984
6170
  workspace_id: string;
5985
- /** @description Maximum results per page. */
6171
+ /** @description Maximum number of items to return per page. */
5986
6172
  limit?: number;
5987
- /** @description Opaque cursor returned by a previous page; omit for the first page. */
6173
+ /** @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. */
5988
6174
  cursor?: string;
5989
6175
  /** @description Comma-separated audit-log action filter (exact match, e.g. workspace.member.added). */
5990
6176
  actions?: string;
@@ -5994,9 +6180,9 @@ interface operations {
5994
6180
  target_ids?: string;
5995
6181
  /** @description Token-based search on target_id and target_display_name. Minimum 3 characters. */
5996
6182
  search?: string;
5997
- /** @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. */
6183
+ /** @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. */
5998
6184
  start_date?: string;
5999
- /** @description RFC3339 inclusive end of the time range. Defaults to now. */
6185
+ /** @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. */
6000
6186
  end_date?: string;
6001
6187
  };
6002
6188
  header?: never;
@@ -6030,9 +6216,9 @@ interface operations {
6030
6216
  query: {
6031
6217
  /** @description Project ID */
6032
6218
  project_id: string;
6033
- /** @description Maximum number of items to return */
6219
+ /** @description Maximum number of items to return per page. */
6034
6220
  limit?: number;
6035
- /** @description Opaque pagination cursor returned by the previous page */
6221
+ /** @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. */
6036
6222
  cursor?: string;
6037
6223
  };
6038
6224
  header?: never;
@@ -6047,7 +6233,7 @@ interface operations {
6047
6233
  [name: string]: unknown;
6048
6234
  };
6049
6235
  content: {
6050
- "application/json": components["schemas"]["CursorListResponseV1ProjectCollaborator"];
6236
+ "application/json": components["schemas"]["ProjectCollaboratorPage"];
6051
6237
  };
6052
6238
  };
6053
6239
  /** @description Error */
@@ -6070,9 +6256,9 @@ interface operations {
6070
6256
  type?: string;
6071
6257
  /** @description Optional status filter. For seamless and app-user connectors, connected matches workspace-enabled connectors. */
6072
6258
  status?: "connected";
6073
- /** @description Maximum number of items to return */
6259
+ /** @description Maximum number of items to return per page. */
6074
6260
  limit?: number;
6075
- /** @description Opaque pagination cursor returned by the previous page */
6261
+ /** @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. */
6076
6262
  cursor?: string;
6077
6263
  };
6078
6264
  header?: never;
@@ -6108,9 +6294,9 @@ interface operations {
6108
6294
  workspace_id: string;
6109
6295
  /** @description Filter to one or more event types. Repeat to include multiple; omit for all. */
6110
6296
  event_type?: ("granted" | "expired" | "adjustment" | "converted")[] | null;
6111
- /** @description Maximum number of items to return */
6297
+ /** @description Maximum number of items to return per page. */
6112
6298
  limit?: number;
6113
- /** @description Opaque pagination cursor returned by the previous page */
6299
+ /** @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. */
6114
6300
  cursor?: string;
6115
6301
  };
6116
6302
  header?: never;
@@ -6125,7 +6311,7 @@ interface operations {
6125
6311
  [name: string]: unknown;
6126
6312
  };
6127
6313
  content: {
6128
- "application/json": components["schemas"]["V1WorkspaceCreditHistoryBody"];
6314
+ "application/json": components["schemas"]["CreditHistoryPage"];
6129
6315
  };
6130
6316
  };
6131
6317
  /** @description Error */
@@ -6157,7 +6343,7 @@ interface operations {
6157
6343
  [name: string]: unknown;
6158
6344
  };
6159
6345
  content: {
6160
- "application/json": components["schemas"]["V1WorkspaceCreditsBody"];
6346
+ "application/json": components["schemas"]["CreditBalance"];
6161
6347
  };
6162
6348
  };
6163
6349
  /** @description Error */
@@ -6383,9 +6569,9 @@ interface operations {
6383
6569
  project_id: string;
6384
6570
  /** @description Git ref (commit SHA, branch, or tag). Defaults to the latest ref. */
6385
6571
  ref?: string;
6386
- /** @description Maximum number of items to return */
6572
+ /** @description Maximum number of items to return per page. */
6387
6573
  limit?: number;
6388
- /** @description Opaque pagination cursor returned by the previous page */
6574
+ /** @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. */
6389
6575
  cursor?: string;
6390
6576
  };
6391
6577
  header?: never;
@@ -6517,7 +6703,7 @@ interface operations {
6517
6703
  };
6518
6704
  };
6519
6705
  };
6520
- "get-v1-me": {
6706
+ getMe: {
6521
6707
  parameters: {
6522
6708
  query?: never;
6523
6709
  header?: never;
@@ -6532,7 +6718,7 @@ interface operations {
6532
6718
  [name: string]: unknown;
6533
6719
  };
6534
6720
  content: {
6535
- "application/json": components["schemas"]["GetMeOutputBody"];
6721
+ "application/json": components["schemas"]["CurrentUser"];
6536
6722
  };
6537
6723
  };
6538
6724
  /** @description Error */
@@ -6551,23 +6737,23 @@ interface operations {
6551
6737
  query: {
6552
6738
  /** @description Workspace ID */
6553
6739
  workspace_id: string;
6554
- /** @description Maximum results per page. */
6740
+ /** @description Maximum number of items to return per page. */
6555
6741
  limit?: number;
6556
- /** @description Opaque cursor from a prior response. Omit on the first page. */
6742
+ /** @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. */
6557
6743
  cursor?: string;
6558
- /** @description Substring filter applied to display name, username, and email tokens (matching the workspace member search backend). */
6744
+ /** @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. */
6559
6745
  query?: string;
6560
- /** @description Comma-separated role filter. Valid values: owner, admin, member, viewer, collaborator. Empty = all roles. Unknown values return 400. */
6746
+ /** @description Comma-separated workspace role filter. Omit to include every role. Unknown roles return 400. */
6561
6747
  roles?: string;
6562
- /** @description Filter by membership status. Default 'active' excludes pending invites. */
6748
+ /** @description Filter by membership status. Pending invites are excluded by default. */
6563
6749
  status?: "all" | "active" | "pending";
6564
- /** @description Sort field. Defaults to relevance when query is set, otherwise role + recency. */
6750
+ /** @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. */
6565
6751
  sort_by?: "name" | "joined_at" | "role" | "relevance";
6566
- /** @description Sort direction. Only applied when sort_by is set; the default-sort case has a fixed direction baked into the underlying query. */
6752
+ /** @description Direction for an explicit sort field. Defaults to descending. Ignored for the default order and relevance sorting. */
6567
6753
  sort_order?: "asc" | "desc";
6568
- /** @description Filter by SCIM provisioning status. Empty = all members, 'managed' = only SCIM-provisioned members, 'unmanaged' = only members not managed by SCIM. */
6754
+ /** @description Filter by identity-provider provisioning through SCIM (System for Cross-domain Identity Management). Omit to include members regardless of provisioning method. */
6569
6755
  scim_managed?: "managed" | "unmanaged";
6570
- /** @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. */
6756
+ /** @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. */
6571
6757
  include?: string;
6572
6758
  };
6573
6759
  header?: never;
@@ -6582,7 +6768,7 @@ interface operations {
6582
6768
  [name: string]: unknown;
6583
6769
  };
6584
6770
  content: {
6585
- "application/json": components["schemas"]["CursorListResponseV1WorkspaceMember"];
6771
+ "application/json": components["schemas"]["WorkspaceMemberPage"];
6586
6772
  };
6587
6773
  };
6588
6774
  /** @description Error */
@@ -6651,7 +6837,7 @@ interface operations {
6651
6837
  [name: string]: unknown;
6652
6838
  };
6653
6839
  content: {
6654
- "application/json": components["schemas"]["V1WorkspaceMember"];
6840
+ "application/json": components["schemas"]["WorkspaceMember"];
6655
6841
  };
6656
6842
  };
6657
6843
  /** @description Error */
@@ -6831,9 +7017,9 @@ interface operations {
6831
7017
  query: {
6832
7018
  /** @description Project ID */
6833
7019
  project_id: string;
6834
- /** @description Page size */
7020
+ /** @description Maximum number of items to return per page. */
6835
7021
  limit?: number;
6836
- /** @description Opaque cursor returned by a previous page; omit for the first page */
7022
+ /** @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. */
6837
7023
  cursor?: string;
6838
7024
  };
6839
7025
  header?: never;
@@ -6895,33 +7081,29 @@ interface operations {
6895
7081
  };
6896
7082
  };
6897
7083
  };
6898
- "get-v1-projects": {
7084
+ listProjects: {
6899
7085
  parameters: {
6900
7086
  query: {
6901
7087
  /** @description Workspace ID */
6902
7088
  workspace_id: string;
6903
- /** @description Filter by project creator user ID */
7089
+ /** @description Filter by project owner user ID */
6904
7090
  user_id?: string;
6905
- /** @description Filter by visibility */
7091
+ /** @description Filter projects by editor-sharing scope. Omit to include every scope you can access. */
6906
7092
  visibility?: "personal" | "workspace" | "public" | "all";
6907
- /** @description Filter by publish status */
7093
+ /** @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. */
6908
7094
  publish_status?: "any" | "published" | "internal" | "external" | "not_published";
6909
7095
  /** @description Filter by folder ID */
6910
7096
  folder_id?: string;
6911
- /** @description Filter by multiple folder IDs (comma-separated, takes precedence over folder_id) */
6912
- folder_ids?: string;
6913
- /** @description Filter by project type. library returns design-system libraries; template returns non-library templates. */
7097
+ /** @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. */
6914
7098
  type?: "" | "project" | "library" | "template" | "all";
6915
- /** @description Search query */
7099
+ /** @description Search project names, generated descriptions, and owner names or email addresses. Terms shorter than 3 characters are ignored. */
6916
7100
  query?: string;
6917
- /** @description Maximum number of projects to return */
7101
+ /** @description Maximum number of items to return per page. */
6918
7102
  limit?: number;
6919
- /** @description Opaque pagination cursor returned by the previous page */
7103
+ /** @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. */
6920
7104
  cursor?: string;
6921
7105
  /** @description Only return projects viewed by the current user */
6922
7106
  viewed_by_me?: boolean;
6923
- /** @description Which fields to search: empty for all (default), 'name' for project name only */
6924
- search_fields?: "" | "name";
6925
7107
  };
6926
7108
  header?: never;
6927
7109
  path?: never;
@@ -6935,7 +7117,7 @@ interface operations {
6935
7117
  [name: string]: unknown;
6936
7118
  };
6937
7119
  content: {
6938
- "application/json": components["schemas"]["CursorListResponsePublicV1ProjectListItem"];
7120
+ "application/json": components["schemas"]["ProjectSummaryPage"];
6939
7121
  };
6940
7122
  };
6941
7123
  /** @description Error */
@@ -6962,7 +7144,7 @@ interface operations {
6962
7144
  };
6963
7145
  };
6964
7146
  responses: {
6965
- /** @description OK */
7147
+ /** @description Not returned by current servers; retained from an earlier published contract. Treat like 201. */
6966
7148
  200: {
6967
7149
  headers: {
6968
7150
  [name: string]: unknown;
@@ -6971,7 +7153,7 @@ interface operations {
6971
7153
  "application/json": components["schemas"]["PublicV1CreateProjectResponse"];
6972
7154
  };
6973
7155
  };
6974
- /** @description Created */
7156
+ /** @description Project created. The body is the new project; message_id is present when initial_message was given. Location points at the project. */
6975
7157
  201: {
6976
7158
  headers: {
6977
7159
  Location?: string;
@@ -6981,7 +7163,7 @@ interface operations {
6981
7163
  "application/json": components["schemas"]["PublicV1CreateProjectResponse"];
6982
7164
  };
6983
7165
  };
6984
- /** @description Accepted */
7166
+ /** @description Remix accepted. The body carries job_id only; poll GET /v1/remix-jobs/{job_id} (the Location header) for progress. */
6985
7167
  202: {
6986
7168
  headers: {
6987
7169
  Location?: string;
@@ -7002,7 +7184,7 @@ interface operations {
7002
7184
  };
7003
7185
  };
7004
7186
  };
7005
- "get-v1-projects-project_id": {
7187
+ getProject: {
7006
7188
  parameters: {
7007
7189
  query?: never;
7008
7190
  header?: never;
@@ -7020,7 +7202,7 @@ interface operations {
7020
7202
  [name: string]: unknown;
7021
7203
  };
7022
7204
  content: {
7023
- "application/json": components["schemas"]["V1ProjectResponse"];
7205
+ "application/json": components["schemas"]["Project"];
7024
7206
  };
7025
7207
  };
7026
7208
  /** @description Error */
@@ -7034,7 +7216,7 @@ interface operations {
7034
7216
  };
7035
7217
  };
7036
7218
  };
7037
- "delete-v1-projects-project_id": {
7219
+ deleteProject: {
7038
7220
  parameters: {
7039
7221
  query?: never;
7040
7222
  header?: never;
@@ -7064,7 +7246,7 @@ interface operations {
7064
7246
  };
7065
7247
  };
7066
7248
  };
7067
- "patch-v1-projects-project_id": {
7249
+ updateProject: {
7068
7250
  parameters: {
7069
7251
  query?: never;
7070
7252
  header?: never;
@@ -7076,7 +7258,7 @@ interface operations {
7076
7258
  };
7077
7259
  requestBody: {
7078
7260
  content: {
7079
- "application/json": components["schemas"]["PublicV1PatchProjectBody"];
7261
+ "application/json": components["schemas"]["UpdateProjectRequest"];
7080
7262
  };
7081
7263
  };
7082
7264
  responses: {
@@ -7086,7 +7268,7 @@ interface operations {
7086
7268
  [name: string]: unknown;
7087
7269
  };
7088
7270
  content: {
7089
- "application/json": components["schemas"]["V1ProjectResponse"];
7271
+ "application/json": components["schemas"]["Project"];
7090
7272
  };
7091
7273
  };
7092
7274
  /** @description Error */
@@ -7100,16 +7282,16 @@ interface operations {
7100
7282
  };
7101
7283
  };
7102
7284
  };
7103
- "get-v1-projects-project_id-analytics": {
7285
+ getProjectAnalytics: {
7104
7286
  parameters: {
7105
7287
  query?: {
7106
- /** @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. */
7288
+ /** @description Select date-range analytics or the real-time visitor series for the last 30 minutes. */
7107
7289
  series?: "historical" | "trend";
7108
- /** @description Start date in RFC 3339 format (e.g. 2026-04-01T00:00:00Z). Required when series=historical. */
7290
+ /** @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. */
7109
7291
  start_date?: string;
7110
- /** @description End date in RFC 3339 format (e.g. 2026-04-08T00:00:00Z). Required when series=historical. */
7292
+ /** @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. */
7111
7293
  end_date?: string;
7112
- /** @description Time bucket size for series=historical: hourly or daily (default: daily). */
7294
+ /** @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. */
7113
7295
  granularity?: string;
7114
7296
  };
7115
7297
  header?: never;
@@ -7127,7 +7309,7 @@ interface operations {
7127
7309
  [name: string]: unknown;
7128
7310
  };
7129
7311
  content: {
7130
- "application/json": components["schemas"]["PublicV1ProjectAnalyticsBody"];
7312
+ "application/json": components["schemas"]["ProjectAnalytics"];
7131
7313
  };
7132
7314
  };
7133
7315
  /** @description Error */
@@ -7159,7 +7341,7 @@ interface operations {
7159
7341
  [name: string]: unknown;
7160
7342
  };
7161
7343
  content: {
7162
- "application/json": components["schemas"]["ProjectTrendResponse"];
7344
+ "application/json": components["schemas"]["AnalyticsTrend"];
7163
7345
  };
7164
7346
  };
7165
7347
  /** @description Error */
@@ -7173,12 +7355,12 @@ interface operations {
7173
7355
  };
7174
7356
  };
7175
7357
  };
7176
- "get-v1-projects-project_id-collaborators": {
7358
+ listProjectCollaborators: {
7177
7359
  parameters: {
7178
7360
  query?: {
7179
- /** @description Maximum number of items to return */
7361
+ /** @description Maximum number of items to return per page. */
7180
7362
  limit?: number;
7181
- /** @description Opaque pagination cursor returned by the previous page */
7363
+ /** @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. */
7182
7364
  cursor?: string;
7183
7365
  };
7184
7366
  header?: never;
@@ -7196,7 +7378,7 @@ interface operations {
7196
7378
  [name: string]: unknown;
7197
7379
  };
7198
7380
  content: {
7199
- "application/json": components["schemas"]["CursorListResponseV1ProjectCollaborator"];
7381
+ "application/json": components["schemas"]["ProjectCollaboratorPage"];
7200
7382
  };
7201
7383
  };
7202
7384
  /** @description Error */
@@ -7347,7 +7529,7 @@ interface operations {
7347
7529
  };
7348
7530
  };
7349
7531
  };
7350
- "post-v1-projects-project_id-embed-url": {
7532
+ createEmbedUrl: {
7351
7533
  parameters: {
7352
7534
  query?: never;
7353
7535
  header?: never;
@@ -7359,17 +7541,17 @@ interface operations {
7359
7541
  };
7360
7542
  requestBody: {
7361
7543
  content: {
7362
- "application/json": components["schemas"]["V1CreateEmbedURLInputBody"];
7544
+ "application/json": components["schemas"]["CreateEmbedURLRequest"];
7363
7545
  };
7364
7546
  };
7365
7547
  responses: {
7366
- /** @description OK */
7548
+ /** @description Embed URL created. The token expires after one hour. */
7367
7549
  200: {
7368
7550
  headers: {
7369
7551
  [name: string]: unknown;
7370
7552
  };
7371
7553
  content: {
7372
- "application/json": components["schemas"]["V1CreateEmbedURLOutputBody"];
7554
+ "application/json": components["schemas"]["CreateEmbedURLResponse"];
7373
7555
  };
7374
7556
  };
7375
7557
  /** @description Error */
@@ -7715,12 +7897,12 @@ interface operations {
7715
7897
  };
7716
7898
  };
7717
7899
  };
7718
- "get-v1-projects-project_id-pii-labels": {
7900
+ listPiiLabels: {
7719
7901
  parameters: {
7720
7902
  query?: {
7721
- /** @description Page size */
7903
+ /** @description Maximum number of items to return per page. */
7722
7904
  limit?: number;
7723
- /** @description Opaque cursor returned by a previous page; omit for the first page */
7905
+ /** @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. */
7724
7906
  cursor?: string;
7725
7907
  };
7726
7908
  header?: never;
@@ -7738,7 +7920,7 @@ interface operations {
7738
7920
  [name: string]: unknown;
7739
7921
  };
7740
7922
  content: {
7741
- "application/json": components["schemas"]["CursorListResponseProjectPIIFindingDTO"];
7923
+ "application/json": components["schemas"]["PiiLabelPage"];
7742
7924
  };
7743
7925
  };
7744
7926
  /** @description Error */
@@ -7752,7 +7934,7 @@ interface operations {
7752
7934
  };
7753
7935
  };
7754
7936
  };
7755
- "post-v1-projects-project_id-publish": {
7937
+ publishProject: {
7756
7938
  parameters: {
7757
7939
  query?: never;
7758
7940
  header?: never;
@@ -7764,26 +7946,18 @@ interface operations {
7764
7946
  };
7765
7947
  requestBody: {
7766
7948
  content: {
7767
- "application/json": components["schemas"]["PublicV1PublishProjectInputBody"];
7949
+ "application/json": components["schemas"]["PublishProjectRequest"];
7768
7950
  };
7769
7951
  };
7770
7952
  responses: {
7771
- /** @description OK */
7772
- 200: {
7773
- headers: {
7774
- [name: string]: unknown;
7775
- };
7776
- content: {
7777
- "application/json": components["schemas"]["PublicV1PublishProjectResponse"];
7778
- };
7779
- };
7780
- /** @description Accepted */
7953
+ /** @description Deployment started. Poll GET /v1/projects/{project_id}/publish/{deployment_id} (the Location header) with the returned deployment_id until deployment finishes. */
7781
7954
  202: {
7782
7955
  headers: {
7956
+ Location?: string;
7783
7957
  [name: string]: unknown;
7784
7958
  };
7785
7959
  content: {
7786
- "application/json": components["schemas"]["PublicV1PublishProjectResponse"];
7960
+ "application/json": components["schemas"]["PublishProjectResponse"];
7787
7961
  };
7788
7962
  };
7789
7963
  /** @description Error */
@@ -7797,7 +7971,7 @@ interface operations {
7797
7971
  };
7798
7972
  };
7799
7973
  };
7800
- "patch-v1-projects-project_id-publish": {
7974
+ updatePublishSettings: {
7801
7975
  parameters: {
7802
7976
  query?: never;
7803
7977
  header?: never;
@@ -7809,7 +7983,7 @@ interface operations {
7809
7983
  };
7810
7984
  requestBody: {
7811
7985
  content: {
7812
- "application/json": components["schemas"]["PublicV1UpdatePublishSettingsInputBody"];
7986
+ "application/json": components["schemas"]["UpdatePublishSettingsRequest"];
7813
7987
  };
7814
7988
  };
7815
7989
  responses: {
@@ -7819,7 +7993,7 @@ interface operations {
7819
7993
  [name: string]: unknown;
7820
7994
  };
7821
7995
  content: {
7822
- "application/json": components["schemas"]["PublicV1UpdatePublishSettingsResponse"];
7996
+ "application/json": components["schemas"]["PublishSettings"];
7823
7997
  };
7824
7998
  };
7825
7999
  /** @description Error */
@@ -7833,7 +8007,7 @@ interface operations {
7833
8007
  };
7834
8008
  };
7835
8009
  };
7836
- "get-v1-projects-project_id-publish-deployment_id": {
8010
+ getDeployment: {
7837
8011
  parameters: {
7838
8012
  query?: never;
7839
8013
  header?: never;
@@ -7853,7 +8027,7 @@ interface operations {
7853
8027
  [name: string]: unknown;
7854
8028
  };
7855
8029
  content: {
7856
- "application/json": components["schemas"]["PublicV1PublishStatusResponse"];
8030
+ "application/json": components["schemas"]["Deployment"];
7857
8031
  };
7858
8032
  };
7859
8033
  /** @description Error */
@@ -7938,12 +8112,12 @@ interface operations {
7938
8112
  };
7939
8113
  };
7940
8114
  };
7941
- "get-v1-projects-project_id-security-scans": {
8115
+ listSecurityScans: {
7942
8116
  parameters: {
7943
8117
  query?: {
7944
- /** @description Page size (max 100) */
8118
+ /** @description Maximum number of items to return per page. */
7945
8119
  limit?: number;
7946
- /** @description Opaque cursor from a prior response */
8120
+ /** @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. */
7947
8121
  cursor?: string;
7948
8122
  };
7949
8123
  header?: never;
@@ -7961,39 +8135,7 @@ interface operations {
7961
8135
  [name: string]: unknown;
7962
8136
  };
7963
8137
  content: {
7964
- "application/json": components["schemas"]["CursorListResponseV1SecurityScanSummary"];
7965
- };
7966
- };
7967
- /** @description Error */
7968
- default: {
7969
- headers: {
7970
- [name: string]: unknown;
7971
- };
7972
- content: {
7973
- "application/problem+json": components["schemas"]["ErrorModel"];
7974
- };
7975
- };
7976
- };
7977
- };
7978
- "post-v1-projects-project_id-security-scans": {
7979
- parameters: {
7980
- query?: never;
7981
- header?: never;
7982
- path: {
7983
- /** @description Project ID */
7984
- project_id: string;
7985
- };
7986
- cookie?: never;
7987
- };
7988
- requestBody?: never;
7989
- responses: {
7990
- /** @description OK */
7991
- 200: {
7992
- headers: {
7993
- [name: string]: unknown;
7994
- };
7995
- content: {
7996
- "application/json": components["schemas"]["V1TriggerSecurityScanResponseBody"];
8138
+ "application/json": components["schemas"]["SecurityScanPage"];
7997
8139
  };
7998
8140
  };
7999
8141
  /** @description Error */
@@ -8007,14 +8149,14 @@ interface operations {
8007
8149
  };
8008
8150
  };
8009
8151
  };
8010
- "get-v1-projects-project_id-security-scans-scan_id": {
8152
+ getSecurityScan: {
8011
8153
  parameters: {
8012
8154
  query?: never;
8013
8155
  header?: never;
8014
8156
  path: {
8015
8157
  /** @description Project ID */
8016
8158
  project_id: string;
8017
- /** @description Scan invocation ID from the list endpoint */
8159
+ /** @description Security scan ID returned by the list or trigger endpoint. */
8018
8160
  scan_id: string;
8019
8161
  };
8020
8162
  cookie?: never;
@@ -8027,7 +8169,7 @@ interface operations {
8027
8169
  [name: string]: unknown;
8028
8170
  };
8029
8171
  content: {
8030
- "application/json": components["schemas"]["V1GetSecurityScanOutputBody"];
8172
+ "application/json": components["schemas"]["SecurityScanDetail"];
8031
8173
  };
8032
8174
  };
8033
8175
  /** @description Error */
@@ -8225,9 +8367,9 @@ interface operations {
8225
8367
  query: {
8226
8368
  /** @description Project ID */
8227
8369
  project_id: string;
8228
- /** @description Page size (max 100) */
8370
+ /** @description Maximum number of items to return per page. */
8229
8371
  limit?: number;
8230
- /** @description Opaque cursor from a prior response */
8372
+ /** @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. */
8231
8373
  cursor?: string;
8232
8374
  };
8233
8375
  header?: never;
@@ -8272,6 +8414,7 @@ interface operations {
8272
8414
  /** @description OK */
8273
8415
  200: {
8274
8416
  headers: {
8417
+ Location?: string;
8275
8418
  [name: string]: unknown;
8276
8419
  };
8277
8420
  content: {
@@ -8297,7 +8440,7 @@ interface operations {
8297
8440
  };
8298
8441
  header?: never;
8299
8442
  path: {
8300
- /** @description Scan invocation ID from the list endpoint */
8443
+ /** @description Security scan ID returned by the list or trigger endpoint. */
8301
8444
  scan_id: string;
8302
8445
  };
8303
8446
  cookie?: never;
@@ -8342,7 +8485,7 @@ interface operations {
8342
8485
  [name: string]: unknown;
8343
8486
  };
8344
8487
  content: {
8345
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
8488
+ "application/json": components["schemas"]["WorkspaceSettings"];
8346
8489
  };
8347
8490
  };
8348
8491
  /** @description Error */
@@ -8375,7 +8518,7 @@ interface operations {
8375
8518
  [name: string]: unknown;
8376
8519
  };
8377
8520
  content: {
8378
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
8521
+ "application/json": components["schemas"]["WorkspaceSettings"];
8379
8522
  };
8380
8523
  };
8381
8524
  /** @description Error */
@@ -8394,9 +8537,9 @@ interface operations {
8394
8537
  query: {
8395
8538
  /** @description Project ID */
8396
8539
  project_id: string;
8397
- /** @description Maximum number of items to return */
8540
+ /** @description Maximum number of items to return per page. */
8398
8541
  limit?: number;
8399
- /** @description Opaque pagination cursor returned by the previous page */
8542
+ /** @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. */
8400
8543
  cursor?: string;
8401
8544
  };
8402
8545
  header?: never;
@@ -8472,9 +8615,9 @@ interface operations {
8472
8615
  sort_order?: "asc" | "desc";
8473
8616
  /** @description Membership status filter. Default excludes pending invites since they have no usage yet. */
8474
8617
  status?: "active" | "pending" | "all";
8475
- /** @description Maximum number of items to return */
8618
+ /** @description Maximum number of items to return per page. */
8476
8619
  limit?: number;
8477
- /** @description Opaque pagination cursor returned by the previous page */
8620
+ /** @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. */
8478
8621
  cursor?: string;
8479
8622
  };
8480
8623
  header?: never;
@@ -8546,9 +8689,9 @@ interface operations {
8546
8689
  end_date?: string;
8547
8690
  /** @description Filter credits to All, Build, or Run. */
8548
8691
  category?: "all" | "build" | "run";
8549
- /** @description Maximum number of items to return */
8692
+ /** @description Maximum number of items to return per page. */
8550
8693
  limit?: number;
8551
- /** @description Opaque pagination cursor returned by the previous page */
8694
+ /** @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. */
8552
8695
  cursor?: string;
8553
8696
  };
8554
8697
  header?: never;
@@ -8594,9 +8737,9 @@ interface operations {
8594
8737
  project_id?: string;
8595
8738
  /** @description Optional: restrict the series to a single member's usage. */
8596
8739
  user_id?: string;
8597
- /** @description Maximum number of items to return */
8740
+ /** @description Maximum number of items to return per page. */
8598
8741
  limit?: number;
8599
- /** @description Opaque pagination cursor returned by the previous page */
8742
+ /** @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. */
8600
8743
  cursor?: string;
8601
8744
  };
8602
8745
  header?: never;
@@ -8625,12 +8768,12 @@ interface operations {
8625
8768
  };
8626
8769
  };
8627
8770
  };
8628
- "get-v1-workspaces": {
8771
+ listWorkspaces: {
8629
8772
  parameters: {
8630
8773
  query?: {
8631
- /** @description Maximum number of items to return */
8774
+ /** @description Maximum number of items to return per page. */
8632
8775
  limit?: number;
8633
- /** @description Opaque pagination cursor returned by the previous page */
8776
+ /** @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. */
8634
8777
  cursor?: string;
8635
8778
  };
8636
8779
  header?: never;
@@ -8645,7 +8788,7 @@ interface operations {
8645
8788
  [name: string]: unknown;
8646
8789
  };
8647
8790
  content: {
8648
- "application/json": components["schemas"]["V1ListWorkspacesBody"];
8791
+ "application/json": components["schemas"]["WorkspacePage"];
8649
8792
  };
8650
8793
  };
8651
8794
  /** @description Error */
@@ -8659,7 +8802,7 @@ interface operations {
8659
8802
  };
8660
8803
  };
8661
8804
  };
8662
- "get-v1-workspaces-workspace_id": {
8805
+ getWorkspace: {
8663
8806
  parameters: {
8664
8807
  query?: never;
8665
8808
  header?: never;
@@ -8677,7 +8820,7 @@ interface operations {
8677
8820
  [name: string]: unknown;
8678
8821
  };
8679
8822
  content: {
8680
- "application/json": components["schemas"]["PublicV1GetWorkspaceBody"];
8823
+ "application/json": components["schemas"]["GetWorkspaceResponse"];
8681
8824
  };
8682
8825
  };
8683
8826
  /** @description Error */
@@ -8691,14 +8834,20 @@ interface operations {
8691
8834
  };
8692
8835
  };
8693
8836
  };
8694
- "get-v1-workspaces-workspace_id-analytics": {
8837
+ getWorkspaceAnalytics: {
8695
8838
  parameters: {
8696
- query?: {
8697
- /** @description Start date in RFC 3339 format (e.g. 2026-07-01T00:00:00Z). Required. */
8698
- start_date?: string;
8699
- /** @description End date in RFC 3339 format (e.g. 2026-07-08T00:00:00Z). Required. */
8700
- end_date?: string;
8701
- /** @description Time bucket size: hourly or daily (default: daily) */
8839
+ query: {
8840
+ /**
8841
+ * @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.
8842
+ * @example 2026-07-01T00:00:00Z
8843
+ */
8844
+ start_date: string;
8845
+ /**
8846
+ * @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.
8847
+ * @example 2026-07-08T00:00:00Z
8848
+ */
8849
+ end_date: string;
8850
+ /** @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. */
8702
8851
  granularity?: "hourly" | "daily";
8703
8852
  };
8704
8853
  header?: never;
@@ -8716,7 +8865,7 @@ interface operations {
8716
8865
  [name: string]: unknown;
8717
8866
  };
8718
8867
  content: {
8719
- "application/json": components["schemas"]["WorkspaceAnalyticsResponse"];
8868
+ "application/json": components["schemas"]["WorkspaceAnalytics"];
8720
8869
  };
8721
8870
  };
8722
8871
  /** @description Error */
@@ -8841,7 +8990,7 @@ interface operations {
8841
8990
  };
8842
8991
  };
8843
8992
  };
8844
- "get-v1-workspaces-workspace_id-billing-credit-balance": {
8993
+ getCreditBalance: {
8845
8994
  parameters: {
8846
8995
  query?: never;
8847
8996
  header?: never;
@@ -8859,7 +9008,7 @@ interface operations {
8859
9008
  [name: string]: unknown;
8860
9009
  };
8861
9010
  content: {
8862
- "application/json": components["schemas"]["V1WorkspaceCreditsBody"];
9011
+ "application/json": components["schemas"]["CreditBalance"];
8863
9012
  };
8864
9013
  };
8865
9014
  /** @description Error */
@@ -8873,51 +9022,14 @@ interface operations {
8873
9022
  };
8874
9023
  };
8875
9024
  };
8876
- "get-v1-workspaces-workspace_id-billing-credit-history": {
9025
+ listCreditHistory: {
8877
9026
  parameters: {
8878
9027
  query?: {
8879
9028
  /** @description Filter to one or more event types. Repeat to include multiple; omit for all. */
8880
9029
  event_type?: ("granted" | "expired" | "adjustment" | "converted")[] | null;
8881
- /** @description Maximum number of items to return */
8882
- limit?: number;
8883
- /** @description Opaque pagination cursor returned by the previous page */
8884
- cursor?: string;
8885
- };
8886
- header?: never;
8887
- path: {
8888
- /** @description Workspace ID */
8889
- workspace_id: string;
8890
- };
8891
- cookie?: never;
8892
- };
8893
- requestBody?: never;
8894
- responses: {
8895
- /** @description OK */
8896
- 200: {
8897
- headers: {
8898
- [name: string]: unknown;
8899
- };
8900
- content: {
8901
- "application/json": components["schemas"]["V1WorkspaceCreditHistoryBody"];
8902
- };
8903
- };
8904
- /** @description Error */
8905
- default: {
8906
- headers: {
8907
- [name: string]: unknown;
8908
- };
8909
- content: {
8910
- "application/problem+json": components["schemas"]["ErrorModel"];
8911
- };
8912
- };
8913
- };
8914
- };
8915
- "get-v1-workspaces-workspace_id-billing-credit-limits": {
8916
- parameters: {
8917
- query?: {
8918
- /** @description Maximum results per page. */
9030
+ /** @description Maximum number of items to return per page. */
8919
9031
  limit?: number;
8920
- /** @description Opaque cursor from a prior response. Omit on the first page. */
9032
+ /** @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. */
8921
9033
  cursor?: string;
8922
9034
  };
8923
9035
  header?: never;
@@ -8935,52 +9047,7 @@ interface operations {
8935
9047
  [name: string]: unknown;
8936
9048
  };
8937
9049
  content: {
8938
- "application/json": components["schemas"]["V1BillingCreditLimitsBody"];
8939
- };
8940
- };
8941
- /** @description Error */
8942
- default: {
8943
- headers: {
8944
- [name: string]: unknown;
8945
- };
8946
- content: {
8947
- "application/problem+json": components["schemas"]["ErrorModel"];
8948
- };
8949
- };
8950
- };
8951
- };
8952
- "post-v1-workspaces-workspace_id-billing-credit-limits": {
8953
- parameters: {
8954
- query?: never;
8955
- header?: never;
8956
- path: {
8957
- /** @description Workspace ID */
8958
- workspace_id: string;
8959
- };
8960
- cookie?: never;
8961
- };
8962
- requestBody: {
8963
- content: {
8964
- "application/json": components["schemas"]["V1BillingBulkSetMemberCreditLimitInputBody"];
8965
- };
8966
- };
8967
- responses: {
8968
- /** @description OK */
8969
- 200: {
8970
- headers: {
8971
- [name: string]: unknown;
8972
- };
8973
- content: {
8974
- "application/json": components["schemas"]["V1BulkSetMemberCreditLimitOutputBody"];
8975
- };
8976
- };
8977
- /** @description Every member failed; same per-member response body as 200 */
8978
- 422: {
8979
- headers: {
8980
- [name: string]: unknown;
8981
- };
8982
- content: {
8983
- "application/json": components["schemas"]["V1BulkSetMemberCreditLimitOutputBody"];
9050
+ "application/json": components["schemas"]["CreditHistoryPage"];
8984
9051
  };
8985
9052
  };
8986
9053
  /** @description Error */
@@ -8994,26 +9061,26 @@ interface operations {
8994
9061
  };
8995
9062
  };
8996
9063
  };
8997
- "get-v1-workspaces-workspace_id-billing-credit-usage": {
9064
+ getCreditUsage: {
8998
9065
  parameters: {
8999
9066
  query: {
9000
- /** @description Group rows by member or project across the window. Omit for one workspace-wide aggregate row. Cannot be combined with interval. */
9067
+ /** @description Group usage over the requested window. Omit both group_by and interval for one aggregate row. Cannot be combined with interval. */
9001
9068
  group_by?: "member" | "project";
9002
- /** @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. */
9069
+ /** @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. */
9003
9070
  interval?: "day" | "week" | "month";
9004
9071
  /** @description Required inclusive start (UTC day). */
9005
9072
  start_date: string;
9006
9073
  /** @description Inclusive end (UTC day). Defaults to today (UTC). */
9007
9074
  end_date?: string;
9008
- /** @description Filter credits to All, Build, or Run. */
9075
+ /** @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. */
9009
9076
  category?: "all" | "build" | "run";
9010
9077
  /** @description Optional: restrict to a single project's usage. */
9011
9078
  project_id?: string;
9012
9079
  /** @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. */
9013
9080
  user_id?: string;
9014
- /** @description Maximum number of items to return */
9081
+ /** @description Maximum number of items to return per page. */
9015
9082
  limit?: number;
9016
- /** @description Opaque pagination cursor returned by the previous page */
9083
+ /** @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. */
9017
9084
  cursor?: string;
9018
9085
  };
9019
9086
  header?: never;
@@ -9031,7 +9098,7 @@ interface operations {
9031
9098
  [name: string]: unknown;
9032
9099
  };
9033
9100
  content: {
9034
- "application/json": components["schemas"]["V1BillingUsageBody"];
9101
+ "application/json": components["schemas"]["CreditUsagePage"];
9035
9102
  };
9036
9103
  };
9037
9104
  /** @description Error */
@@ -9063,7 +9130,7 @@ interface operations {
9063
9130
  [name: string]: unknown;
9064
9131
  };
9065
9132
  content: {
9066
- "application/json": components["schemas"]["V1WorkspaceCreditsBody"];
9133
+ "application/json": components["schemas"]["CreditBalance"];
9067
9134
  };
9068
9135
  };
9069
9136
  /** @description Error */
@@ -9080,23 +9147,23 @@ interface operations {
9080
9147
  "get-v1-workspaces-workspace_id-billing-usage": {
9081
9148
  parameters: {
9082
9149
  query: {
9083
- /** @description Group rows by member or project across the window. Omit for one workspace-wide aggregate row. Cannot be combined with interval. */
9150
+ /** @description Group usage over the requested window. Omit both group_by and interval for one aggregate row. Cannot be combined with interval. */
9084
9151
  group_by?: "member" | "project";
9085
- /** @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. */
9152
+ /** @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. */
9086
9153
  interval?: "day" | "week" | "month";
9087
9154
  /** @description Required inclusive start (UTC day). */
9088
9155
  start_date: string;
9089
9156
  /** @description Inclusive end (UTC day). Defaults to today (UTC). */
9090
9157
  end_date?: string;
9091
- /** @description Filter credits to All, Build, or Run. */
9158
+ /** @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. */
9092
9159
  category?: "all" | "build" | "run";
9093
9160
  /** @description Optional: restrict to a single project's usage. */
9094
9161
  project_id?: string;
9095
9162
  /** @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. */
9096
9163
  user_id?: string;
9097
- /** @description Maximum number of items to return */
9164
+ /** @description Maximum number of items to return per page. */
9098
9165
  limit?: number;
9099
- /** @description Opaque pagination cursor returned by the previous page */
9166
+ /** @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. */
9100
9167
  cursor?: string;
9101
9168
  };
9102
9169
  header?: never;
@@ -9114,7 +9181,7 @@ interface operations {
9114
9181
  [name: string]: unknown;
9115
9182
  };
9116
9183
  content: {
9117
- "application/json": components["schemas"]["V1BillingUsageBody"];
9184
+ "application/json": components["schemas"]["CreditUsagePage"];
9118
9185
  };
9119
9186
  };
9120
9187
  /** @description Error */
@@ -9498,12 +9565,12 @@ interface operations {
9498
9565
  };
9499
9566
  };
9500
9567
  };
9501
- "get-v1-workspaces-workspace_id-groups": {
9568
+ listWorkspaceGroups: {
9502
9569
  parameters: {
9503
9570
  query?: {
9504
- /** @description Maximum number of items to return */
9571
+ /** @description Maximum number of items to return per page. */
9505
9572
  limit?: number;
9506
- /** @description Opaque pagination cursor returned by the previous page */
9573
+ /** @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. */
9507
9574
  cursor?: string;
9508
9575
  };
9509
9576
  header?: never;
@@ -9521,7 +9588,7 @@ interface operations {
9521
9588
  [name: string]: unknown;
9522
9589
  };
9523
9590
  content: {
9524
- "application/json": components["schemas"]["CursorListResponseV1WorkspaceGroup"];
9591
+ "application/json": components["schemas"]["WorkspaceGroupPage"];
9525
9592
  };
9526
9593
  };
9527
9594
  /** @description Error */
@@ -9603,26 +9670,26 @@ interface operations {
9603
9670
  };
9604
9671
  };
9605
9672
  };
9606
- "get-v1-workspaces-workspace_id-members": {
9673
+ listWorkspaceMembers: {
9607
9674
  parameters: {
9608
9675
  query?: {
9609
- /** @description Maximum results per page. */
9676
+ /** @description Maximum number of items to return per page. */
9610
9677
  limit?: number;
9611
- /** @description Opaque cursor from a prior response. Omit on the first page. */
9678
+ /** @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. */
9612
9679
  cursor?: string;
9613
- /** @description Substring filter applied to display name, username, and email tokens (matching the workspace member search backend). */
9680
+ /** @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. */
9614
9681
  query?: string;
9615
- /** @description Comma-separated role filter. Valid values: owner, admin, member, viewer, collaborator. Empty = all roles. Unknown values return 400. */
9682
+ /** @description Comma-separated workspace role filter. Omit to include every role. Unknown roles return 400. */
9616
9683
  roles?: string;
9617
- /** @description Filter by membership status. Default 'active' excludes pending invites. */
9684
+ /** @description Filter by membership status. Pending invites are excluded by default. */
9618
9685
  status?: "all" | "active" | "pending";
9619
- /** @description Sort field. Defaults to relevance when query is set, otherwise role + recency. */
9686
+ /** @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. */
9620
9687
  sort_by?: "name" | "joined_at" | "role" | "relevance";
9621
- /** @description Sort direction. Only applied when sort_by is set; the default-sort case has a fixed direction baked into the underlying query. */
9688
+ /** @description Direction for an explicit sort field. Defaults to descending. Ignored for the default order and relevance sorting. */
9622
9689
  sort_order?: "asc" | "desc";
9623
- /** @description Filter by SCIM provisioning status. Empty = all members, 'managed' = only SCIM-provisioned members, 'unmanaged' = only members not managed by SCIM. */
9690
+ /** @description Filter by identity-provider provisioning through SCIM (System for Cross-domain Identity Management). Omit to include members regardless of provisioning method. */
9624
9691
  scim_managed?: "managed" | "unmanaged";
9625
- /** @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. */
9692
+ /** @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. */
9626
9693
  include?: string;
9627
9694
  };
9628
9695
  header?: never;
@@ -9640,7 +9707,7 @@ interface operations {
9640
9707
  [name: string]: unknown;
9641
9708
  };
9642
9709
  content: {
9643
- "application/json": components["schemas"]["CursorListResponseV1WorkspaceMember"];
9710
+ "application/json": components["schemas"]["WorkspaceMemberPage"];
9644
9711
  };
9645
9712
  };
9646
9713
  /** @description Error */
@@ -9657,6 +9724,8 @@ interface operations {
9657
9724
  "get-v1-workspaces-workspace_id-projects": {
9658
9725
  parameters: {
9659
9726
  query?: {
9727
+ /** @description Match visible project titles and order by relevance; acknowledged by title_search in the response */
9728
+ title_search?: boolean;
9660
9729
  /** @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. */
9661
9730
  include_risk?: boolean;
9662
9731
  /** @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. */
@@ -9755,17 +9824,15 @@ interface operations {
9755
9824
  };
9756
9825
  };
9757
9826
  };
9758
- "get-v1-workspaces-workspace_id-security-center-insights": {
9827
+ getSecurityInsights: {
9759
9828
  parameters: {
9760
9829
  query?: {
9761
- /** @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. */
9830
+ /** @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. */
9762
9831
  review_priority?: ("needs_review" | "review_recommended" | "no_review_needed")[] | null;
9763
- /** @description Deprecated (ENT-3348): alias for review_priority; values from both parameters are combined. */
9764
- severity?: ("needs_review" | "review_recommended" | "no_review_needed")[] | null;
9765
9832
  };
9766
9833
  header?: never;
9767
9834
  path: {
9768
- /** @description Workspace ID */
9835
+ /** @description ID of the workspace to retrieve security insights for. */
9769
9836
  workspace_id: string;
9770
9837
  };
9771
9838
  cookie?: never;
@@ -9778,7 +9845,7 @@ interface operations {
9778
9845
  [name: string]: unknown;
9779
9846
  };
9780
9847
  content: {
9781
- "application/json": components["schemas"]["V1WorkspaceInsightsBody"];
9848
+ "application/json": components["schemas"]["WorkspaceInsights"];
9782
9849
  };
9783
9850
  };
9784
9851
  /** @description Error */
@@ -9792,32 +9859,32 @@ interface operations {
9792
9859
  };
9793
9860
  };
9794
9861
  };
9795
- "get-v1-workspaces-workspace_id-security-center-insights-projects": {
9862
+ listSecurityInsightProjects: {
9796
9863
  parameters: {
9797
9864
  query?: {
9798
- /** @description Max results per page. */
9865
+ /** @description Maximum number of items to return per page. */
9799
9866
  limit?: number;
9800
- /** @description Opaque cursor from a prior response. Omit on the first page. */
9867
+ /** @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. */
9801
9868
  cursor?: string;
9802
9869
  /** @description Free-text search across project name and owner. */
9803
9870
  query?: string;
9804
- /** @description Sort axis. When omitted, results sort by last_edited (or by relevance when 'query' is set). */
9871
+ /** @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. */
9805
9872
  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";
9806
- /** @description Activity bucket filter. */
9873
+ /** @description Filter by time since the last edit, or last update for projects never edited. Uses 14-day and 60-day boundaries. */
9807
9874
  activity?: "active" | "inactive" | "dead";
9808
9875
  /** @description Filter by publishing status. Omit for no filter. */
9809
9876
  is_published?: "true" | "false";
9810
- /** @description Filter by project visibility. */
9877
+ /** @description Filter by who can access the project in the editor. Separate from the published site access controlled by publish_status. */
9811
9878
  visibility?: "public" | "private" | "draft";
9812
- /** @description Filter to projects flagged with PII. */
9879
+ /** @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. */
9813
9880
  contains_pii?: boolean;
9814
- /** @description Filter to projects with at least one connector. */
9881
+ /** @description Set true to include only projects with a connected service. False or omitted applies no filter. */
9815
9882
  has_connectors?: boolean;
9816
- /** @description Repeat to include multiple publishing statuses. Omit for all. */
9883
+ /** @description Filter by published site access. Restricted sites may also have selected external viewers. Repeat to match any selected status; omit for no filter. */
9817
9884
  publish_status?: ("external" | "workspace" | "not_published")[] | null;
9818
- /** @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. */
9885
+ /** @description Filter projects by Security Center review priority. Repeat to match any selected priority. Omit to include every project, including those not yet scored. */
9819
9886
  review_priority?: ("needs_review" | "review_recommended" | "no_review_needed")[] | null;
9820
- /** @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. */
9887
+ /** @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. */
9821
9888
  finding_id?: string[] | null;
9822
9889
  };
9823
9890
  header?: never;
@@ -9835,7 +9902,7 @@ interface operations {
9835
9902
  [name: string]: unknown;
9836
9903
  };
9837
9904
  content: {
9838
- "application/json": components["schemas"]["V1WorkspaceInsightsProjectsBody"];
9905
+ "application/json": components["schemas"]["WorkspaceInsightsProjectPage"];
9839
9906
  };
9840
9907
  };
9841
9908
  /** @description Error */
@@ -9849,7 +9916,7 @@ interface operations {
9849
9916
  };
9850
9917
  };
9851
9918
  };
9852
- "get-v1-workspaces-workspace_id-settings": {
9919
+ getWorkspaceSettings: {
9853
9920
  parameters: {
9854
9921
  query?: never;
9855
9922
  header?: never;
@@ -9867,43 +9934,7 @@ interface operations {
9867
9934
  [name: string]: unknown;
9868
9935
  };
9869
9936
  content: {
9870
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
9871
- };
9872
- };
9873
- /** @description Error */
9874
- default: {
9875
- headers: {
9876
- [name: string]: unknown;
9877
- };
9878
- content: {
9879
- "application/problem+json": components["schemas"]["ErrorModel"];
9880
- };
9881
- };
9882
- };
9883
- };
9884
- "patch-v1-workspaces-workspace_id-settings": {
9885
- parameters: {
9886
- query?: never;
9887
- header?: never;
9888
- path: {
9889
- /** @description Workspace ID. */
9890
- workspace_id: string;
9891
- };
9892
- cookie?: never;
9893
- };
9894
- requestBody: {
9895
- content: {
9896
- "application/json": components["schemas"]["V1UpdateWorkspaceSettingsNestedInputBody"];
9897
- };
9898
- };
9899
- responses: {
9900
- /** @description OK */
9901
- 200: {
9902
- headers: {
9903
- [name: string]: unknown;
9904
- };
9905
- content: {
9906
- "application/json": components["schemas"]["V1WorkspaceSettingsBody"];
9937
+ "application/json": components["schemas"]["WorkspaceSettings"];
9907
9938
  };
9908
9939
  };
9909
9940
  /** @description Error */
@@ -10106,23 +10137,23 @@ interface operations {
10106
10137
  type Schemas = components["schemas"];
10107
10138
  type ListProjectsQuery = NonNullable<paths["/v1/projects"]["get"]["parameters"]["query"]>;
10108
10139
  type ListConnectorsQuery = NonNullable<paths["/v1/connectors"]["get"]["parameters"]["query"]>;
10109
- type MeWorkspace = Schemas["GetMeWorkspace"];
10110
- type MeResponse = Schemas["GetMeOutputBody"];
10111
- type WorkspaceMembership = Schemas["PublicV1WorkspaceMember"];
10112
- type WorkspaceWithMembership = Schemas["PublicV1WorkspaceWithMembership"];
10113
- type GetWorkspacesResponse = Schemas["V1ListWorkspacesBody"] & {
10140
+ type MeWorkspace = Schemas["CurrentUserWorkspace"];
10141
+ type MeResponse = Schemas["CurrentUser"];
10142
+ type WorkspaceMembership = Schemas["WorkspaceMembership"];
10143
+ type WorkspaceWithMembership = Schemas["WorkspaceWithMembership"];
10144
+ type GetWorkspacesResponse = Schemas["WorkspacePage"] & {
10114
10145
  workspaces: WorkspaceWithMembership[];
10115
10146
  };
10116
10147
  type MemberRole = WorkspaceMembership["role"];
10117
- type ProjectResponse = Schemas["V1ProjectResponse"];
10148
+ type ProjectResponse = Schemas["Project"];
10118
10149
  type CreateProjectResponse = Schemas["PublicV1CreateProjectResponse"] & {
10119
10150
  id: string;
10120
10151
  };
10121
10152
  type CreateProjectBody = Omit<Schemas["PublicV1ProjectCreateInputBody"], "workspace_id">;
10122
- type UpdateProjectOptions = Schemas["PublicV1PatchProjectBody"];
10123
- type EmbedURLResponse = Schemas["V1CreateEmbedURLOutputBody"];
10124
- type ListProjectItem = Schemas["PublicV1ProjectListItem"];
10125
- type ListProjectsResponse = Schemas["CursorListResponsePublicV1ProjectListItem"] & {
10153
+ type UpdateProjectOptions = Schemas["UpdateProjectRequest"];
10154
+ type EmbedURLResponse = Schemas["CreateEmbedURLResponse"];
10155
+ type ListProjectItem = Schemas["ProjectSummary"];
10156
+ type ListProjectsResponse = Schemas["ProjectSummaryPage"] & {
10126
10157
  projects: ListProjectItem[] | null;
10127
10158
  total?: number;
10128
10159
  has_more?: boolean;
@@ -10133,6 +10164,7 @@ type ProjectPatchVisibility = NonNullable<UpdateProjectOptions["visibility"]>;
10133
10164
  type SendMessageResponse = Schemas["V1SendMessageOutputBody"];
10134
10165
  type GetMessageResponse = Schemas["V1MessageResponse"];
10135
10166
  type MessageSummary = Schemas["V1MessageListItem"];
10167
+ type MessageCompletionReason = NonNullable<Schemas["V1MessageResponse"]["completion_reason"]>;
10136
10168
  type AwaitingInputSummary = Partial<Schemas["V1AwaitingInputSummary"]>;
10137
10169
  type ListMessagesResponse = Schemas["CursorListResponseV1MessageListItem"] & {
10138
10170
  messages: MessageSummary[] | null;
@@ -10214,11 +10246,11 @@ type ListMCPConnectorsResponse = Omit<ListConnectorsResponse, "connectors"> & Pa
10214
10246
  };
10215
10247
  type TimeSeriesDataPoint = Schemas["TimeSeriesDataPoint"];
10216
10248
  type TimeSeriesData = Schemas["TimeSeriesData"];
10217
- type ListDataPoint = Schemas["ListDataPoint"];
10218
- type ListData = Schemas["ListData"];
10249
+ type ListDataPoint = Schemas["AnalyticsBreakdownPoint"];
10250
+ type ListData = Schemas["AnalyticsBreakdown"];
10219
10251
  type ProjectAnalyticsResponse = Schemas["ProjectAnalyticsResponse"];
10220
10252
  type TrendDataPoint = Schemas["TrendDataPoint"];
10221
- type ProjectAnalyticsTrendResponse = Schemas["ProjectTrendResponse"];
10253
+ type ProjectAnalyticsTrendResponse = Schemas["AnalyticsTrend"];
10222
10254
  type RemixJobStepInfo = Schemas["RemixJobStepInfo"];
10223
10255
  type RemixJobStatus = "unknown" | "preparing" | "running" | "completed" | "error";
10224
10256
  type RemixJobStep = "starting" | "creating_new_project" | "restoring_supabase" | "copying_history" | "preparing_repository" | "remixing_integration" | "pushing_repository" | "finalizing" | "completed";
@@ -10364,10 +10396,13 @@ interface RemixResult {
10364
10396
  interface RemixWaitOptions {
10365
10397
  pollInterval?: number;
10366
10398
  timeout?: number;
10399
+ /** The optional step argument is retained for callback compatibility; the API no longer returns it. */
10367
10400
  onProgress?: (status: RemixJobStatus, step?: RemixJobStepInfo) => void;
10368
10401
  }
10369
10402
  interface MessageCompletionResult {
10370
10403
  status: "completed" | "stopped" | "awaiting_input" | "timeout" | "error";
10404
+ /** How the turn ended; absent while running, on SDK-side timeout, and for turns that predate it. */
10405
+ completion_reason?: MessageCompletionReason;
10371
10406
  message_id: string;
10372
10407
  content: string;
10373
10408
  awaiting_input?: AwaitingInputSummary;
@@ -10407,10 +10442,8 @@ interface ListProjectsOptions {
10407
10442
  visibility?: ListProjectsQuery["visibility"];
10408
10443
  publish_status?: ListProjectsQuery["publish_status"];
10409
10444
  folder_id?: ListProjectsQuery["folder_id"];
10410
- folder_ids?: ListProjectsQuery["folder_ids"];
10411
10445
  user_id?: ListProjectsQuery["user_id"];
10412
10446
  type?: ListProjectsQuery["type"];
10413
- search_fields?: ListProjectsQuery["search_fields"];
10414
10447
  viewed_by_me?: ListProjectsQuery["viewed_by_me"];
10415
10448
  cursor?: ListProjectsQuery["cursor"];
10416
10449
  limit?: ListProjectsQuery["limit"];
@@ -10467,7 +10500,7 @@ declare class LovableClient {
10467
10500
  image_url?: string;
10468
10501
  name: string;
10469
10502
  num_projects: number;
10470
- plan: string;
10503
+ plan: "free" | "pro" | "business" | "enterprise";
10471
10504
  updated_at?: string;
10472
10505
  }>;
10473
10506
  /**
@@ -10709,19 +10742,7 @@ declare class LovableClient {
10709
10742
  * @returns The remix job ID for polling progress
10710
10743
  */
10711
10744
  remixProject(sourceProjectId: string, options: RemixProjectOptions): Promise<string>;
10712
- /**
10713
- * Wait for a remix operation to complete.
10714
- *
10715
- * Polls the remix job endpoint until the job reaches "completed" or "error" status.
10716
- *
10717
- * @param sourceProjectId - The source project ID. Kept for backward compatibility; the public job endpoint is keyed by job ID.
10718
- * @param jobId - The job ID returned by `remixProject()`
10719
- * @param options.pollInterval - Time between polls in ms (default: 2000)
10720
- * @param options.timeout - Maximum time to wait in ms (default: 300000 = 5 minutes)
10721
- * @param options.onProgress - Optional callback for status/step updates
10722
- * @returns The new project ID
10723
- * @throws Error if the remix fails or timeout is reached
10724
- */
10745
+ /** sourceProjectId is retained for compatibility; the API looks up jobs by jobId. */
10725
10746
  waitForRemix(sourceProjectId: string, jobId: string, options?: RemixWaitOptions): Promise<RemixResult>;
10726
10747
  /**
10727
10748
  * Wait for a project to reach "completed" status.
@@ -10758,5 +10779,5 @@ declare class LovableClient {
10758
10779
  waitForProjectPublished(projectId: string, options?: WaitOptions): Promise<ProjectResponse>;
10759
10780
  }
10760
10781
  //#endregion
10761
- export { ApiError, type ChatMessageOptions, type ChatRequest, type ChatResponse, type ChatResponseOptions, type ConnectorItem, type ContinuationOverride, type CreateProjectBody, type CreateProjectOptions, type CreateProjectResponse, type CreateVariantOptions, type CreateVariantResponse, type CursorPaginationOptions, type DatabaseQueryResult, type DatabaseStatus, type DeploymentResponse, type DiffEntry, type DiffHunk, type DiffLine, type EditSummary, type EditsResponse, type EmbedURLResponse, type EnableDatabaseResult, type FileInput, type FileUploadUrlResponse, type GetMessageResponse, type GetWorkspacesResponse, type GitDiffResponse, type GitFileEntry, type GitFilesResponse, type KnowledgeResponse, type LibraryProjectResponse, type ListConnectorsOptions, type ListConnectorsResponse, type ListCursorPaginationOptions, type ListData, type ListDataPoint, type ListHybridPaginationOptions, type ListLibraryProjectsResponse, type ListMCPConnectorsResponse, type ListMessagesOptions, type ListMessagesResponse, type ListOffsetPaginationOptions, type ListPaginationOptions, type ListProjectItem, type ListProjectsOptions, type ListProjectsResponse, type ListSeamlessConnectorsResponse, type ListStandardConnectorsResponse, type ListTemplateProjectsResponse, LovableClient, type LovableClientOptions, type LovableError, type MCPConnectorItem, type MeResponse, type MeWorkspace, type MemberRole, type MessageCompletionOptions, type MessageCompletionResult, type MessageSummary, type ProjectAnalyticsResponse, type ProjectAnalyticsTrendResponse, type ProjectResponse, type ProjectStatus, type ProjectVisibility, type RateLimitInfo, type RemixJobStatus, type RemixJobStep, type RemixJobStepInfo, type RemixMode, type RemixProjectOptions, type RemixResult, type RemixWaitOptions, type SeamlessConnectorItem, type SendMessageResponse, type StandardConnectorItem, type TemplateProjectResponse, type TimeSeriesData, type TimeSeriesDataPoint, type TrendDataPoint, type UnscopedFile, type WaitOptions, type WorkspaceMembership, type WorkspaceWithMembership };
10782
+ export { ApiError, type ChatMessageOptions, type ChatRequest, type ChatResponse, type ChatResponseOptions, type ConnectorItem, type ContinuationOverride, type CreateProjectBody, type CreateProjectOptions, type CreateProjectResponse, type CreateVariantOptions, type CreateVariantResponse, type CursorPaginationOptions, type DatabaseQueryResult, type DatabaseStatus, type DeploymentResponse, type DiffEntry, type DiffHunk, type DiffLine, type EditSummary, type EditsResponse, type EmbedURLResponse, type EnableDatabaseResult, type FileInput, type FileUploadUrlResponse, type GetMessageResponse, type GetWorkspacesResponse, type GitDiffResponse, type GitFileEntry, type GitFilesResponse, type KnowledgeResponse, type LibraryProjectResponse, type ListConnectorsOptions, type ListConnectorsResponse, type ListCursorPaginationOptions, type ListData, type ListDataPoint, type ListHybridPaginationOptions, type ListLibraryProjectsResponse, type ListMCPConnectorsResponse, type ListMessagesOptions, type ListMessagesResponse, type ListOffsetPaginationOptions, type ListPaginationOptions, type ListProjectItem, type ListProjectsOptions, type ListProjectsResponse, type ListSeamlessConnectorsResponse, type ListStandardConnectorsResponse, type ListTemplateProjectsResponse, LovableClient, type LovableClientOptions, type LovableError, type MCPConnectorItem, type MeResponse, type MeWorkspace, type MemberRole, type MessageCompletionOptions, type MessageCompletionReason, type MessageCompletionResult, type MessageSummary, type ProjectAnalyticsResponse, type ProjectAnalyticsTrendResponse, type ProjectResponse, type ProjectStatus, type ProjectVisibility, type RateLimitInfo, type RemixJobStatus, type RemixJobStep, type RemixJobStepInfo, type RemixMode, type RemixProjectOptions, type RemixResult, type RemixWaitOptions, type SeamlessConnectorItem, type SendMessageResponse, type StandardConnectorItem, type TemplateProjectResponse, type TimeSeriesData, type TimeSeriesDataPoint, type TrendDataPoint, type UnscopedFile, type WaitOptions, type WorkspaceMembership, type WorkspaceWithMembership };
10762
10783
  //# sourceMappingURL=index.d.ts.map