Skip to content
This repository was archived by the owner on Feb 19, 2019. It is now read-only.
Gabriel edited this page Apr 17, 2018 · 26 revisions

You can find the Postman collection here.


Ce document énonce les différentes routes de l'API du serveur.

Routes

Table des matières

Pagination

GET /drawings

POST /drawings

GET /drawings/:id

GET /drawings/:id/thumbnail

GET /drawings/:id/actions

PATCH /drawings/:id

PUT /drawings/:id/thumbnail

GET /templates

POST /templates

GET /templates/:id

GET /templates/:id/thumbnail

POST /templates/:id/likes

POST /login

POST /logout

POST /register

PUT /account/password

GET /ping

Pagination

On utilise un module de pagination couplé avec Mongoose. Le fonctionnement est très simple... il suffit d'ajouter un paramètre à l'URL comme suit : GET /drawings?page=1. Les index commencent à 1.


GET Drawings

GET /drawings

Retourne une liste paginée de tous les dessins. Cette liste ne contient que le métadata par rapport aux dessins, c'est à dire qu'elle ne contient que le nom, le propriétaire, le statut de protection, la visibilité et le mode.

Body

Aucun

Réponse

{
    "docs": [
        {
            "_id": "5a9f004a42a41425f8628af8",
            "name": "lel",
            "mode": "stroke",
            "owner": {
                "_id": "5a95a02aa3454a120497ac2b",
                "username": "me@me.ca"
            },
            "protection": {
                "active": true
            },
            "visibility": "public",
            "users": {
                "active": 0,
                "limit": 4
            }
        },
        {
            "_id": "5aa05988ab30441f10d62afb",
            "name": "ah bin!",
            "mode": "pixel",
            "owner": {
                "_id": "5a95a02aa3454a120497ac2b",
                "username": "me@me.ca"
            },
            "protection": {
                "active": false
            },
            "visibility": "private",
            "users": {
                "active": 1,
                "limit": 4
            }
        }
    ],
    "total": 2,
    "limit": 20,
    "page": "1",
    "pages": 1
}

👆 Retour au sommaire


POST Drawings

POST /drawings

Crée un nouveau dessin.

Body

Key Value
name Nom du nouveau dessin
mode String "stroke" ou "pixel" pour le mode du dessin.
visibility (Optional) String "private" ou "public" pour la visibilité du dessin dans la gallerie.
protection-active (Optional) Booléen true si le dessin est protégé, false sinon.
protection-password (Required if protection-active is set) Mot de passe pour protéger le dessin

Réponse

{
    "status": "success",
    "objectId": "5a99d15bc0171a116876226d"
}

👆 Retour au sommaire


GET Drawing by id

GET /drawings/:id

Retourne le dessin demandé.

Body

Aucun si le dessin est public ou si je suis le owner du dessin.

Sinon, il faut ajouter un header.

Key Value
protection-password Mot de passe du dessin

Réponse

{
    "_id": "5aa05988ab30441f10d62afb",
    "updatedAt": "2018-03-07T22:17:16.030Z",
    "createdAt": "2018-03-07T21:28:40.964Z",
    "name": "ah bin!",
    "mode": "pixel",
    "owner": {
        "_id": "5a95a02aa3454a120497ac2b",
        "username": "me@me.ca"
    },
    "protection": {
        "active": false
    },
    "strokes": [],
    "pixels": [],
    "visibility": "private",
    "users": {
        "active": 1,
        "limit": 4
    }
}
Mode traits
"strokes": [
    {
        "strokeUuid": "58030ff0-04de-4ea3-97fb-3014fce985d9",
        "dots": [
            {
                "y": 72.68285714285713,
                "x": 39.57142857142857
            },
            {
                "y": 72.68285714285713,
                "x": 40.14285714285714
            }
        ],
        "strokeAttributes": {
            "stylusTip": "Ellipse",
            "width": 11,
            "height": 11,
            "color": "#FF000000"
        }
    }
]
Mode pixels
"pixels": [
    {
        "x": 345,
        "y": 99,
        "color": "#FFFFFFFF"
    },
	{
        "x": 16,
        "y": 281,
        "color": "#FF000000"
    },
    {
        "x": 345,
        "y": 98,
        "color": "#FFF0F8FF"
    },
]

👆 Retour au sommaire


GET Drawing thumbnail by id

GET /drawings/:id/thumbnail

Retourne le thumbnail du dessin demandé.

Body

Aucun

Réponse

{
    "thumbnail": ""
}

👆 Retour au sommaire


GET Drawing actions

GET /drawings/:id/actions

Retourne une liste paginée des actions effectuées sur un dessin. Les éléments sont en ordre inverse, c'est à dire le plus récent en premier.

Body

Aucun

Réponse

{
    "docs": [
        {
            "name": "NewStroke",
            "author": {
                "_id": "5ab16440ba9a443f84334a6a",
                "username": "me@me.ca"
            },
            "timestamp": 1521774772284,
            "id": 1
        },
        {
            "name": "NewStroke",
            "author": {
                "_id": "5ab16440ba9a443f84334a6a",
                "username": "me@me.ca"
            },
            "timestamp": 1521774770987,
            "id": 1
        }
    ],
    "total": 2,
    "limit": 40,
    "page": "1",
    "pages": 1
}

👆 Retour au sommaire


PATCH Drawing

PATCH /drawings/:id

Modifie une/des propriétés d'un dessin.

Body

Key Value
visibility (Optional) String "private" ou "public" pour la visibilité du dessin dans la gallerie.
protection-active (Optional) Booléen true si le dessin est protégé, false sinon.
protection-password (Required if protection-active is true) Mot de passe pour protéger le dessin

Réponse

{
    "status": "success"
}

👆 Retour au sommaire


PUT Drawing thumbnail

PUT /drawings/:id/thumbnail

Met à jour le thumbnail du dessin.

Body

Key Value
thumbnail String du thumbnail en base64.

Réponse

{
    "status": "success"
}

👆 Retour au sommaire


GET Templates

GET /templates

Retourne une liste paginée de tous les templates. Cette liste ne contient que le métadata par rapport aux templates, c'est à dire qu'elle ne contient que le nom, le propriétaire, le mode et le nombre de likes.

Body

Aucun

Réponse

{
    "docs": [
        {
            "_id": "5ab6cecd43244025605ec24d",
            "name": "ah bin!",
            "mode": "stroke",
            "owner": {
                "_id": "5ab25d247b46256db0a83ea6",
                "username": "me@me.ca"
            }
            "likes": {
                "users": [
                    {
                        "_id": "5ab25d247b46256db0a83ea6",
                        "username": "me@me.ca"
                    }
                ],
                "total": 1
            }
        },
        {
            "_id": "5ab6ddce9bc8e6679c07bc05",
            "name": "hahaha",
            "mode": "stroke",
            "owner": {
                "_id": "5ab25d247b46256db0a83ea6",
                "username": "me@me.ca"
            }
            "likes": {
                "users": [],
                "total": 0
            }
        }
    ],
    "total": 2,
    "limit": 20,
    "page": "1",
    "pages": 1
}

👆 Retour au sommaire


POST Templates

POST /templates

Crée un nouveau template à partir d'un dessin existant.

Body

Key Value
drawing-id Id dessin à partir duquel on crée le template.

Réponse

{
    "status": "success",
    "objectId": "5ab82c0cf4be3b1f68857801"
}

👆 Retour au sommaire


GET Template by id

GET /templates/:id

Retourne le template demandé.

Body

Aucun

Réponse

{
    "_id": "5ab82c0cf4be3b1f68857801",
    "updatedAt": "2018-03-25T23:09:00.829Z",
    "createdAt": "2018-03-25T23:09:00.829Z",
    "name": "ah bin!",
    "mode": "stroke",
    "owner": {
        "_id": "5ab25d247b46256db0a83ea6",
        "username": "me@me.ca"
    }
    "pixels": [],
    "strokes": []
}

👆 Retour au sommaire


GET Template thumbnail by id

GET /templates/:id/thumbnail

Retourne le thumbnail du template demandé.

Body

Aucun

Réponse

{
    "thumbnail": ""
}

👆 Retour au sommaire


POST Template like

POST /templates/:id/likes

Ajoute l'utilisateur actuel dans la liste de "likes" sur un template.

Body

Aucun

Réponse

{
    "status": "success",
    "objectId": "5ab6de049bc8e6679c07bc06"
}

👆 Retour au sommaire


POST Login

POST /login

Body

Key Value
email Nom d'utilisateur
password Mot de passe

Réponse

{
    "status": "success",
    "objectId": "5ab16440ba9a443f84334a6a"
}

👆 Retour au sommaire


POST Logout

POST /logout

Body

Aucun

Réponse

{
    "status": "success"
}

👆 Retour au sommaire


POST Register

POST /register

Body

Key Value
email Nom d'utilisateur
password Mot de passe

Réponse

{
    "status": "success",
    "objectId": "5ad3a14ca111a812ec611a17"
}

👆 Retour au sommaire


PUT Account Password

PUT /account/password

Body

Key Value
old-password Le mot de passe actuel
password Le nouveau mot de passe voulu
confirm-password Confirmation du nouveau mot de passe

Réponse

{
    "status": "success",
    "objectId": "5ab16440ba9a443f84334a6a"
}

👆 Retour au sommaire


GET Ping

GET /ping

Ping le serveur.

Body

Aucun

Réponse

204 No Content

👆 Retour au sommaire