You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: cloud/api/management/README.md
+51-24Lines changed: 51 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,13 @@ icon: code
5
5
6
6
# Management APIs
7
7
8
-
The Spice.ai Management API (also known as the control-plane API) provides programmatic access to manage Spice.ai Cloud resources—apps, deployments, secrets, API keys, and organization members.
8
+
The Spice.ai Management API (also known as the control-plane API) provides programmatic access to manage Spice.ai Cloud resources—projects, deployments, secrets, API keys, and organization members.
9
+
10
+
{% hint style="info" %}
11
+
**Projects were previously called apps.** Every `/v1/projects` endpoint is also served at the legacy `/v1/apps` path, which remains supported. Existing integrations continue to work without changes.
12
+
13
+
The legacy paths are marked deprecated in the OpenAPI specification, and new integrations should use `/v1/projects`. See [Projects and apps](#projects-and-apps).
14
+
{% endhint %}
9
15
10
16
## Base URL
11
17
@@ -21,6 +27,24 @@ All API endpoints are versioned under `/v1`:
21
27
https://api.spice.ai/v1
22
28
```
23
29
30
+
## Projects and apps
31
+
32
+
What the API and portal now call a **project** was previously called an **app**. The resource is unchanged — only the name is different.
|`/v1/apps`| Legacy, still served |`{ "apps": [...] }`|
40
+
41
+
Two details matter when migrating:
42
+
43
+
***The list envelope differs.**`GET /v1/projects` returns results under a `projects` key, while `GET /v1/apps` keeps its original `apps` key. A client switching to the canonical path must read the new key. All other response shapes and field names are identical, including the `id` and `name` fields on each resource.
44
+
***OAuth scope names are unchanged.** The scopes are still `apps:read`, `apps:write`, and `apps:delete`, because they are embedded in already-issued tokens. They grant access to projects under either path.
45
+
46
+
The Spice CLI, Terraform provider, and SDKs continue to call the legacy paths and are unaffected.
47
+
24
48
## Authentication
25
49
26
50
The Management API supports three authentication methods:
@@ -44,7 +68,7 @@ PATs are long-lived, user-scoped tokens. Recommended for:
|`*`| Full access to all resources (not recommended for production) |
105
-
|`apps:read`| Read app information|
106
-
|`apps:write`| Create and update apps |
107
-
|`apps:delete`| Delete apps |
129
+
|`apps:read`| Read project information |
130
+
|`apps:write`| Create and update projects|
131
+
|`apps:delete`| Delete projects|
108
132
|`deployments:read`| View deployment status and history |
109
133
|`deployments:write`| Create new deployments |
110
134
|`secrets:read`| List and view secrets (values are masked) |
111
135
|`secrets:write`| Create, update, and delete secrets |
112
-
|`config:read`| Read app configuration|
113
-
|`config:write`| Update app configuration|
136
+
|`config:read`| Read project configuration |
137
+
|`config:write`| Update project configuration |
114
138
|`members:read`| View organization members |
115
139
|`members:write`| Add and update organization members |
116
140
|`members:delete`| Remove organization members |
@@ -119,12 +143,13 @@ Access to API resources is controlled through scopes. PATs and OAuth clients mus
119
143
120
144
* A write scope automatically includes its corresponding read scope (e.g. `apps:write` implies `apps:read`).
121
145
* The wildcard scope (`*`) grants all permissions.
146
+
* The `apps:*` scope names are unchanged by the projects rename, and apply to projects.
122
147
123
148
## Rate Limiting
124
149
125
-
Requests are rate-limited per app. These limits are a high-level failsafe; actual throughput depends on the size of your deployed Spice instance or cluster.
150
+
Requests are rate-limited per project. These limits are a high-level failsafe; actual throughput depends on the size of your deployed Spice instance or cluster.
126
151
127
-
### Per-App Request Rate Limits
152
+
### Per-Project Request Rate Limits
128
153
129
154
| Plan | Requests / second |
130
155
| ---------- | ----------------- |
@@ -204,12 +229,12 @@ Official SDKs are available for popular languages:
204
229
205
230
*[Health](/broken/pages/MMiAVKRYaydEPCc1zdZU) - API health check
206
231
*[Regions](/broken/pages/6ZPPX3ncuyaq7usBYCzO) - List available deployment regions
*[Container Images](/broken/pages/5fsccwHHHi12wJt5s0Ca) - List available runtime versions
214
239
215
240
## Terraform Provider
@@ -218,33 +243,35 @@ Manage Spice.ai resources as infrastructure-as-code with the [Spice.ai Terraform
218
243
219
244
## Examples
220
245
221
-
### List all apps
246
+
### List all projects
222
247
223
248
```bash
224
249
curl -H "Authorization: Bearer <token>" \
225
-
https://api.spice.ai/v1/apps
250
+
https://api.spice.ai/v1/projects
226
251
```
227
252
228
-
### Create a new app
253
+
Results are returned under a `projects` key. The legacy `GET /v1/apps` path returns the same records under an `apps` key.
254
+
255
+
### Create a new project
229
256
230
257
```bash
231
-
curl -X POST https://api.spice.ai/v1/apps \
258
+
curl -X POST https://api.spice.ai/v1/projects \
232
259
-H "Authorization: Bearer <token>" \
233
260
-H "Content-Type: application/json" \
234
261
-d '{
235
-
"name": "my-app",
262
+
"name": "my-project",
236
263
"region": "us-west-2",
237
-
"description": "My Spice app",
264
+
"description": "My Spice project",
238
265
"visibility": "private"
239
266
}'
240
267
```
241
268
242
-
Organizations with a [dedicated cluster](dedicated-clusters.md) can pass `cluster_name` in place of `region` to create the app on their dedicated infrastructure.
269
+
Organizations with a [dedicated cluster](dedicated-clusters.md) can pass `cluster_name` in place of `region` to create the project on their dedicated infrastructure.
243
270
244
271
### Create a deployment
245
272
246
273
```bash
247
-
curl -X POST https://api.spice.ai/v1/apps/123/deployments \
274
+
curl -X POST https://api.spice.ai/v1/projects/123/deployments \
248
275
-H "Authorization: Bearer <token>" \
249
276
-H "Content-Type: application/json" \
250
277
-d '{
@@ -257,7 +284,7 @@ curl -X POST https://api.spice.ai/v1/apps/123/deployments \
257
284
### Add a secret
258
285
259
286
```bash
260
-
curl -X POST https://api.spice.ai/v1/apps/123/secrets \
287
+
curl -X POST https://api.spice.ai/v1/projects/123/secrets \
Copy file name to clipboardExpand all lines: cloud/api/management/dedicated-clusters.md
+21-21Lines changed: 21 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
1
---
2
-
description: Creating and managing apps on a dedicated, single-tenant cluster
2
+
description: Creating and managing projects on a dedicated, single-tenant cluster
3
3
icon: server
4
4
---
5
5
6
6
# Dedicated Clusters
7
7
8
-
An organization on an enterprise plan can have one or more **dedicated clusters**: Spice-managed, single-tenant infrastructure where an organization's apps run only alongside other apps from the same organization — never on shared infrastructure. Each cluster has its own `cluster_name`, isolated network, and connection endpoint.
8
+
An organization on an enterprise plan can have one or more **dedicated clusters**: Spice-managed, single-tenant infrastructure where an organization's projects run only alongside other projects from the same organization — never on shared infrastructure. Each cluster has its own `cluster_name`, isolated network, and connection endpoint.
9
9
10
-
Dedicated clusters are provisioned by Spice.ai and requested through [support](https://spice.ai/support). Once a cluster is provisioned and registered to an organization, it is available to the Management API and in the Portal's app-creation picker.
10
+
Dedicated clusters are provisioned by Spice.ai and requested through [support](https://spice.ai/support). Once a cluster is provisioned and registered to an organization, it is available to the Management API and in the Portal's project-creation picker.
-**`cluster_name`** — the cluster's identifier, used when creating or reassigning apps.
37
-
-**`endpoint`** — the cluster's data-plane endpoint (an `https://` URL); apps running on the cluster are reached at this URL.
36
+
-**`cluster_name`** — the cluster's identifier, used when creating or reassigning projects.
37
+
-**`endpoint`** — the cluster's data-plane endpoint (an `https://` URL); projects running on the cluster are reached at this URL.
38
38
39
-
## Creating an app on a dedicated cluster
39
+
## Creating a project on a dedicated cluster
40
40
41
-
A create request specifies `cluster_name` instead of `region`, set to a `cluster_name` returned by `GET /v1/clusters`. Exactly one of the two is provided; the app's region is derived from the cluster. The request requires the `apps:write` scope.
41
+
A create request specifies `cluster_name` instead of `region`, set to a `cluster_name` returned by `GET /v1/clusters`. Exactly one of the two is provided; the project's region is derived from the cluster. The request requires the `apps:write` scope.
42
42
43
43
```bash
44
-
curl -X POST https://api.spice.ai/v1/apps \
44
+
curl -X POST https://api.spice.ai/v1/projects \
45
45
-H "Authorization: Bearer <token>" \
46
46
-H "Content-Type: application/json" \
47
47
-d '{
48
-
"name": "my-app",
48
+
"name": "my-project",
49
49
"cluster_name": "acme-prod-sandbox",
50
-
"description": "An app on a dedicated cluster"
50
+
"description": "A project on a dedicated cluster"
51
51
}'
52
52
```
53
53
@@ -56,14 +56,14 @@ The response includes the resolved assignment and the cluster's endpoint:
An app created without `cluster_name` deploys to the shared regional infrastructure as usual; `cluster_name: null` is equivalent to omitting it.
66
+
A project created without `cluster_name` deploys to the shared regional infrastructure as usual; `cluster_name: null` is equivalent to omitting it.
67
67
68
68
{% hint style="info" %}
69
69
If `region` is also provided it must match the cluster's region.
@@ -77,36 +77,36 @@ If `region` is also provided it must match the cluster's region.
77
77
|`400``'<name>' is not a deployable cluster`| The name is not a deployable cluster — a `cluster_name` from `GET /v1/clusters` is required |
78
78
|`400``region '<r>' does not match cluster region '<r2>'`| An explicit `region` was provided that differs from the cluster's region |
79
79
80
-
## Moving an existing app to a dedicated cluster
80
+
## Moving an existing project to a dedicated cluster
81
81
82
-
`PUT /v1/apps/{appId}` with `cluster_name` reassigns the app. Subsequent deployments land on the cluster, and the app's endpoint changes to the cluster's host.
82
+
`PUT /v1/projects/{projectId}` with `cluster_name` reassigns the project. Subsequent deployments land on the cluster, and the project's endpoint changes to the cluster's host.
83
83
84
84
```bash
85
-
curl -X PUT https://api.spice.ai/v1/apps/123 \
85
+
curl -X PUT https://api.spice.ai/v1/projects/123 \
86
86
-H "Authorization: Bearer <token>" \
87
87
-H "Content-Type: application/json" \
88
88
-d '{"cluster_name": "acme-prod-sandbox"}'
89
89
```
90
90
91
91
{% hint style="warning" %}
92
-
Reassigning an app changes its data and Flight endpoints. Clients that pin the old hostnames must be updated, and a new [deployment](README.md#create-a-deployment) created so the app's runtime is placed on the cluster.
92
+
Reassigning a project changes its data and Flight endpoints. Clients that pin the old hostnames must be updated, and a new [deployment](README.md#create-a-deployment) created so the project's runtime is placed on the cluster.
93
93
{% endhint %}
94
94
95
-
## Querying apps on a dedicated cluster
95
+
## Querying projects on a dedicated cluster
96
96
97
-
The app and `GET /v1/clusters` responses return the cluster's `endpoint` — the URL clients connect to.
97
+
The project and `GET /v1/clusters` responses return the cluster's `endpoint` — the URL clients connect to.
98
98
99
-
It serves the same APIs (SQL, search, and LLM over HTTP, plus Apache Arrow Flight), and authentication is unchanged — the app's [API key](../../portal/apps/api-keys.md) or platform credentials work exactly as on shared infrastructure. For Apache Arrow Flight, the endpoint's host is used with `-data` replaced by `-flight`, over `grpc+tls://<host>:443`.
99
+
It serves the same APIs (SQL, search, and LLM over HTTP, plus Apache Arrow Flight), and authentication is unchanged — the project's [API key](../../portal/apps/api-keys.md) or platform credentials work exactly as on shared infrastructure. For Apache Arrow Flight, the endpoint's host is used with `-data` replaced by `-flight`, over `grpc+tls://<host>:443`.
100
100
101
101
With the [SDKs](../../../sdks/), the endpoint replaces the `data.spiceai.io` / `flight.spiceai.io` defaults. For example, with the [Python SDK](../../../sdks/python-sdk/) over Flight:
Everything else — deployments, secrets, API keys, spicepod configuration — works identically to apps on shared infrastructure. The [Management APIs](README.md) reference documents the full endpoint set.
112
+
Everything else — deployments, secrets, API keys, spicepod configuration — works identically to projects on shared infrastructure. The [Management APIs](README.md) reference documents the full endpoint set.
0 commit comments