-
Notifications
You must be signed in to change notification settings - Fork 1
How to use dabba api
Voici comment utiliser l'API Dabba pour réaliser des opérations.
- Doc technique et tests possibles sur /api/docs
- Sans se connecter avec un user (Oauth), seul la liste des restaurants est accessible.
- Pour commencer il vous faut des identifiants, un CLIENT_ID et CLIENT_SECRET, qui sont générée dans l'admin php.
- Actuellement Dabba n'utilise qu'un seul type de contenant, mais cette API permet d'en prendre en charge plusieurs.
faire un POST sur /api/users
avec
{
"email": "string",
"password": "string",
"...":"..."
}Ensuite l'utilisateur doit valider son nouveau compte en cliquant sur un lien reçu par e-mail.
faire un POST sur /api/accessToken
Avec le Header
Content-Type : application/x-www-form-urlencoded
et le formulaire :
grant-type : password
scope : *
client_id : CLIENT_ID
client_secret : CLIENT_SECRET
username : user%40email.fr
password : *********
ce qui retourne un access_token valable 1h (3600 secondes) ainsi qu'un refresh_token valable 1 mois.
faire un GET (authentifié) sur /api/users/current
{
"id": 1,
"email": "[email protected]",
"firstname": "Gaëtan ",
"lastname": "janssens",
"wallet": 16,
"containers": {
"1": 1
}
"paymentTokens": [
{
"uuid": "123456789azertyuiopmlkjhgfdsqwxcvbn",
"pan": "497010XXXXXX0014",
"expiryMonth": 11,
"expiryYear": 2021,
"brand": "CB"
},
],
"...","...",
}- l'attribut wallet correspond au montant de sa cagnotte en euro.
- l'attribut containers la liste des ses contenants actuels (id : quantité)
- l'attribut paymentTokens la liste des cartes bancaires enregistrées pour payer la cagnottes
NB: pour l'instant, Dabba n'utilise qu'un seul contenant.
faire un GET (authentifié) sur /api/containers
[
{
"id": 1,
"name": "dabba classique",
"price": 4
}
]faire un POST (authentifié) sur /api/trades avec
{
"items": [
{
"type": "DEPOSIT",
"container_id": 1,
"quantity": 3
}
],
"code_from_qr": "string"
}- type peut être : "DEPOSIT" ou "WITHDRAW". (NB: un échange correspond à un dépôt et un retrait d'une même quantité = 2 items.)
- code_from_qr correspond à un code restaurant unique et secret qu'il faudra connaitre (probablement via appel API spécifique avec un user dédié, à définir)
exemple d'un échange de n contenant :
{
"items": [
{
"type": "DEPOSIT",
"container_id": 1,
"quantity": n
},
{
"type": "WITHDRAW",
"container_id": 1,
"quantity": n
}
],
"code_from_qr": "string"
}Ce POST retournera une erreur si l'opération est impossible (manque de stock, manque de cagnotte, etc...)
faire un POST (authentifié) sur /api/orders avec le montant à créditer
{
"amount": 16
}ceci renvoi une commande (order).
-> un lien pour la payer se trouve dans l'attribut pay_url
Une fois le paiement fait, la cagnotte sera créditée automatiquement
faire un POST (authentifié) sur /api/orders/{id}/pay
avec le paymentToken à utiliser
{
"token_id": "123456789azertyuiopmlkjhgfdsqwxcvbn"
}