<!-- Source: https://docs.geopera.com/api-reference/operations/uploads · Markdown for LLMs -->

<!-- AUTO-GENERATED by scripts/generate-api-reference.cjs from the committed OpenAPI spec. Do not edit by hand. -->

# Uploads operations

Bring-your-own-data upload sessions.

Each operation below is reachable at `POST /v1/op/{operation_id}` or the resource path `POST /v1/{resource}/{action}`, with a Bearer token (a `gpra_` API key or a session token). Back to the [Operations Reference](/api-reference/operations) index.

## `uploads.complete`

Invoke Uploads Complete.

| | |
|---|---|
| **Scope** | `uploads:write` |
| **Side-effect** | compute |
| **HTTP** | `POST /v1/op/uploads.complete`  ·  `POST /v1/uploads/complete` |
| **Python / TypeScript** | `client.uploads.complete(…)` |
| **CLI** | `geopera uploads complete …` |

**Request** — a free-form JSON object.

## `uploads.fail`

Mark an upload session failed, releasing its storage reservation.

| | |
|---|---|
| **Scope** | `uploads:write` |
| **Side-effect** | compute |
| **HTTP** | `POST /v1/op/uploads.fail`  ·  `POST /v1/uploads/fail` |
| **Python / TypeScript** | `client.uploads.fail(…)` |
| **CLI** | `geopera uploads fail …` |

**Request** — `UploadFailInput`

| Field | Type | Required | Description |
|---|---|---|---|
| `upload_id` | string | yes |  |
| `error_message` | string | yes |  |
| `error_step` | string | — |  |

**Response** — `UploadOutput`.

## `uploads.initiate`

Start an upload session, reserving storage quota (editor/admin on the project).

| | |
|---|---|
| **Scope** | `uploads:write` |
| **Side-effect** | compute |
| **HTTP** | `POST /v1/op/uploads.initiate`  ·  `POST /v1/uploads/initiate` |
| **Python / TypeScript** | `client.uploads.initiate(…)` |
| **CLI** | `geopera uploads initiate …` |

**Request** — `UploadInitiate`

| Field | Type | Required | Description |
|---|---|---|---|
| `project_id` | string | yes |  |
| `transfer_method` | string | — |  |
| `file_count` | integer | — |  |
| `total_bytes` | integer | — |  |
| `target_collection_id` | string | — |  |
| `target_item_id` | string | — |  |
| `asset_key` | string | — |  |
| `is_categorical` | boolean | — |  |

**Response** — `UploadOutput`.

## `uploads.progress`

Update an upload session's progress.

| | |
|---|---|
| **Scope** | `uploads:write` |
| **Side-effect** | compute |
| **HTTP** | `POST /v1/op/uploads.progress`  ·  `POST /v1/uploads/progress` |
| **Python / TypeScript** | `client.uploads.progress(…)` |
| **CLI** | `geopera uploads progress …` |

**Request** — `UploadProgressInput`

| Field | Type | Required | Description |
|---|---|---|---|
| `upload_id` | string | yes |  |
| `status` | string | — |  |
| `bytes_uploaded` | integer | — |  |

**Response** — `UploadOutput`.

## `uploads.signed_url`

Mint a signed URL for uploading a file into an upload session.

| | |
|---|---|
| **Scope** | `uploads:write` |
| **Side-effect** | compute |
| **HTTP** | `POST /v1/op/uploads.signed_url`  ·  `POST /v1/uploads/signed_url` |
| **Python / TypeScript** | `client.uploads.signed_url(…)` |
| **CLI** | `geopera uploads signed-url …` |

**Request** — `SignedUrlInput`

| Field | Type | Required | Description |
|---|---|---|---|
| `upload_id` | string | yes |  |
| `file_name` | string | yes |  |
| `content_type` | string | — |  |

**Response** — `SignedUrlOutput`.
