Project File API Procedures
===========================

## createProjectFile

- Purpose: **Create and upload a new project attachment**
- Parameters:
    - **project_id** (integer, required)
    - **filename** (integer, required)
    - **blob** File content encoded in base64 (string, required)
- Result on success: **file_id**
- Result on failure: **false**
- Note: **The maximum file size depends of your PHP configuration, this method should not be used to upload large files**

Request example:

```json
{
    "jsonrpc": "2.0",
    "method": "createProjectFile",
    "id": 94500810,
    "params": [
        1,
        "My file",
        "cGxhaW4gdGV4dCBmaWxl"
    ]
}
```

Response example:

```json
{
    "jsonrpc": "2.0",
    "id": 94500810,
    "result": 1
}
```

## getAllProjectFiles

- Purpose: **Get all files attached to a project**
- Parameters:
    - **project_id** (integer, required)
- Result on success: **list of files**
- Result on failure: **false**

Request example:

```json
{
    "jsonrpc": "2.0",
    "method": "getAllProjectFiles",
    "id": 1880662820,
    "params": {
        "project_id": 1
    }
}
```

Response example:

```json
{
    "jsonrpc": "2.0",
    "id": 1880662820,
    "result": [
        {
            "id": "1",
            "name": "My file",
            "path": "1\/1\/0db4d0a897a4c852f6e12f0239d4805f7b4ab596",
            "is_image": "0",
            "project_id": "1",
            "date": "1432509941",
            "user_id": "0",
            "size": "15",
            "username": null,
            "user_name": null
        }
    ]
}
```

## getProjectFile

- Purpose: **Get file information**
- Parameters:
    - **project_id** (integer, required)
    - **file_id** (integer, required)
- Result on success: **file properties**
- Result on failure: **false**

Request example:

```json
{
    "jsonrpc": "2.0",
    "method": "getProjectFile",
    "id": 318676852,
    "params": [
        "42",
        "1"
    ]
}
```

Response example:

```json
{
    "jsonrpc": "2.0",
    "id": 318676852,
    "result": {
        "id": "1",
        "name": "My file",
        "path": "1\/1\/0db4d0a897a4c852f6e12f0239d4805f7b4ab596",
        "is_image": "0",
        "project_id": "1",
        "date": "1432509941",
        "user_id": "0",
        "size": "15"
    }
}
```

## downloadProjectFile

- Purpose: **Download project file contents (encoded in base64)**
- Parameters:
    - **project_id** (integer, required)
    - **file_id** (integer, required)
- Result on success: **base64 encoded string**
- Result on failure: **empty string**

Request example:

```json
{
    "jsonrpc": "2.0",
    "method": "downloadProjectFile",
    "id": 235943344,
    "params": [
        "1",
        "1"
    ]
}
```

Response example:

```json
{
    "jsonrpc": "2.0",
    "id": 235943344,
    "result": "cGxhaW4gdGV4dCBmaWxl"
}
```

## removeProjectFile

- Purpose: **Remove a file associated to a project**
- Parameters:
    - **project_id** (integer, required)
    - **file_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**

Request example:

```json
{
    "jsonrpc": "2.0",
    "method": "removeProjectFile",
    "id": 447036524,
    "params": [
        "1",
        "1"
    ]
}
```

Response example:

```json
{
    "jsonrpc": "2.0",
    "id": 447036524,
    "result": true
}
```

## removeAllProjectFiles

- Purpose: **Remove all files associated to a project**
- Parameters:
    - **project_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**

Request example:

```json
{
    "jsonrpc": "2.0",
    "method": "removeAllProjectFiles",
    "id": 593312993,
    "params": {
        "project_id": 1
    }
}
```

Response example:

```json
{
    "jsonrpc": "2.0",
    "id": 593312993,
    "result": true
}
```