block-accounting/backend/README.md
2024-05-18 11:22:53 +03:00

194 lines
4.8 KiB
Markdown

# NoNameBlockchainAccounting backend
## Build
### Locally
1. Install Go >= 1.22
``` sh
curl -LO https://get.golang.org/$(uname)/go_installer && \
chmod +x go_installer && \
./go_installer && \
rm go_installer
```
2. Install docker:
``` sh
output=$(which docker);
if [ -z "${output}" ]; then
sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
sudo apt -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
fi
```
3. Build it!:
``` sh
make bin.build
```
4. Start the server:
``` sh
make d.net && \
sudo docker compose up blockd-db -d && \
make run.debug
```
Or
``` sh
make d.net && \
sudo docker compose up blockd-db -d && \
make run.local
```
### Docker
Just run
``` sh
make up
```
# API
Request content type: application/json
Response content type: application/json
## POST **/join**
### Request body:
name (string, optional)
credentals (object, optional)
credentals.email (string, optional)
credentals.phone (string, optional)
credentals.telegram (string, optional)
mnemonic (string, **required**)
### Example
Request:
``` bash
curl --location 'http://localhost:8081/join' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Bladee The Grand Drainer",
"credentals": {
"email": "bladeee@gmail.com",
"phone": "+79999999999",
"telegram": "@thebladee"
},
"mnemonic":"airport donate language disagree dumb access insect tribe ozone humor foot jealous much digital confirm"
}'
```
Response:
``` json
{
"token": "token-here"
}
```
## POST **/login**
### Request body:
mnemonic (string, **required**)
### Example
Request:
``` bash
curl --location 'http://localhost:8081/login' \
--header 'Content-Type: application/json' \
--data '{
"mnemonic":"airport donate language disagree dumb access insect tribe ozone humor foot jealous much digital confirm"
}'
```
Response:
``` json
{
"token": "token-here"
}
```
## POST **/organizations**
### Request body:
name (string, **required**)
address (string, optional)
wallet_mnemonic (string, optional. *if not provided, creators mnemonic will me used*)
### Example
Request:
``` bash
curl --location 'http://localhost:8081/organizations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTU0NTY4Mzg4NTAsInVpZCI6ImI2NmU1Mjk4LTU1ZTctNGIxNy1hYzliLTA0MzU3YjBlN2Q0ZSJ9.K1I0QoZEdDYK_HEsJ0PdWOfZ8ugTcPfLqy7fHhvK9nk' \
--data '{
"name": "The Drain Gang Inc",
"address": "Backsippestigen 22, 432 36 Varberg, Sweden"
}'
```
Response:
``` json
{
"id": "dfac7846-0f0a-11ef-9262-0242ac120002"
}
```
## GET **/organizations**
### Request body:
cursor (string, optional)
limit (uint8, optional. Max:50, Default:50)
offset_date (uint63, optional. *time as unix milli*)
### Example
Request:
``` bash
curl --location --request GET 'http://localhost:8081/organizations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MTU2MDIyNDMwOTEsInVpZCI6IjUyNTNkMzdjLTMxZDQtNDgxMi1iZTcxLWE5ODQwMTVlNGVlMyJ9.IKd-sM9cy5ehj0Scvbi3HPvhjnWD1MDl-POUlvVo9sA' \
--data '{
"limit":5,
"cursor":"eyJpZCI6IjAxOGY2ZTc3LWUxNDMtNzcyZi04NjJkLTlkZDM5NzUxYTZkMyJ9"
}'
```
Response:
``` json
{
{
"items": [
{
"id": "018f6e77-ebcc-7547-bc84-2556fbf12300",
"name": "The Drain Gang Inc 6",
"address": "1",
"created_at": 1715556104012,
"updated_at": 1715556104012
},
{
"id": "018f6e77-f5f5-7bcb-b98f-9966e7a8b706",
"name": "The Drain Gang Inc 7",
"address": "1",
"created_at": 1715556106613,
"updated_at": 1715556106613
},
{
"id": "018f6e78-0029-7913-9016-d0793c378c42",
"name": "The Drain Gang Inc 8",
"address": "1",
"created_at": 1715556109225,
"updated_at": 1715556109225
},
{
"id": "018f6e7e-9f41-7d7b-8d95-f9be832c09c1",
"name": "The Drain Gang Inc 9",
"address": "1",
"created_at": 1715556543169,
"updated_at": 1715556543169
}
],
"pagination": {
"total_items": 4
}
}
}
```