# /purchase

This endpoint is used for handling purchases from the client.
It currently only supports purchases using Google Play in app purchases.

## see

- [premium concept](../concept/premium.md)

## POST /purchase/can-do-purchase

Use this before a purchase to check if a purchase is possible.

### request

see [this JSON schema](../schema/candopurchaserequest.md)

### response

On a invalid request body: HTTP status code 400 Bad request

On a invalid auth token: HTTP status code 401 Unauthorized

On success: a JSON object with the property ``canDoPurchase`` (string) and ``googlePlayPublicKey`` (string, base64)

possible values of ``canDoPurchase``:

- ``yes``
- ``no due to old purchase``
- ``no because not supported by the server``

The ``googlePlayPublicKey`` is the key by which purchases using google play should be signed.

## POST /purchase/finish-purchase-by-google-play

Use this to report a purchase to the server/ unlock all features after a purchase
using Google Play.

### request

see [this JSON schema](../schema/finishpurchasebygoogleplayrequest.md)

### response

On a invalid request body: HTTP status code 400 Bad request

On a invalid auth token: HTTP status code 401 Unauthorized

On a invalid purchase: HTTP status code 409 Conflict

On success: ``{"ok": true}``

### error handling

- if the purchase was already added (for the same or an other family), then this request is ignored and success is returned
