Skip to content

How to use dabba api

Janssens Gaëtan edited this page Dec 17, 2021 · 16 revisions

Tuto

Voici comment utiliser l'API Dabba pour réaliser des opérations.

Notes préalables

  • 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.

Créer un utilisateur

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.

Se connecter en Oauth / Obtenir un access_token

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.

Obtenir les données utilisateur courrant

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

Obtenir la liste des contenants et leur prix

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 échange, un retour ou un retrait

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...)

Créditer sa cagnotte

faire un POST (authentifié) sur /api/orders avec le montant à créditer

{
  "amount": 16
}

ceci renvoi une commande (order).

A) sans avoir de carte de crédit enregistrée dans le compte

-> un lien pour la payer se trouve dans l'attribut pay_url

Une fois le paiement fait, la cagnotte sera créditée automatiquement

B) avec un carte pre-enregistrée

faire un POST (authentifié) sur /api/orders/{id}/pay

avec le paymentToken à utiliser

{
  "token_id": "123456789azertyuiopmlkjhgfdsqwxcvbn"
}