A super simple and lightweight Javascript SDK for the Buycoins API.
- Installation
- Quick Start
- Usage
- P2P Trading
- Send
- Receive
- Run your own GraphQL queries
- Feature Parity with the Buycoins API
- Contributing.
npm i buycoins-graphql-sdk
To access the Buycoins API, you will need to generate a public and a secret key on thr API Settings
screen in the Buycoins app. You can enable this feature by sending a request to [email protected].
From the Buycoins API documentation:
The API is currently open to access requests from fully verified BuyCoins users. To apply, please send an email to [email protected] from your email account registered on BuyCoins.
To create a naira deposit account:
import { Buycoins } from 'buycoins-graphql-sdk'
// Pass in the public and secret key when creating a new instance.
var buycoinsClient = new Buycoins(process.env.PUBLIC_KEY, process.env.SECRET_KEY)
// The SDK is promise based :). You can also use async/await
buycoinsClient.nairaAccount.createDepositAccount({
accountName: "somtochi test"
})
.then(data => {
// TODO: Handle data
})
.catch(err => {
// TODO: Handle error
})
That's it!
The SDK models the API and each property in the Buycoins
class from the SDK matches with a section in the Buycoins API documentation.
To create a virtual bank account:
buycoins.nairaAccount.createDepositAccount({
accountName: <replace-with-account-name>
})
BuyCoins API docs: [https://developers.buycoins.africa/naira-token-account/create-virtual-deposit-account)[https://developers.buycoins.africa/naira-token-account/create-virtual-deposit-account]
To get active prices with the API:
buycoins.orders.getPrices()
This returns an array of different prices and the id of the cryptocurrency will be used in buying and selling. Example response
{
"data": {
"getPrices": [
{
"id": "QnV5Y29pbnNQcmljZS03Z", # will be used in buy and sell API
"cryptocurrency": "bitcoin",
"buyPricePerCoin": "16530037.235",
"minBuy": "0.001",
"maxBuy": "0.45663548",
"expiresAt": 1612008724
},
{
"id": "QnV5Y29pbnNQcmljZS04Y2ZhYjhmNS0yYTEwLTQ1NzUtOWRhNi1jNzQ4MWY5MDIyODk=",
"cryptocurrency": "ethereum",
"buyPricePerCoin": "656408.797",
"minBuy": "0.02",
"maxBuy": "11.49923881",
"expiresAt": 1612008724
},
]
}
}
To buy cryptocurrency with the API:
buycoins.orders.buy({
amount: 0.01,
price: "QnV5Y29pbnNQcmljZS04Y2ZhYjhmNS0yYTEwLTQ1NzUtOWRhNi1jNzQ4MWY5MDIyODk=",
crypto: "ethereum",
})
To sell cryptocurrency with the API:
buycoins.orders.sell({
amount: 0.01,
price: "QnV5Y29pbnNQcmljZS04Y2ZhYjhmNS0yYTEwLTQ1NzUtOWRhNi1jNzQ4MWY5MDIyODk=",
crypto: "ethereum",
})
BuyCoins API docs: https://developers.buycoins.africa/placing-orders/sell
The buy and sell API usually returns an order object, To get the order, so that you can check the status:
buycoins.orders.getOrder(<order-id>)
Too lazy to loop over getPrice
and get the correct ID for the crypto? We got you!
When buying:
buycoins.orders.getPriceID(0.01,"ethereum", "Buy")
When selling:
buycoins.orders.getPriceID(0.01,"ethereum", "Sell")
BuyCoins API docs: https://developers.buycoins.africa/p2p/introduction
You can find out when next dynamic prices will be updated
buycoins.p2p.getOrdersExpiry({
status: "open"
})
BuyCoins API docs: https://developers.buycoins.africa/p2p/post-limit-order#dynamic-price-expiry
You can place a static limit order using the placeLimitOrder
method. StaticPrice
is required:
buycoins.p2p.placeLimitOrder({
orderSide: "buy",
amount: 0.01,
crypto: "bitcoin",
priceType: "static",
staticPrice: 6000000,
}
)
You can place a dynamic limit order using the placeLimitOrder
method. dynamicExchangeRate
is required:
buycoins.p2p.placeLimitOrder({
orderSide: "buy",
amount: 0.01,
crypto: "bitcoin",
priceType: "dynamic",
dynamicExchangeRate: 1.5,
}
)
BuyCoins API docs: https://developers.buycoins.africa/p2p/placing-a-limit-order
To post a market order call the postMarketOrder
method.
Note from API documentation:
When you want to sell cryptocurrency, orderSide should be buy so that your order is matched with a buy limit order. To buy cryptocurrency, orderSide should be sell
buycoins.p2p.postMarketOrder({
orderSide: "buy", // change to `sell` if you are buying crypto
amount: 0.01,
crypto: "bitcoin",
}
)
BuyCoins API docs: https://developers.buycoins.africa/p2p/post-market-order#when-to-place-a-market-order
You can retrieve a list of orders you have placed by calling the getOrders
method.
buycoins.p2p.getOrders({
status: "open" // change to `completed` if you want to retrieve completed orders
})
BuyCoins API docs: https://developers.buycoins.africa/p2p/get-orders#open-and-completed-orders
You can view the market book using the getMarketBook
query.
buycoins.p2p.getMarketBook()
BuyCoins API docs: https://developers.buycoins.africa/p2p/get-market-book
You can place a static limit order using the placeLimitOrder
method. StaticPrice
is required:
buycoins.p2p.placeLimitOrder({
orderSide: "buy",
amount: 0.01,
crypto: "bitcoin",
priceType: "static",
staticPrice: 6000000,
}
)
You can place a dynamic limit order using the placeLimitOrder
method. dynamicExchangeRate
is required:
buycoins.p2p.placeLimitOrder({
orderSide: "buy",
amount: 0.01,
crypto: "bitcoin",
priceType: "dynamic",
dynamicExchangeRate: 1.5,
}
)
BuyCoins API docs: https://developers.buycoins.africa/p2p/placing-a-limit-order
To get estimated network fees before sending
buycoins.send.getEstimatedNetworkFee({
crypto: "bitcoin",
amount: 0.01
})
BuyCoins API docs: https://developers.buycoins.africa/sending/network-fees
This allows you to send cryptocurrency to an on-chain address.
buycoins.send.sendCrypto({
crypto: "bitcoin",
amount: 0.01,
address: "<on-chain-address>"
})
BuyCoins API docs: https://developers.buycoins.africa/sending/send
To get account balance of all cryptocurrency:
buycoins.send.getBalance()
To get account balance of a particular cryptocurrency:
buycoins.send.getBalance({
crypto: "bitcoin"
})
BuyCoins API docs: https://developers.buycoins.africa/sending/account-balances
To receive cryptocurrency, you will first have to create an address on BuyCoins.
buycoins.receive.createAddress({
crypto: "bitcoin"
})
BuyCoins API docs: https://developers.buycoins.africa/receiving/create-address
If we are yet to implement some features or you want to run some customized queries outside what the API provides. You can access the query
function.
buycoins.api.request(`query{
getPrices{
id
cryptocurrency
buyPricePerCoin
minBuy
maxBuy
expiresAt
}
}`)
You can pass in options to the query:
const options = {
name: "wanda"
}
buycoins.api.request(`mutation($name: String!) {
createDepositAccount(accountName: name) {
accountNumber
accountName
accountType
bankName
accountReference
}
}`, options)
This project is in continous development and is striving for feature parity with the Buycoins API.The sections of the Buycoins API yet to be implemented are listed below:
Your pull requests are definitely welcome ❤️! We're always looking forward to adding more test and acheiving feature parity with the Buycoins API. Take a look at Contributing.md