llama-stack/llama_stack/distribution
Vladimir Ivić f7161611c6
feat: adding endpoints for files and uploads (#1070)
Summary:
Adds spec definitions for file uploads operations.

This API focuses around two high level operations:
* Initiating and managing upload session
* Accessing uploaded file information

Usage examples:

To start a file upload session:
```
curl -X POST https://localhost:8321/v1/files \
-d '{
   "key": "image123.jpg',
   "bucket": "images",
   "mime_type": "image/jpg",
   "size": 12345
}'

# Returns
{
  “id”: <session_id>
  “url”: “https://localhost:8321/v1/files/session:<session_id>”,
  "offset": 0,
  "size": 12345
}

```

To upload file content to an existing session
```
curl -i -X POST "https://localhost:8321/v1/files/session:<session_id> \
  --data-binary @<path_to_local_file>

# Returns
{
  "key": "image123.jpg",
  "bucket": "images",
  "mime_type": "image/jpg",
  "bytes": 12345,
  "created_at": 1737492240
}

# Implementing on server side (Flask example for simplicity):
@app.route('/uploads/{upload_id}', methods=['POST'])
def upload_content_to_session(upload_id):
    try:
        # Get the binary file data from the request body
        file_data = request.data

        # Save the file to disk
        save_path = f"./uploads/{upload_id}"
        with open(save_path, 'wb') as f:
            f.write(file_data)
        return {__uploaded_file_json__}, 200
    except Exception as e:
        return 500

```

To read information about an existing upload session
```
curl -i -X GET "https://localhost:8321/v1/files/session:<session_id>

# Returns
{
  “id”: <session_id>
  “url”: “https://localhost:8321/v1/files/session:<session_id>”,
  "offset": 1024,
  "size": 12345
}
```

To list buckets
```
GET /files

# Returns
{
  "data": [
     {"name": "bucket1"},
     {"name": "bucket2"},
   ]
}
```

To list all files in a bucket
```
GET /files/{bucket}

# Returns
{
  "data": [
    {
      "key": "shiba.jpg",
      "bucket": "dogs",
      "mime_type": "image/jpg",
      "bytes": 82334,
      "created_at": 1737492240,
    },
    {
      "key": "persian_cat.jpg",
      "mime_type": "image/jpg",
      "bucket": "cats",
      "bytes": 39924,
      "created_at": 1727493440,
    },
  ]
}
```

To get specific file info
```
GET /files/{bucket}/{key}

{
  "key": "shiba.jpg",
  "bucket": "dogs",
  "mime_type": "image/jpg",
  "bytes": 82334,
  "created_at": 1737492240,
}

```

To delete specific file
```
DELETE /files/{bucket}/{key}

{
  "key": "shiba.jpg",
  "bucket": "dogs",
  "mime_type": "image/jpg",
  "bytes": 82334,
  "created_at": 1737492240,
}

```
2025-02-20 13:09:00 -08:00
..
routers feat: support tool_choice = {required, none, <function>} (#1059) 2025-02-18 23:25:15 -05:00
server build: format codebase imports using ruff linter (#1028) 2025-02-13 10:06:21 -08:00
store build: format codebase imports using ruff linter (#1028) 2025-02-13 10:06:21 -08:00
ui fix!: update eval-tasks -> benchmarks (#1032) 2025-02-13 16:40:58 -08:00
utils fix: Fixing some small issues with the build scripts (#1132) 2025-02-19 22:20:49 -08:00
__init__.py API Updates (#73) 2024-09-17 19:51:35 -07:00
build.py fix: improve stack build on venv (#980) 2025-02-14 09:22:03 -08:00
build_conda_env.sh feat: Add a new template for dell (#978) 2025-02-06 14:14:39 -08:00
build_container.sh Fix uv pip install timeout issue for PyTorch (#929) 2025-02-03 06:39:35 -08:00
build_venv.sh style: env var in build_venv 2025-02-19 22:32:59 -08:00
client.py chore: move all Llama Stack types from llama-models to llama-stack (#1098) 2025-02-14 09:10:59 -08:00
common.sh fix: Fixing some small issues with the build scripts (#1132) 2025-02-19 22:20:49 -08:00
configure.py build: format codebase imports using ruff linter (#1028) 2025-02-13 10:06:21 -08:00
configure_container.sh More generic image type for OCI-compliant container technologies (#802) 2025-01-17 16:37:42 -08:00
datatypes.py fix!: update eval-tasks -> benchmarks (#1032) 2025-02-13 16:40:58 -08:00
distribution.py fix!: update eval-tasks -> benchmarks (#1032) 2025-02-13 16:40:58 -08:00
inspect.py fix: improve signal handling and update dependencies (#1044) 2025-02-13 08:07:59 -08:00
library_client.py style: remove prints in codebase (#1146) 2025-02-18 19:41:37 -08:00
request_headers.py Add X-LlamaStack-Client-Version, rename ProviderData -> Provider-Data (#735) 2025-01-09 11:51:36 -08:00
resolver.py fix!: update eval-tasks -> benchmarks (#1032) 2025-02-13 16:40:58 -08:00
stack.py feat: adding endpoints for files and uploads (#1070) 2025-02-20 13:09:00 -08:00
start_conda_env.sh feat: Add HTTPS serving option (#1000) 2025-02-07 09:39:08 -08:00
start_container.sh feat: Add HTTPS serving option (#1000) 2025-02-07 09:39:08 -08:00
start_venv.sh feat: add support for running in a venv (#1018) 2025-02-12 11:13:04 -05:00