> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# Connect JSON RPC reference

> **Availability:** The DevBase runtime and production API are not yet deployed. This page and its examples describe the committed v1 contract for integration planning; requests to the API URL will not succeed until the runtime is released.

This reference is generated from the committed `devbase.v1` descriptor and method-policy inventory. It contains only RPCs available to server-side API keys. In the downloadable `connect.json`, top-level `methods` use the production `baseUrl`. Non-production fixtures are grouped under `testEnvironment.methods`; resolve `testEnvironment.baseUrlEnvironmentVariable` from your test configuration and never inherit the production base URL. Replace `${BASE64_SECRET_VALUE}` in secret examples with a securely generated value before sending a request.

## `/devbase.v1.ArtifactService/CompleteArtifactUpload`

- Request: `devbase.v1.CompleteArtifactUploadRequest`
- Response: `devbase.v1.CompleteArtifactUploadResponse`
- API-key scopes: `artifacts:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `artifactId`              | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field      | Protobuf type                   | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------- | -------- | ---------- | ----- |
| `artifact` | `message (devbase.v1.Artifact)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.ArtifactService/CompleteArtifactUpload" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"artifactId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.ArtifactService/CreateArtifactDownload`

- Request: `devbase.v1.CreateArtifactDownloadRequest`
- Response: `devbase.v1.CreateArtifactDownloadResponse`
- API-key scopes: `artifacts:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`   | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `artifactId`  | `message (devbase.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field         | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------- | ------------------------------------- | -------- | ---------- | ----- |
| `artifact`    | `message (devbase.v1.Artifact)`       | false    | object     |       |
| `downloadUrl` | `string`                              | false    | value      |       |
| `expiresAt`   | `message (google.protobuf.Timestamp)` | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.ArtifactService/CreateArtifactDownload" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"artifactId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.ArtifactService/CreateArtifactUpload`

- Request: `devbase.v1.CreateArtifactUploadRequest`
- Response: `devbase.v1.CreateArtifactUploadResponse`
- API-key scopes: `artifacts:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                | Protobuf type                        | Repeated | JSON shape | Oneof |
| -------------------- | ------------------------------------ | -------- | ---------- | ----- |
| `requestId`          | `message (devbase.v1.UUIDv7)`        | false    | object     |       |
| `workspaceId`        | `message (devbase.v1.UUIDv7)`        | false    | object     |       |
| `miniAppId`          | `string`                             | false    | value      |       |
| `name`               | `string`                             | false    | value      |       |
| `mimeType`           | `string`                             | false    | value      |       |
| `sizeBytes`          | `uint64`                             | false    | string     |       |
| `sha256Hex`          | `string`                             | false    | value      |       |
| `requestedRetention` | `message (google.protobuf.Duration)` | false    | string     |       |

#### Response

| Field             | Protobuf type                         | Repeated | JSON shape             | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------------------- | ----- |
| `artifact`        | `message (devbase.v1.Artifact)`       | false    | object                 |       |
| `uploadUrl`       | `string`                              | false    | value                  |       |
| `requiredHeaders` | `map<string, string>`                 | false    | object keyed by string |       |
| `expiresAt`       | `message (google.protobuf.Timestamp)` | false    | string                 |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.ArtifactService/CreateArtifactUpload" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"mimeType":"application/octet-stream","miniAppId":"example","name":"example","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"requestedRetention":"1.000000001s","sha256Hex":"0000000000000000000000000000000000000000000000000000000000000000","sizeBytes":"1","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.ArtifactService/DeleteArtifact`

- Request: `devbase.v1.DeleteArtifactRequest`
- Response: `devbase.v1.DeleteArtifactResponse`
- API-key scopes: `artifacts:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `artifactId`              | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field        | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------ | ----------------------------- | -------- | ---------- | ----- |
| `artifactId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.ArtifactService/DeleteArtifact" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"artifactId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.ArtifactService/GetArtifact`

- Request: `devbase.v1.GetArtifactRequest`
- Response: `devbase.v1.GetArtifactResponse`
- API-key scopes: `artifacts:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `artifactId`  | `message (devbase.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field      | Protobuf type                   | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------- | -------- | ---------- | ----- |
| `artifact` | `message (devbase.v1.Artifact)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.ArtifactService/GetArtifact" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"artifactId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.ArtifactService/ListArtifacts`

- Request: `devbase.v1.ListArtifactsRequest`
- Response: `devbase.v1.ListArtifactsResponse`
- API-key scopes: `artifacts:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------- | ---------------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)`      | false    | object     |       |
| `page`        | `message (devbase.v1.PageRequest)` | false    | object     |       |

#### Response

| Field       | Protobuf type                   | Repeated | JSON shape | Oneof |
| ----------- | ------------------------------- | -------- | ---------- | ----- |
| `artifacts` | `message (devbase.v1.Artifact)` | true     | array      |       |
| `page`      | `message (devbase.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.ArtifactService/ListArtifacts" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"page":{"cursor":"","pageSize":1},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.CatalogService/GetMiniApp`

- Request: `devbase.v1.GetMiniAppRequest`
- Response: `devbase.v1.GetMiniAppResponse`
- API-key scopes: `catalog:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `miniAppId`   | `string`                      | false    | value      |       |

#### Response

| Field     | Protobuf type                            | Repeated | JSON shape | Oneof |
| --------- | ---------------------------------------- | -------- | ---------- | ----- |
| `miniApp` | `message (devbase.v1.MiniAppDescriptor)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.CatalogService/GetMiniApp" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"miniAppId":"example","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.CatalogService/ListMiniApps`

- Request: `devbase.v1.ListMiniAppsRequest`
- Response: `devbase.v1.ListMiniAppsResponse`
- API-key scopes: `catalog:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------- | ---------------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)`      | false    | object     |       |
| `page`        | `message (devbase.v1.PageRequest)` | false    | object     |       |

#### Response

| Field      | Protobuf type                            | Repeated | JSON shape | Oneof |
| ---------- | ---------------------------------------- | -------- | ---------- | ----- |
| `miniApps` | `message (devbase.v1.MiniAppDescriptor)` | true     | array      |       |
| `page`     | `message (devbase.v1.PageInfo)`          | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.CatalogService/ListMiniApps" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"page":{"cursor":"","pageSize":1},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.JobService/CancelJob`

- Request: `devbase.v1.CancelJobRequest`
- Response: `devbase.v1.CancelJobResponse`
- API-key scopes: `jobs:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `jobId`                   | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field | Protobuf type              | Repeated | JSON shape | Oneof |
| ----- | -------------------------- | -------- | ---------- | ----- |
| `job` | `message (devbase.v1.Job)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.JobService/CancelJob" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"expectedResourceVersion":"1","jobId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.JobService/DeleteJob`

- Request: `devbase.v1.DeleteJobRequest`
- Response: `devbase.v1.DeleteJobResponse`
- API-key scopes: `jobs:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `jobId`                   | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field   | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------- | ----------------------------- | -------- | ---------- | ----- |
| `jobId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.JobService/DeleteJob" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"expectedResourceVersion":"1","jobId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.JobService/GetJob`

- Request: `devbase.v1.GetJobRequest`
- Response: `devbase.v1.GetJobResponse`
- API-key scopes: `jobs:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `jobId`       | `message (devbase.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field | Protobuf type              | Repeated | JSON shape | Oneof |
| ----- | -------------------------- | -------- | ---------- | ----- |
| `job` | `message (devbase.v1.Job)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.JobService/GetJob" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"jobId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.JobService/ListJobs`

- Request: `devbase.v1.ListJobsRequest`
- Response: `devbase.v1.ListJobsResponse`
- API-key scopes: `jobs:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------- | ---------------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)`      | false    | object     |       |
| `page`        | `message (devbase.v1.PageRequest)` | false    | object     |       |
| `miniAppId`   | `string`                           | false    | value      |       |
| `state`       | `enum (devbase.v1.JobState)`       | false    | string     |       |

#### Response

| Field  | Protobuf type                   | Repeated | JSON shape | Oneof |
| ------ | ------------------------------- | -------- | ---------- | ----- |
| `jobs` | `message (devbase.v1.Job)`      | true     | array      |       |
| `page` | `message (devbase.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.JobService/ListJobs" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"miniAppId":"example","page":{"cursor":"","pageSize":1},"state":"JOB_STATE_UNSPECIFIED","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.JobService/WatchJob`

- Request: `devbase.v1.WatchJobRequest`
- Response: `devbase.v1.WatchJobResponse`
- API-key scopes: `jobs:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                  | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------------- | ----------------------------- | -------- | ---------- | ----- |
| `workspaceId`          | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `jobId`                | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `afterResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field       | Protobuf type                       | Repeated | JSON shape | Oneof |
| ----------- | ----------------------------------- | -------- | ---------- | ----- |
| `job`       | `message (devbase.v1.Job)`          | false    | object     | event |
| `heartbeat` | `message (devbase.v1.JobHeartbeat)` | false    | object     | event |

- Streaming: Connect server-streaming with length-prefixed JSON envelopes.

```bash
node <<'NODE' | curl --no-buffer -X POST "https://devbase.api.delino.io/devbase.v1.JobService/WatchJob" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/connect+json' \
  -H 'Connect-Protocol-Version: 1' \
  --data-binary @- \
  --output watchjob.connect
const body = Buffer.from(JSON.stringify({"afterResourceVersion":"1","jobId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}));
const frame = Buffer.alloc(5);
frame.writeUInt32BE(body.length, 1);
process.stdout.write(Buffer.concat([frame, body]));
NODE
```

The response is written as Connect JSON envelopes to `watchjob.connect`; decode its five-byte envelopes with a Connect-capable client.

## `/devbase.v1.PublicTestFixtureService/RunAsync`

**Non-production only.** This fixture is registered only with `ENABLE_TEST_FIXTURE=true` in a test environment. Use your configured test API base URL.

- Request: `devbase.v1.RunAsyncRequest`
- Response: `devbase.v1.RunAsyncResponse`
- API-key scopes: `test-fixture:execute`
- Billing: `metered`
- Execution: `asynchronous`

### JSON fields

#### Request

| Field              | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------ | ----------------------------- | -------- | ---------- | ----- |
| `requestId`        | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`      | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `input`            | `string`                      | false    | value      |       |
| `inputArtifactIds` | `message (devbase.v1.UUIDv7)` | true     | array      |       |
| `secretIds`        | `message (devbase.v1.UUIDv7)` | true     | array      |       |

#### Response

| Field | Protobuf type              | Repeated | JSON shape | Oneof |
| ----- | -------------------------- | -------- | ---------- | ----- |
| `job` | `message (devbase.v1.Job)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "$DEVBASE_TEST_API_BASE_URL/devbase.v1.PublicTestFixtureService/RunAsync" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"input":"example","inputArtifactIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.PublicTestFixtureService/RunStream`

**Non-production only.** This fixture is registered only with `ENABLE_TEST_FIXTURE=true` in a test environment. Use your configured test API base URL.

- Request: `devbase.v1.RunStreamRequest`
- Response: `devbase.v1.RunStreamResponse`
- API-key scopes: `test-fixture:execute`
- Billing: `metered`
- Execution: `synchronous`

### JSON fields

#### Request

| Field              | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------ | ----------------------------- | -------- | ---------- | ----- |
| `requestId`        | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`      | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `input`            | `string`                      | false    | value      |       |
| `inputArtifactIds` | `message (devbase.v1.UUIDv7)` | true     | array      |       |
| `secretIds`        | `message (devbase.v1.UUIDv7)` | true     | array      |       |

#### Response

| Field      | Protobuf type | Repeated | JSON shape | Oneof |
| ---------- | ------------- | -------- | ---------- | ----- |
| `output`   | `string`      | false    | value      |       |
| `sequence` | `uint32`      | false    | value      |       |

- Streaming: Connect server-streaming with length-prefixed JSON envelopes.

```bash
node <<'NODE' | curl --no-buffer -X POST "$DEVBASE_TEST_API_BASE_URL/devbase.v1.PublicTestFixtureService/RunStream" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/connect+json' \
  -H 'Connect-Protocol-Version: 1' \
  --data-binary @- \
  --output watchjob.connect
const body = Buffer.from(JSON.stringify({"input":"example","inputArtifactIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}));
const frame = Buffer.alloc(5);
frame.writeUInt32BE(body.length, 1);
process.stdout.write(Buffer.concat([frame, body]));
NODE
```

The response is written as Connect JSON envelopes to `watchjob.connect`; decode its five-byte envelopes with a Connect-capable client.

## `/devbase.v1.PublicTestFixtureService/RunSync`

**Non-production only.** This fixture is registered only with `ENABLE_TEST_FIXTURE=true` in a test environment. Use your configured test API base URL.

- Request: `devbase.v1.RunSyncRequest`
- Response: `devbase.v1.RunSyncResponse`
- API-key scopes: `test-fixture:execute`
- Billing: `metered`
- Execution: `synchronous`

### JSON fields

#### Request

| Field              | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------ | ----------------------------- | -------- | ---------- | ----- |
| `requestId`        | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`      | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `input`            | `string`                      | false    | value      |       |
| `inputArtifactIds` | `message (devbase.v1.UUIDv7)` | true     | array      |       |
| `secretIds`        | `message (devbase.v1.UUIDv7)` | true     | array      |       |

#### Response

| Field    | Protobuf type | Repeated | JSON shape | Oneof |
| -------- | ------------- | -------- | ---------- | ----- |
| `output` | `string`      | false    | value      |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "$DEVBASE_TEST_API_BASE_URL/devbase.v1.PublicTestFixtureService/RunSync" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"input":"example","inputArtifactIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.SecretService/CreateSecret`

- Request: `devbase.v1.CreateSecretRequest`
- Response: `devbase.v1.CreateSecretResponse`
- API-key scopes: `secrets:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`   | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `name`        | `string`                      | false    | value      |       |
| `value`       | `bytes`                       | false    | string     |       |

#### Response

| Field    | Protobuf type                 | Repeated | JSON shape | Oneof |
| -------- | ----------------------------- | -------- | ---------- | ----- |
| `secret` | `message (devbase.v1.Secret)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.SecretService/CreateSecret" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"name":"example","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"value":"${BASE64_SECRET_VALUE}","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.SecretService/DeleteSecret`

- Request: `devbase.v1.DeleteSecretRequest`
- Response: `devbase.v1.DeleteSecretResponse`
- API-key scopes: `secrets:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `secretId`                | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field      | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------- | ----------------------------- | -------- | ---------- | ----- |
| `secretId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.SecretService/DeleteSecret" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.SecretService/GetSecret`

- Request: `devbase.v1.GetSecretRequest`
- Response: `devbase.v1.GetSecretResponse`
- API-key scopes: `secrets:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `secretId`    | `message (devbase.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field    | Protobuf type                 | Repeated | JSON shape | Oneof |
| -------- | ----------------------------- | -------- | ---------- | ----- |
| `secret` | `message (devbase.v1.Secret)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.SecretService/GetSecret" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"secretId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.SecretService/ListSecrets`

- Request: `devbase.v1.ListSecretsRequest`
- Response: `devbase.v1.ListSecretsResponse`
- API-key scopes: `secrets:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------- | ---------------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)`      | false    | object     |       |
| `page`        | `message (devbase.v1.PageRequest)` | false    | object     |       |

#### Response

| Field     | Protobuf type                   | Repeated | JSON shape | Oneof |
| --------- | ------------------------------- | -------- | ---------- | ----- |
| `secrets` | `message (devbase.v1.Secret)`   | true     | array      |       |
| `page`    | `message (devbase.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.SecretService/ListSecrets" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"page":{"cursor":"","pageSize":1},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.SecretService/RotateSecret`

- Request: `devbase.v1.RotateSecretRequest`
- Response: `devbase.v1.RotateSecretResponse`
- API-key scopes: `secrets:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `secretId`                | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |
| `value`                   | `bytes`                       | false    | string     |       |

#### Response

| Field    | Protobuf type                 | Repeated | JSON shape | Oneof |
| -------- | ----------------------------- | -------- | ---------- | ----- |
| `secret` | `message (devbase.v1.Secret)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.SecretService/RotateSecret" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretId":{"value":"01900000-0000-7000-8000-000000000001"},"value":"${BASE64_SECRET_VALUE}","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/CreateWebhookEndpoint`

- Request: `devbase.v1.CreateWebhookEndpointRequest`
- Response: `devbase.v1.CreateWebhookEndpointResponse`
- API-key scopes: `webhooks:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`   | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `name`        | `string`                      | false    | value      |       |
| `url`         | `string`                      | false    | value      |       |

#### Response

| Field           | Protobuf type                          | Repeated | JSON shape | Oneof |
| --------------- | -------------------------------------- | -------- | ---------- | ----- |
| `endpoint`      | `message (devbase.v1.WebhookEndpoint)` | false    | object     |       |
| `signingSecret` | `string`                               | false    | value      |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/CreateWebhookEndpoint" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"name":"example","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"url":"https://example.com/webhook","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/DeleteWebhookEndpoint`

- Request: `devbase.v1.DeleteWebhookEndpointRequest`
- Response: `devbase.v1.DeleteWebhookEndpointResponse`
- API-key scopes: `webhooks:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `endpointId`              | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field        | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------ | ----------------------------- | -------- | ---------- | ----- |
| `endpointId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/DeleteWebhookEndpoint" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"endpointId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/GetWebhookEndpoint`

- Request: `devbase.v1.GetWebhookEndpointRequest`
- Response: `devbase.v1.GetWebhookEndpointResponse`
- API-key scopes: `webhooks:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------- | ----------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `endpointId`  | `message (devbase.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field      | Protobuf type                          | Repeated | JSON shape | Oneof |
| ---------- | -------------------------------------- | -------- | ---------- | ----- |
| `endpoint` | `message (devbase.v1.WebhookEndpoint)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/GetWebhookEndpoint" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"endpointId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/ListWebhookDeliveries`

- Request: `devbase.v1.ListWebhookDeliveriesRequest`
- Response: `devbase.v1.ListWebhookDeliveriesResponse`
- API-key scopes: `webhooks:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------- | ---------------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)`      | false    | object     |       |
| `endpointId`  | `message (devbase.v1.UUIDv7)`      | false    | object     |       |
| `page`        | `message (devbase.v1.PageRequest)` | false    | object     |       |

#### Response

| Field        | Protobuf type                          | Repeated | JSON shape | Oneof |
| ------------ | -------------------------------------- | -------- | ---------- | ----- |
| `deliveries` | `message (devbase.v1.WebhookDelivery)` | true     | array      |       |
| `page`       | `message (devbase.v1.PageInfo)`        | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/ListWebhookDeliveries" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"endpointId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/ListWebhookEndpoints`

- Request: `devbase.v1.ListWebhookEndpointsRequest`
- Response: `devbase.v1.ListWebhookEndpointsResponse`
- API-key scopes: `webhooks:read`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field         | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------- | ---------------------------------- | -------- | ---------- | ----- |
| `workspaceId` | `message (devbase.v1.UUIDv7)`      | false    | object     |       |
| `page`        | `message (devbase.v1.PageRequest)` | false    | object     |       |

#### Response

| Field       | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------- | -------------------------------------- | -------- | ---------- | ----- |
| `endpoints` | `message (devbase.v1.WebhookEndpoint)` | true     | array      |       |
| `page`      | `message (devbase.v1.PageInfo)`        | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/ListWebhookEndpoints" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"page":{"cursor":"","pageSize":1},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/RedeliverWebhookDelivery`

- Request: `devbase.v1.RedeliverWebhookDeliveryRequest`
- Response: `devbase.v1.RedeliverWebhookDeliveryResponse`
- API-key scopes: `webhooks:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `deliveryId`              | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field      | Protobuf type                          | Repeated | JSON shape | Oneof |
| ---------- | -------------------------------------- | -------- | ---------- | ----- |
| `delivery` | `message (devbase.v1.WebhookDelivery)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/RedeliverWebhookDelivery" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"deliveryId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/RotateWebhookSecret`

- Request: `devbase.v1.RotateWebhookSecretRequest`
- Response: `devbase.v1.RotateWebhookSecretResponse`
- API-key scopes: `webhooks:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `endpointId`              | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |

#### Response

| Field                     | Protobuf type                          | Repeated | JSON shape | Oneof |
| ------------------------- | -------------------------------------- | -------- | ---------- | ----- |
| `endpoint`                | `message (devbase.v1.WebhookEndpoint)` | false    | object     |       |
| `signingSecret`           | `string`                               | false    | value      |       |
| `previousSecretExpiresAt` | `message (google.protobuf.Timestamp)`  | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/RotateWebhookSecret" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"endpointId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/devbase.v1.WebhookService/UpdateWebhookEndpoint`

- Request: `devbase.v1.UpdateWebhookEndpointRequest`
- Response: `devbase.v1.UpdateWebhookEndpointResponse`
- API-key scopes: `webhooks:write`
- Billing: `free`
- Execution: `synchronous`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `endpointId`              | `message (devbase.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `int64`                       | false    | string     |       |
| `name`                    | `string`                      | false    | value      |       |
| `url`                     | `string`                      | false    | value      |       |
| `enabled`                 | `bool`                        | false    | value      |       |

#### Response

| Field      | Protobuf type                          | Repeated | JSON shape | Oneof |
| ---------- | -------------------------------------- | -------- | ---------- | ----- |
| `endpoint` | `message (devbase.v1.WebhookEndpoint)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://devbase.api.delino.io/devbase.v1.WebhookService/UpdateWebhookEndpoint" \
  -H "Authorization: Bearer $DEVBASE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"enabled":true,"endpointId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","name":"example","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"url":"https://example.com/webhook","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## Referenced message and enum schemas

### `devbase.v1.Artifact`

| Field             | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------- | ----- |
| `id`              | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`     | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `owningJobId`     | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `name`            | `string`                              | false    | value      |       |
| `mimeType`        | `string`                              | false    | value      |       |
| `sizeBytes`       | `uint64`                              | false    | string     |       |
| `sha256Hex`       | `string`                              | false    | value      |       |
| `state`           | `enum (devbase.v1.ArtifactState)`     | false    | string     |       |
| `expiresAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `resourceVersion` | `int64`                               | false    | string     |       |
| `createdAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `devbase.v1.ArtifactConstraints`

| Field                    | Protobuf type                        | Repeated | JSON shape | Oneof |
| ------------------------ | ------------------------------------ | -------- | ---------- | ----- |
| `acceptedMimeTypes`      | `string`                             | true     | array      |       |
| `maximumObjectSizeBytes` | `uint64`                             | false    | string     |       |
| `maximumInputCount`      | `uint32`                             | false    | value      |       |
| `defaultRetention`       | `message (google.protobuf.Duration)` | false    | string     |       |
| `maximumRetention`       | `message (google.protobuf.Duration)` | false    | string     |       |

### `devbase.v1.ErrorDetail`

| Field               | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `reason`            | `enum (devbase.v1.ErrorReason)`       | false    | string     |       |
| `requestId`         | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `correlationId`     | `string`                              | false    | value      |       |
| `retryAfterSeconds` | `uint32`                              | false    | value      |       |
| `retryGuidance`     | `enum (devbase.v1.RetryGuidance)`     | false    | string     |       |
| `fieldViolations`   | `message (devbase.v1.FieldViolation)` | true     | array      |       |

### `devbase.v1.FieldViolation`

| Field         | Protobuf type | Repeated | JSON shape | Oneof |
| ------------- | ------------- | -------- | ---------- | ----- |
| `field`       | `string`      | false    | value      |       |
| `description` | `string`      | false    | value      |       |

### `devbase.v1.Job`

| Field               | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `id`                | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`       | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `miniAppId`         | `string`                              | false    | value      |       |
| `procedure`         | `string`                              | false    | value      |       |
| `state`             | `enum (devbase.v1.JobState)`          | false    | string     |       |
| `progressPercent`   | `uint32`                              | false    | value      |       |
| `attemptCount`      | `uint32`                              | false    | value      |       |
| `nextAttemptAt`     | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `terminalError`     | `message (devbase.v1.ErrorDetail)`    | false    | object     |       |
| `inputArtifactIds`  | `message (devbase.v1.UUIDv7)`         | true     | array      |       |
| `resultArtifactIds` | `message (devbase.v1.UUIDv7)`         | true     | array      |       |
| `resourceVersion`   | `int64`                               | false    | string     |       |
| `createdAt`         | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`         | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `completedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `devbase.v1.JobHeartbeat`

| Field             | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------- | ----- |
| `resourceVersion` | `int64`                               | false    | string     |       |
| `emittedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `devbase.v1.MiniAppDescriptor`

| Field                 | Protobuf type                              | Repeated | JSON shape | Oneof |
| --------------------- | ------------------------------------------ | -------- | ---------- | ----- |
| `id`                  | `string`                                   | false    | value      |       |
| `displayName`         | `string`                                   | false    | value      |       |
| `description`         | `string`                                   | false    | value      |       |
| `operations`          | `message (devbase.v1.MiniAppOperation)`    | true     | array      |       |
| `artifactConstraints` | `message (devbase.v1.ArtifactConstraints)` | false    | object     |       |
| `maximumAttempts`     | `uint32`                                   | false    | value      |       |
| `maximumDuration`     | `message (google.protobuf.Duration)`       | false    | string     |       |
| `resourceVersion`     | `int64`                                    | false    | string     |       |

### `devbase.v1.MiniAppOperation`

| Field             | Protobuf type                     | Repeated | JSON shape | Oneof |
| ----------------- | --------------------------------- | -------- | ---------- | ----- |
| `procedure`       | `string`                          | false    | value      |       |
| `displayName`     | `string`                          | false    | value      |       |
| `executionMode`   | `enum (devbase.v1.ExecutionMode)` | false    | string     |       |
| `apiKeyScopes`    | `string`                          | true     | array      |       |
| `delcoreMeterKey` | `string`                          | false    | value      |       |
| `free`            | `bool`                            | false    | value      |       |

### `devbase.v1.PageInfo`

| Field        | Protobuf type | Repeated | JSON shape | Oneof |
| ------------ | ------------- | -------- | ---------- | ----- |
| `nextCursor` | `string`      | false    | value      |       |

### `devbase.v1.PageRequest`

| Field      | Protobuf type | Repeated | JSON shape | Oneof |
| ---------- | ------------- | -------- | ---------- | ----- |
| `pageSize` | `uint32`      | false    | value      |       |
| `cursor`   | `string`      | false    | value      |       |

### `devbase.v1.Secret`

| Field             | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------- | ----- |
| `id`              | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`     | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `name`            | `string`                              | false    | value      |       |
| `resourceVersion` | `int64`                               | false    | string     |       |
| `createdAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `deletedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `devbase.v1.UUIDv7`

| Field   | Protobuf type | Repeated | JSON shape | Oneof |
| ------- | ------------- | -------- | ---------- | ----- |
| `value` | `string`      | false    | value      |       |

### `devbase.v1.WebhookDelivery`

| Field             | Protobuf type                            | Repeated | JSON shape | Oneof |
| ----------------- | ---------------------------------------- | -------- | ---------- | ----- |
| `id`              | `message (devbase.v1.UUIDv7)`            | false    | object     |       |
| `workspaceId`     | `message (devbase.v1.UUIDv7)`            | false    | object     |       |
| `endpointId`      | `message (devbase.v1.UUIDv7)`            | false    | object     |       |
| `eventId`         | `message (devbase.v1.UUIDv7)`            | false    | object     |       |
| `jobId`           | `message (devbase.v1.UUIDv7)`            | false    | object     |       |
| `state`           | `enum (devbase.v1.WebhookDeliveryState)` | false    | string     |       |
| `attemptCount`    | `uint32`                                 | false    | value      |       |
| `lastStatusCode`  | `uint32`                                 | false    | value      |       |
| `nextAttemptAt`   | `message (google.protobuf.Timestamp)`    | false    | string     |       |
| `createdAt`       | `message (google.protobuf.Timestamp)`    | false    | string     |       |
| `deliveredAt`     | `message (google.protobuf.Timestamp)`    | false    | string     |       |
| `resourceVersion` | `int64`                                  | false    | string     |       |

### `devbase.v1.WebhookEndpoint`

| Field             | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------- | ----- |
| `id`              | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`     | `message (devbase.v1.UUIDv7)`         | false    | object     |       |
| `name`            | `string`                              | false    | value      |       |
| `url`             | `string`                              | false    | value      |       |
| `enabled`         | `bool`                                | false    | value      |       |
| `resourceVersion` | `int64`                               | false    | string     |       |
| `createdAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `google.protobuf.Duration`

| JSON representation |
| ------------------- |
| string              |

### `google.protobuf.Timestamp`

| JSON representation |
| ------------------- |
| string              |

### `devbase.v1.ArtifactState` enum values

- `ARTIFACT_STATE_UNSPECIFIED`
- `ARTIFACT_STATE_PENDING_UPLOAD`
- `ARTIFACT_STATE_AVAILABLE`
- `ARTIFACT_STATE_DELETED`
- `ARTIFACT_STATE_EXPIRED`

### `devbase.v1.ErrorReason` enum values

- `ERROR_REASON_UNSPECIFIED`
- `ERROR_REASON_INVALID_ARGUMENT`
- `ERROR_REASON_AUTHENTICATION_REQUIRED`
- `ERROR_REASON_AUTHORIZATION_DENIED`
- `ERROR_REASON_RESOURCE_NOT_FOUND`
- `ERROR_REASON_IDEMPOTENCY_CONFLICT`
- `ERROR_REASON_RESOURCE_VERSION_CONFLICT`
- `ERROR_REASON_FAILED_PRECONDITION`
- `ERROR_REASON_QUOTA_EXHAUSTED`
- `ERROR_REASON_RATE_LIMITED`
- `ERROR_REASON_CONCURRENCY_EXHAUSTED`
- `ERROR_REASON_BILLING_BLOCKED`
- `ERROR_REASON_CHECKSUM_MISMATCH`
- `ERROR_REASON_DEPENDENCY_UNAVAILABLE`
- `ERROR_REASON_INTERNAL`

### `devbase.v1.ExecutionMode` enum values

- `EXECUTION_MODE_UNSPECIFIED`
- `EXECUTION_MODE_SYNCHRONOUS`
- `EXECUTION_MODE_ASYNCHRONOUS`

### `devbase.v1.JobState` enum values

- `JOB_STATE_UNSPECIFIED`
- `JOB_STATE_QUEUED`
- `JOB_STATE_RUNNING`
- `JOB_STATE_CANCELING`
- `JOB_STATE_SUCCEEDED`
- `JOB_STATE_FAILED`
- `JOB_STATE_CANCELED`

### `devbase.v1.RetryGuidance` enum values

- `RETRY_GUIDANCE_UNSPECIFIED`
- `RETRY_GUIDANCE_AFTER_DELAY`
- `RETRY_GUIDANCE_AFTER_DEPENDENCY_RECOVERY`
- `RETRY_GUIDANCE_AFTER_REAUTHENTICATION`
- `RETRY_GUIDANCE_AFTER_STATE_CHANGE`
- `RETRY_GUIDANCE_DO_NOT_RETRY`

### `devbase.v1.WebhookDeliveryState` enum values

- `WEBHOOK_DELIVERY_STATE_UNSPECIFIED`
- `WEBHOOK_DELIVERY_STATE_PENDING`
- `WEBHOOK_DELIVERY_STATE_DELIVERED`
- `WEBHOOK_DELIVERY_STATE_FAILED`
- `WEBHOOK_DELIVERY_STATE_CANCELED`
