# Upload A File

<mark style="color:green;">`POST`</mark> `/api/v1/{entity-type}/{entity-id}/{property}/documents`

#### Path Parameters

| Name                                          | Type   | Description                                         |
| --------------------------------------------- | ------ | --------------------------------------------------- |
| entity-type<mark style="color:red;">\*</mark> | String | Entity type for which the template will be uploaded |
| entity-id<mark style="color:red;">\*</mark>   | String | Entity ID for mentioned Entity Type                 |

#### Headers

| Name                                           | Type   | Description                                                                                        |
| ---------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------- |
| content-type<mark style="color:red;">\*</mark> | String | Set to `multipart/form-data`                                                                       |
| authorization                                  | String | Set to `Bearer {access-token}` if `roles` in schema config is not anonymous else this can be empty |

#### Request Body

| Name                                    | Type   | Description                                                                                                              |
| --------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------ |
| files<mark style="color:red;">\*</mark> | Object | `files` is template-key which can be replaced with your choice. Requires a `html file` to be sent which will be uploaded |

{% tabs %}
{% tab title="200: OK Success Response of File uploaded" %}

```javascript
{
    "documentLocations": [
        "{url}"
    ],
    "errors": []
}
```

{% endtab %}
{% endtabs %}

## Usage

### cURL

```
curl --location \
    --header 'Authorization: {access-token}' \
    --form 'files=@"{file-path}"'
    --request POST 
    '{registry-url}/api/v1/{entity-type}/{entity-id}/{property}/documents' \
```

### HTTPie

```
http --ignore-stdin \
    --form POST \
    '{registry-url}/api/v1/{entity-type}/{entity-id}/{property}/documents' \
 'files'@{file-path} \
 Authorization:'Bearer {access-token}' \
```

> `{registry-url}` is usually [http://localhost:{port}](https://docs.sunbirdrc.dev/~/changes/ADw6FieYgLmHh8a9Loem/api-reference/file-storage-api/http:/localhost:{port}). The port can be found under the `registry` section in the `docker-compose.yml` file and is usually `8081`.
