|
|
# API
|
|
|
|
|
|
## Get informations about the server
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/infos`
|
|
|
* Method: `GET`
|
|
|
|
|
|
No query parameters.
|
|
|
|
|
|
Example with curl:
|
|
|
|
|
|
```shell
|
|
|
curl https://lut.im/infos
|
|
|
```
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"always_encrypt": true,
|
|
|
"broadcast_message": "[fr] Le délai par défaut est maintenant d'un an! [en] The default delay is now one year!",
|
|
|
"contact": "Luc Didry, admin[AT]lut.im",
|
|
|
"default_delay": 365,
|
|
|
"image_magick": true,
|
|
|
"max_delay": 0,
|
|
|
"max_file_size": 10485760
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Please refer to [the configuration's wiki page](configuration) to understand the response. The exception is `image_magick`, which tells you if ImageMagick is installed on the server so it can create thumbnails and auto-rotate the images.
|
|
|
|
|
|
## Add images
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/`
|
|
|
* Method: `POST`
|
|
|
|
|
|
Query parameters:
|
|
|
|
|
|
|name |type |description |optional/mandatory|default|
|
|
|
|----------|------|----------------------------------------------------------------------------|------------------|-------|
|
|
|
|format |string|`json` if you want to get a json response, otherwise it will send a web page|optional |html |
|
|
|
|file |file |the image file |mandatory |no default|
|
|
|
|delete-day|int |number of days you want the image to stay |optional |0 (indefinitely) or the configured maximum delay of the server|
|
|
|
|first-view|int |if not 0, the image will be deleted at first view |optional |0 |
|
|
|
|keep-exif |int |if not 0, the image will keep its EXIF tags |optional |0 |
|
|
|
|crypt |int |if not 0, the image will be encrypted on the server |optional |depends on the instance configuration |
|
|
|
|
|
|
Example with curl:
|
|
|
|
|
|
```shell
|
|
|
curl -F "format=json" -F "file=@/tmp/snap0001.jpg" https://lut.im
|
|
|
```
|
|
|
|
|
|
You can allow people to use your instance of Lutim from other domains.
|
|
|
Add the allowed domains as an array in the `allowed_domains` conf option. Put `['*']` if you want to allow all domains.
|
|
|
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": true,
|
|
|
"msg": {
|
|
|
"real_short": "abc",
|
|
|
"short": "abc/def",
|
|
|
"token": "ghijkl",
|
|
|
"thumb": XXX,
|
|
|
"filename": "myimage.png",
|
|
|
"created_at": 1496652085,
|
|
|
"del_at_view": false,
|
|
|
"ext": "png",
|
|
|
"limit": 0
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
| parameter | type | role |
|
|
|
|-----------------|--------------|--------------------------------------|
|
|
|
| success | true/false | upload-status |
|
|
|
| msg.real_short | string | image identifier |
|
|
|
| msg.short | string | `real_short` + encryption key |
|
|
|
| msg.token | string | |
|
|
|
| msg.thumb | string | base64 encoded thumbnail of the image, if PerlMagick is installed on the server |
|
|
|
| msg.filename | string | filename of the uploaded image |
|
|
|
| msg.create_at | int | unix timestamp of image upload |
|
|
|
| msg.del_at_view | true/false | will it be deleted at first view? |
|
|
|
| msg.ext | string | filename extension |
|
|
|
| msg.limit | int | deletion delay (0 means no deletion) |
|
|
|
|
|
|
## Delete images
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/d/real_short/token`
|
|
|
* Method: `GET`
|
|
|
|
|
|
Please, refer to "Add images" response for `real_short` and `token` in the URL.
|
|
|
|
|
|
Query parameters:
|
|
|
|
|
|
|name |type |description |optional/mandatory|default|
|
|
|
|----------|------|----------------------------------------------------------------------------|------------------|-------|
|
|
|
|format |string|`json` if you want to get a json response, otherwise it will send a web page|optional |html |
|
|
|
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": true,
|
|
|
"msg": "The image *filename* has been successfully deleted"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
| parameter | type | role |
|
|
|
|------------|--------------|--------------------------------|
|
|
|
| success | true/false | delete-status |
|
|
|
| msg | string | success or failure message |
|
|
|
|
|
|
## Modify images
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/m/real_short/token`
|
|
|
* Method: `POST`
|
|
|
|
|
|
Please, refer to "Add images" response for `real_short` and `token` in the URL.
|
|
|
|
|
|
Query parameters:
|
|
|
|
|
|
|name |type |description |optional/mandatory|default |
|
|
|
|-----------|------|-----------------------------------------------------------------------------|------------------|-----------|
|
|
|
|delete-day |int |number of days you want the image to stay |mandatory |no default |
|
|
|
|first-view |int |if not 0, the image will be deleted at first view |optional |0 |
|
|
|
|url |string|the view link of the image. Useless, it will be displayed if format is `json`|optional |no default |
|
|
|
|format |string|`json` if you want to get a json response, otherwise it will send a web page |optional |html |
|
|
|
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": true,
|
|
|
"msg": "Le délai de l'image a été modifié avec succès."
|
|
|
}
|
|
|
```
|
|
|
|
|
|
| parameter | type | role |
|
|
|
|------------|--------------|--------------------------------|
|
|
|
| success | true/false | modify-status |
|
|
|
| msg | string | success or failure message |
|
|
|
|
|
|
## Get images
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/short`
|
|
|
* Method: `GET`
|
|
|
|
|
|
Example with curl:
|
|
|
|
|
|
```shell
|
|
|
curl https://lut.im/image.jpg
|
|
|
```
|
|
|
|
|
|
### Response
|
|
|
|
|
|
The image.
|
|
|
|
|
|
## Get informations about an image
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/about/short`
|
|
|
* Method: `GET`
|
|
|
|
|
|
NB: `short` can be the `real_short`, with or without the file extension.
|
|
|
|
|
|
Example with curl:
|
|
|
|
|
|
```shell
|
|
|
curl https://lut.im/about/image.jpg
|
|
|
```
|
|
|
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": true,
|
|
|
"data": {
|
|
|
"height":632,
|
|
|
"width":1680
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
| parameter | type | role |
|
|
|
|-------------|------------|--------------------------------|
|
|
|
| success | true/false | request-status |
|
|
|
| data.height | int | the height of the image |
|
|
|
| data.width | int | the width of the image |
|
|
|
|
|
|
## Get counter and status of image
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/c`
|
|
|
* Method: `POST`
|
|
|
|
|
|
Query parameters:
|
|
|
|
|
|
|name |type |description |optional/mandatory|default|
|
|
|
|----------|------|----------------------------------------------------------------------------|------------------|-------|
|
|
|
|short |string|see what `real_short` is in the "Add images" URL response |mandatory |no default|
|
|
|
|token |string|see what `token` is in the "Add images" URL response |mandatory |no default|
|
|
|
|
|
|
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": true,
|
|
|
"counter": 42,
|
|
|
"enabled": false
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Or, if it fails:
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": false,
|
|
|
"msg": "Unable to get counter"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
| parameter | type | role |
|
|
|
|------------|--------------|--------------------------------|
|
|
|
| success | true/false | request-status |
|
|
|
| counter | int | number of times the image has been accessed (warning, the browser cache prevents to increment the counter more than one time per browser) |
|
|
|
| enabled | true/false | if true, the image is still available, else it has been deleted (manually or it has expired) |
|
|
|
| msg | string | failure message |
|
|
|
|
|
|
## Login
|
|
|
|
|
|
(when authentication is required)
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/login`
|
|
|
* Method: `POST`
|
|
|
|
|
|
Query parameters:
|
|
|
|
|
|
|name |type |description |optional/mandatory|default |
|
|
|
|---------|------|-----------------------------------------------------------------------------|------------------|----------|
|
|
|
|login |string|your login |mandatory |no default|
|
|
|
|password |string|your password |mandatory |no default|
|
|
|
|format |string|`json` if you want to get a json response, otherwise it will send a web page |optional |html |
|
|
|
|
|
|
Example with curl:
|
|
|
|
|
|
```shell
|
|
|
curl --data "login=luc" --data "password=toto" --data "format=json" https://lut.im/login
|
|
|
```
|
|
|
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": true,
|
|
|
"msg": "You have been successfully logged in."
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Or, if it fails:
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": false,
|
|
|
"msg": "Please, check your credentials: unable to authenticate."
|
|
|
}
|
|
|
```
|
|
|
|
|
|
| parameter | type | role |
|
|
|
|------------|--------------|----------------------------|
|
|
|
| success | true/false | login-status |
|
|
|
| msg | string | success or failure message |
|
|
|
|
|
|
|
|
|
## Logout
|
|
|
|
|
|
(when authentication is required)
|
|
|
|
|
|
### Request
|
|
|
|
|
|
* URL: `/logout`
|
|
|
* Method: `GET`
|
|
|
|
|
|
Query parameters:
|
|
|
|
|
|
|name |type |description |optional/mandatory|default |
|
|
|
|---------|------|-----------------------------------------------------------------------------|------------------|----------|
|
|
|
|format |string|`json` if you want to get a json response, otherwise it will send a web page |optional |html |
|
|
|
|
|
|
Example with curl:
|
|
|
|
|
|
```shell
|
|
|
curl "https://lut.im/logout?format=json"
|
|
|
```
|
|
|
|
|
|
### Response
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"success": true,
|
|
|
"msg": "You have been successfully logged out."
|
|
|
}
|
|
|
```
|
|
|
|
|
|
| parameter | type | role |
|
|
|
|------------|--------------|----------------------------|
|
|
|
| success | true/false | logout-status |
|
|
|
| msg | string | success or failure message |
|
|
|
|
|
|
-------
|
|
|
|
|
|
You can now go back to [wiki's homepage](home). |
|
|
\ No newline at end of file |