Zinari API
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
The Zinari API provides a unified, user friendly and secure layer for developers to build their applications with support for different cryptocurrencies.
- MainNet https://api.zinari.org
Create demo invoice:
Shows invoice example, non refundable
This is a typical core workflow for using different Zinari endpoints. A simple use-case is building an online store that accepts a selection of cryptocurrencies as payment options. Another example is creating a fundraising page for an event which accepts donations from different cryptocurrencies.
One more complex user case, a website developer can manage multiple client stores with cryptocurrencies integration since an Zinari account can have multiple stores linked with different cryptocurrency wallets. Service subscription mode is also supported by us. For these advanced user cases, please check the endpoint sections for details.
Supported cryptocurrency:
- Bitcoin
- Ethereum
- Monero
- Tezos
- EOS
- DigiByte
- ReddCoin
- Ravencoin
- Xenios Coin
- Kusama
- Oduwa Coin
- TUSC
- Zinari
All examples are provided for the MainNet.
Registration
curl 'https://api.zinari.org/v2/register-zina' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce'
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce';
var options = {
url: 'https://api.zinari.org/v2/register-zina',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.zinari.org/v2/register-zina', $headers, $data);
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/register-zina", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"You only need to confirm email now"}
POST /v2/register-zina
Register a new account
Password requirements:
Do not use common sequences or your private details, add another word or two, consider using lowercase and uppercase and special symbols
- At least 8 characters in length
- At least a zxcvbn score 3
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /v2/register-zina
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Creating Store
curl 'https://api.zinari.org/create-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&name=myawesomestore'
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn';
var options = {
url: 'https://api.zinari.org/create-store',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'xpub' => 'vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn'
);
$response = Requests::post('https://api.zinari.org/create-store', $headers, $data);
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/create-store", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Example response:
{"trade":"Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp","token":"108977327347814744673750678559203866607310312666213682394904038637537833731647","store":"ExCAYgcTx6PyDimVaCgmJ1VSdEaDoUkhRoTLgnmmqrrc","wallet":true}
POST /create-store
Creating new store
Beside the API reply, you should also receive email with store details
You could connect a wallet at this step, or you could connect it later
To connect your wallet, you need to provide Master Public key (xPub) for your wallet.
xPub keys can never be used to access your funds. The xPub does not contain any private key information.
Interested in How to find xPub key in your wallet?
Example for electrum wallet:
You could find xPub in electrum in Wallet->Wallet Information
Beside API reply you should also receive an email with store details
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
xpub | body | [string] | false | Master Public key (xPub) |
name | body | [string] | true | store name |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
Response Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
store | body | [string] | true | store id |
wallet | body | [boolean] | true | is wallet connected to the store |
OPTIONS /create-store
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connecting Wallet
Connect BTC Wallet
curl 'https://api.zinari.org/connect-wallet' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
curl 'https://api.zinari.org/connect-wallet-btc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
curl 'https://api.zinari.org/connect-wallet-btc-single' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
curl 'https://api.zinari.org/change-store-btc-wallet-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&single=false&store=4Y2otkewdai44wp23j7pbDwvt22E4a2oUnHJ8KYaGwKp'
// Connect BTC wallet (xPub)
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
// Connect BTC wallet (single address)
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-btc-single',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect BTC wallet (xPub) */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'xpub' => 'vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet', $headers, $data);
/* Connect BTC wallet (single address) */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => '1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-btc-single', $headers, $data);
// Connect BTC wallet (xPub)
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpub5Gqqu8RiML18u93aJLEaEGXxE7CCtjx3Lg84UTYowu86RkDzNCW9nJ5tPp59MvHdmDiD5sSLc3wpR2zqcfjhjarVTqxdHQsZFDFXaaQimPn&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Connect BTC wallet (single address)
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=1HDhRLuWSXwBQLC3oxTQNKyPjos9BEufdF&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-btc-single", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
{"success":"Store bitcoin wallet single status is set to: true"}
POST /connect-wallet
or POST /connect-wallet-btc
Connect a new Bitcoin wallet to the store (using xPub key)
To connect your wallet you need to provide Master Public key (xPub) for your wallet.
xPub keys can never be used to access your funds. The xPub does not contain any private key information.
You can find xPub in electrum in Wallet->Wallet Information
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
xpub | body | [string] | true | Master Public key (xPub) |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet
or /connect-wallet-btc
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
POST /connect-wallet-btc-single
Connect a new Bitcoin wallet to the store (using address)
To connect your wallet your need to provide your wallet address. This can even be an exchange address, however we recommend you use a cold wallet, and not to store your funds on the exchange. Alsom the exchange could take some fees for deposits. In case you are using our Dashboard this is default method for a new user. In case your a big merchant with high frequent multiple transactions we recommend you use xPub key (that generates a new address for every invoice).
Also, in case you are using the API directly, you are required to connect the xPub key first anyway.
Afterwards, you connect the bitcoin single address to a store, that store would be using the Bitcoin single address automatically, however you could switch a store back to the xPub by using /change-store-btc-wallet-status
In case you are a new user and used Dashboard we would use our own xPub key, but still be using the bitcoin single address that you are provided; change-store-btc-wallet-status
is changed to true
automatically after you connect the single bitcoin address. However, you could connect your own xPub key as well.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | Bitcoin address |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-btc-single
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
POST /change-store-btc-wallet-status
Change store status between Bitcoin xPub and Bitcoin single address
You could provide single=true
or single=false
to enable or disable Bitcoin single address for your store.
Consider that if you disable it, you must also have your own xPub key connected (connect-wallet-btc
) to the wallet.
Also, every invoice that was created with connected single address would be still using Bitcoin single address. Same apply for xPub key (in case you didn't connected single address before the created invoice with connected xPub key); that invoice would still be using the address that is generated from xPub key.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
single | body | [string] | true | ether true or false |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /change-store-btc-wallet-status
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
curl 'https://api.zinari.org/connect-wallet-ltc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect LTC wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-ltc',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect LTC wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'xpub' => 'vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-ltc', $headers, $data);
// Connect LTC wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&xpub=vpubd55ruGbQfbahASUtRGdzeUCnKkvVuCgXjnMZGYG3r3cu9kP1LW8ifB48ZN2mDEjmLjhh3CuikintZGGyPEAXpVDJHdLmrAcSYzMehiqrKax&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-ltc", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-ltc
Connect a new Litecoin wallet to the store
To connect your wallet you need to provide Master Public key (xPub) for your wallet.
xPub keys can never be used to access your funds. The xPub does not contain any private key information.
You can find xPub in electrum-ltc in Wallet->Wallet Information
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
xpub | body | [string] | true | Master Public key (xPub) |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-ltc
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect ETH Wallet
curl 'https://api.zinari.org/connect-wallet-eth' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect ETH wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-eth',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect ETH wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => '0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-eth', $headers, $data);
// Connect ETH wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-eth", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-eth
Connect a new Ethereum wallet to the store
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: MyEtherWallet
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-eth
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Ethereum Tokens
curl 'https://api.zinari.org/connect-wallet-eth-token' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=USDT'
// Connect USDT Wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=USDT';
var options = {
url: 'https://api.zinari.org/connect-wallet-eth-token',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect USDT wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => '0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc',
'name' => 'USDT'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-eth-token', $headers, $data);
// Connect USDT wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=USDT}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-eth-token", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-eth-token
Connect a new Ethereum wallet to the store, for use with Ethereum token
To connect your wallet you need to provide your wallet address and Token name
You could use any wallet, for example: MyEtherWallet
Sometimes legacy mew has better token management
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
name | body | [string] | true | token name (DAI, USDT) |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
POST /add-new-eth-token
Request to add new token support
Only users with forgingblock administrator role could confirm request
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
contract | body | [string] | true | token contract address |
decimals | body | [string] | true | token decimals |
name | body | [string] | true | token name (for ex.: DAI or USDT) |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-eth-token
and /add-new-eth-token
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect Monero Wallet
curl 'https://api.zinari.org/connect-wallet-xmr' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&viewkey=544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
// Connect Monero wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&viewkey=544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var options = {
url: 'https://api.zinari.org/connect-wallet-xmr',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect Monero wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => '47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86',
'viewkey' => '544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-xmr', $headers, $data);
// Connect Monero wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&viewkey=544abexxxxxe2xxxx390xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-xmr", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-xmr
Connect a new Monero wallet to the store
To connect your wallet you need to provide your wallet address and secret viewkey (secret viewkey doesn't provide control on funds, but makes transaction details not private, and allows us to get exact amounts from transactions).
You could find your secret viewkey in Monero GUI Wallet in Settings->Show seed & keys
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
viewkey | body | [string] | true | wallet secret viewkey |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-xmr
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect XTZ Wallet
curl 'https://api.zinari.org/connect-wallet-xtz' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect XTZ wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-xtz',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect XTZ wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => 'tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-xtz', $headers, $data);
// Connect XTZ wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=tz1WtUam6YiTYod57FiqxiCy3hTQ1vRiKbM2&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-xtz", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-xtz
Connect a new Tezos wallet to the store
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: Galleon
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-xtz
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect EOS Wallet
curl 'https://api.zinari.org/connect-wallet-eos' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=proxyrozy123&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect EOS wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=proxyrozy123&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-eos',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect EOS wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => 'proxyrozy123',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-eos', $headers, $data);
// Connect EOS wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=proxyrozy123&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-eos", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-eos
Connect a new EOS account to the store
To connect your wallet you need to provide your wallet account name.
You could use any wallet, for example: SimplEOS
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet account name |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-eos
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
EOS Tokens
curl 'https://api.zinari.org/connect-wallet-eos-token' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=fbtstaccount&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=IQ'
// Connect Everipedia Wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=fbtstaccount&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=IQ';
var options = {
url: 'https://api.zinari.org/connect-wallet-eos-token',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect Everipedia wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => 'fbtstaccount',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc',
'name' => 'IQ'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-eos-token', $headers, $data);
// Connect Everipedia wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=fbtstaccount&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=IQ}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-eos-token", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-eos-token
Connect a new EOS token wallet account to the store
To connect your wallet you need to provide your wallet account name
You could use any wallet, for example: SimplEOS
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet account name |
store | body | [string] | true | store id |
name | body | [string] | true | token name (IQ) |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
POST /add-new-eos-token
Request to add new token support
Only users with forgingblock administrator role could confirm request
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
code | body | [string] | true | Representation of privileged EOSIO name type, for ex.: eosio.token |
name | body | [string] | true | token name (for ex.: IQ) |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-eos-token
and /add-new-eos-token
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect Digibyte Wallet
curl 'https://api.zinari.org/connect-wallet-dgb' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect Digibyte wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-dgb',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect Digibyte wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => 'dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-dgb', $headers, $data);
// Connect Digibyte wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=dgb1qk23j5f2te4yvaegwgxj5uhr9jn3k9awr2ht7lr&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-dgb", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-dgb
Connect a new Digibyte wallet to the store
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: Official DigiByte Wallet
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-dgb
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect ReddCoin Wallet
curl 'https://api.zinari.org/connect-wallet-rdd' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect ReddCoin wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-rdd',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect ReddCoin wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => 'Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-rdd', $headers, $data);
// Connect ReddCoin wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-rdd", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-rdd
Connect a new ReddCoin wallet to the store
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: Reddcoin Core Wallet
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-rdd
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect Ravencoin Wallet
curl 'https://api.zinari.org/connect-wallet-rvn' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Connect Ravencoin wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/connect-wallet-rvn',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect Ravencoin wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => 'RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/connect-wallet-rvn', $headers, $data);
// Connect Ravencoin wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=RNecXg9GkKtRAGhRXtW2nmKvzKL7HSksNz&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/connect-wallet-rvn", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /connect-wallet-rvn
Connect a new Ravencoin wallet to the store
To connect your wallet you need to provide your wallet address.
You could use any wallet, for example: Ravencoin Wallet
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /connect-wallet-rvn
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect KSM Wallet
curl 'https://api.zinari.org/v2/connect-wallet-ksm' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu'
// Connect KSM wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu';
var options = {
url: 'https://api.zinari.org/v2/connect-wallet-ksm',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect KSM wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
'address' => 'Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu'
);
$response = Requests::post('https://api.zinari.org/v2/connect-wallet-ksm', $headers, $data);
// Connect KSM wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Ef42pGYNzM9wttEAquij2zcYSGnNmfdy4ktL2mCqZm8Ftdu}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/connect-wallet-ksm", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /v2/connect-wallet-ksm
Connect a new Kusama wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /v2/connect-wallet-ksm
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect Xenios Coin
curl 'https://api.zinari.org/v2/connect-wallet-xnc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
// Connect Xenios Coin wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf';
var options = {
url: 'https://api.zinari.org/v2/connect-wallet-xnc',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect Xenios Coin wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
'address' => 'Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
);
$response = Requests::post('https://api.zinari.org/v2/connect-wallet-xnc', $headers, $data);
// Connect Xenios Coin wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/connect-wallet-xnc", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /v2/connect-wallet-xnc
Connect a new Xenios Coin wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /v2/connect-wallet-xnc
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect Oduwa Coin
curl 'https://api.zinari.org/v2/connect-wallet-owc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
// Connect Oduwa Coin wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf';
var options = {
url: 'https://api.zinari.org/v2/connect-wallet-owc',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect Oduwa Coin wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
'address' => 'Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf'
);
$response = Requests::post('https://api.zinari.org/v2/connect-wallet-owc', $headers, $data);
// Connect Oduwa Coin wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=Xy43NMxC2HBJYfXuDDq6iQ3KVZQaaKn8uf}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/connect-wallet-owc", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /v2/connect-wallet-owc
Connect a new Oduwa Coin wallet to the store
To connect your wallet you need to provide your wallet address.
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | wallet address |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /v2/connect-wallet-owc
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect TUSC
curl 'https://api.zinari.org/v2/connect-wallet-tusc' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=testtest1'
// Connect TUSC
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=testtest1';
var options = {
url: 'https://api.zinari.org/v2/connect-wallet-tusc',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect TUSC */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
'address' => 'testtest1'
);
$response = Requests::post('https://api.zinari.org/v2/connect-wallet-tusc', $headers, $data);
// Connect TUSC
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&address=testtest1}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/connect-wallet-tusc", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /v2/connect-wallet-tusc
Connect a new TUSC account to the store
To connect you need to provide your registed account name
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
address | body | [string] | true | account name |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /v2/connect-wallet-tusc
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Connect Zinari
curl 'https://api.zinari.org/v2/connect-wallet-bsc-token' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=ZINA'
// Connect Zinari Wallet
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=ZINA';
var options = {
url: 'https://api.zinari.org/v2/connect-wallet-bsc-token',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Connect Zinari Wallet */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'address' => '0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc',
'name' => 'ZINA'
);
$response = Requests::post('https://api.zinari.org/v2/connect-wallet-bsc-token', $headers, $data);
// Connect Zinari Wallet
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&address=0x1Cf4E5001AB8D369d2d76B87658eE719f85e2D6E&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=ZINA}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/connect-wallet-bsc-token", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc wallet was successfully updated"}
POST /v2/connect-wallet-bsc-token
Connect a new BSC wallet to the store, for use with Zinari
To connect your wallet you need to provide your wallet address and Token name
You could use any wallet, for example: Metamask with BSC (Binance Smart Chain) network selected
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
address | body | [string] | true | wallet address |
store | body | [string] | true | store id |
name | body | [string] | true | token name (WBNB, BUSD, ZINA) |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
Wallets Connection Status
curl 'https://api.zinari.org/wallet-connection-status' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce'
curl 'https://api.zinari.org/wallet-connection-status-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Wallet's Connection Status
request(options, callback);
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce';
var options = {
url: 'https://api.zinari.org/wallet-connection-status,
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Wallets Connection Status */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.zinari.org/wallet-connection-status', $headers, $data);
// Wallets Connection Status
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/wallet-connection-status", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{
"btc": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"xpub": "tpubD8szuhbEMy3YsXcfREnurMrKu8b5mNS6iXkoPoPj3pdkHEX9wjgNAs4zgG56tEYiNQUjCQ9L4UUxsniaSvQyDVfzG86n8mAmNcyE7ppPzCL"
},
{
"store": "Ars6dcaC2sKSQL7dJ88JHDx8ewS1DdDh5VuXotWypqVu",
"xpub": "tpubD8szuhbEMy3YsXcfREnurMrKu8b5mNS6iXkoPoPj3pdkHEX9wjgNAs4zgG56tEYiNQUjCQ9L4UUxsniaSvQyDVfzG86n8mAmNcyE7ppPzCL-[legacy]"
}
],
"ltc": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"xpub": "tpubD98231kvgEd78q3yYBCLGZj9zpK3mqAb7dzJBt7Zki8Z1EgAv3Jw3k3Eqp2iiYzqwvUD9jciD9L321ziDUqoJQ2o5uUvhWuegQ5MEvBcM3M"
},
{
"store": "Ars6dcaC2sKSQL7dJ88JHDx8ewS1DdDh5VuXotWypqVu",
"xpub": ""
}
],
"eth": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e"
}
],
"ethTokens": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
"name": "DAI"
},
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
"name": "USDT"
}
],
"bch": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"xpub": "tpubD6NzVbkrYhZ4XQucnzr7LNP8MrMjASTn7h1Xz9Eqj8rnq3bxL31qZF1t9k9vJ4GQJKQA63b1RZQixmwxhaX74xzWR4Hm9t8mBAoquxrNLQh"
}
],
"eos": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "proxyrozy123"
}
],
"eosTokens": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "eedae1dair5w",
"name": "IQ"
},
{
"store": "Ars6dcaC2sKSQL7dJ88JHDx8ewS1DdDh5VuXotWypqVu",
"address": "eedae1dair5w",
"name": "IQ"
}
],
"xmr": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86",
"viewkey": "544xxx"
}
],
"dgb": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "DKcG9GiYeCnvHbnBHsdTsYGfmMfYjFLQAv"
}
],
"rdd": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm"
}
],
"rvn": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "mmZFk7bQiWN5C4ga74xCNpPGnK3BrNQPT3"
}
],
"xtz": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "tz1VttGDs9M2kr3zMfLRHqACpAcNcKY2bYj5"
}
]
}
{
"btc": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"xpub": "tpubD8szuhbEMy3YsXcfREnurMrKu8b5mNS6iXkoPoPj3pdkHEX9wjgNAs4zgG56tEYiNQUjCQ9L4UUxsniaSvQyDVfzG86n8mAmNcyE7ppPzCL"
}
],
"ltc": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"xpub": "tpubD98231kvgEd78q3yYBCLGZj9zpK3mqAb7dzJBt7Zki8Z1EgAv3Jw3k3Eqp2iiYzqwvUD9jciD9L321ziDUqoJQ2o5uUvhWuegQ5MEvBcM3M"
}
],
"eth": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e"
}
],
"ethTokens": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
"name": "DAI"
},
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "0x1cf4e5001ab8d369d2d76b87658ee719f85e2d6e",
"name": "USDT"
}
],
"bch": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"xpub": "tpubD6NzVbkrYhZ4XQucnzr7LNP8MrMjASTn7h1Xz9Eqj8rnq3bxL31qZF1t9k9vJ4GQJKQA63b1RZQixmwxhaX74xzWR4Hm9t8mBAoquxrNLQh"
}
],
"eos": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "proxyrozy123"
}
],
"eosTokens": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "eedae1dair5w",
"name": "IQ"
}
],
"trx": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "419ad6fcdd3b423843d1b7077e3f08e50f02fa911c"
}
],
"xmr": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "47EmdKL6kPfFGD9E2PK3izHcdGZRwTrALLMBjo2gVXFwX6wsYcvfsEGFrHAwMkB3Wu6jUYjGc2WozMJ1Z1ACcJwkBjdce86",
"viewkey": "544xxx"
}
],
"dgb": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "DKcG9GiYeCnvHbnBHsdTsYGfmMfYjFLQAv"
}
],
"rdd": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "Rhf1ND9ZiqJgfMmXqj3UenM8W98zvWHKXm"
}
],
"rvn": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "mmZFk7bQiWN5C4ga74xCNpPGnK3BrNQPT3"
}
],
"xtz": [
{
"store": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"address": "tz1VttGDs9M2kr3zMfLRHqACpAcNcKY2bYj5"
}
]
}
POST /wallet-connection-status
Shows all connected wallets per account
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
POST /wallet-connection-status-store
Shows all connected wallets for the store
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /wallet-connection-status
and /wallet-connection-status-store
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Store Management
List All Stores, Remove a Store, & Change or Get Store Name
curl 'https://api.zinari.org/stores-list' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce'
curl 'https://api.zinari.org/remove-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
curl 'https://api.zinari.org/get-store-name' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
curl 'https://api.zinari.org/change-store-name' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=newstorename'
// List All Stores
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce';
var options = {
url: 'https://api.zinari.org/stores-list',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Remove Store
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/remove-store',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Get Store Name
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/get-store-name',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Change Store Name
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=newstorename';
var options = {
url: 'https://api.zinari.org/change-store-name',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* List All Stores */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.zinari.org/stores-list', $headers, $data);
/* Remove Store */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/remove-store', $headers, $data);
/* Get Store Name */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/get-store-name', $headers, $data);
/* Change Store Name */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc',
'name' => 'newstorename'
);
$response = Requests::post('https://api.zinari.org/change-store-name', $headers, $data);
// List All Stores
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/stores-list", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Remove Store
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/remove-store", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Get Store Name
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/get-store-name", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Change Store Name
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc&name=newstorename}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/change-store-name", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response example:
{"stores":[{"id":"DowbehHRkPNAqLTh3iwoNQwoARo3Jig2rE8Y8avgU4KC","name":"storename1"},{"id":"9ZTsUdvkdzDqvHq2MxF9SmBPhj5KvVSN3gQSNGmGBLyH","name":"storename2"}]}
{"success":"Store 8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc was successfully removed"}
{"name":"awesomestore"}
{"name":"newstorename"}
POST /stores-list
List All Stores ID's and Name's
Call support GET
for request with a cookie
POST /remove-store
& POST /get-store-name
Remove a store
POST /get-store-name
Get store name
POST /change-store-name
Change store name
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
store | body | [string] | true | store id |
name | body | [string] | true | store name |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /stores-list
, /remove-store
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Shopify Integration
curl 'https://api.zinari.org/v2/add-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&source=https://username.myshopify.com'
curl 'https://api.zinari.org/v2/add-source-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&source=https://username2.myshopify.com'
curl 'https://api.zinari.org/v2/remove-source-shopify-store' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&source=https://username2.myshopify.com'
curl 'https://api.zinari.org/v2/get-shopify-store-source' -H 'Content-Type: application/x-www-form-urlencoded' \
--data '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240'
POST /v2/add-shopify-store
Add Shopify Store for integration (you run this only once on creation), after which you should use /add-source-shopify-store
even if removed all domain URLs
Correct domain name URL examples: https://username.myshopify.com
, https://username.myshopify.com/
, http://username.myshopify.com
, http://mystore.com
, https://mystore.com
, https://mystore.com/
Incorrect domain name URL examples: https://username.myshopify.com/someproductlocation
, https://mystore.com/someproductlocation
, mystore.com
, username.myshopify.com
, https://username.myshopify.com/?_cd=2263d5ac8bde3e6f61ccba03711adc43d0a1cfdcdaaf98536a99c22e3286844c&_uid=61409788069&preview_theme_id=
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
source | body | [string] | true | Shopify Store Domain URL |
POST /v2/add-source-shopify-store
Add Shopify Store Domain URL for integration
Correct domain name URL examples: https://username.myshopify.com
, https://username.myshopify.com/
, http://username.myshopify.com
, http://mystore.com
, https://mystore.com
, https://mystore.com/
Incorrect domain name URL examples: https://username.myshopify.com/someproductlocation
, https://mystore.com/someproductlocation
, mystore.com
, username.myshopify.com
, https://username.myshopify.com/?_cd=2263d5ac8bde3e6f61ccba03711adc43d0a1cfdcdaaf98536a99c22e3286844c&_uid=61409788069&preview_theme_id=
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
source | body | [string] | true | Shopify Store Domain URL |
POST /v2/remove-source-shopify-store
Remove Shopify Store Domain URL from integration
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
source | body | [string] | true | Shopify Store Domain URL to remove |
POST /v2/get-shopify-store-source
Get and Array with current domain URLs for Shopify Store integration
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
Invoice Management
Every new invoice lifetime is 15 minutes (avoiding volatility fluctuations)
Invoice status could be
new
(invoice has not yet been fully paid)paid
(received payment but has not yet been fully confirmed)confirmed
(payment confirmed)complete
(confirmed and credited)expired
(can no longer receive payments),invalid
(invoice has received payment but was invalid)
Working directly with new invoices
curl 'https://api.zinari.org/create-invoice' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&amount=1550¤cy=usd'
curl 'https://api.zinari.org/check-invoice' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8'
curl 'https://api.zinari.org/check-invoice-status' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8'
// Create new invoice
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var options = {
url: 'https://api.zinari.org/create-invoice',
headers: headers
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Get invoice details
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8';
var options = {
url: 'https://api.zinari.org/check-invoice',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Get invoice status
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8';
var options = {
url: 'https://api.zinari.org/check-invoice-status',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
/* Create new invoice */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
'token' => '27045735428019377312427720305400499206734565713678297173539855010884886478240',
'amount' => '1550',
'currency' => 'usd'
);
$response = Requests::post('https://api.zinari.org/create-invoice', $headers, $data);
/* Get invoice details */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
'token' => '27045735428019377312427720305400499206734565713678297173539855010884886478240',
'invoice' => '6174qz7YsYceLU1WSELTA8'
);
$response = Requests::post('https://api.zinari.org/check-invoice', $headers, $data);
/* Get invoice status */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg',
'token' => '27045735428019377312427720305400499206734565713678297173539855010884886478240',
'invoice' => '6174qz7YsYceLU1WSELTA8'
);
$response = Requests::post('https://api.zinari.org/check-invoice-status', $headers, $data);
// Create new invoice
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&amount=1550¤cy=usd}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/create-invoice", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Get invoice details
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/check-invoice", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Get invoice status
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=3s9LBmZb8yvXT5Dyb7rdrVMKmJkLXiknwPQ84TNxPACg&token=27045735428019377312427720305400499206734565713678297173539855010884886478240&invoice=6174qz7YsYceLU1WSELTA8}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/check-invoice-status", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"id":"U8B7S21kdo8mB7TDtqDUDG","amount":1550,"currency":"USD","realAmount":"0.40162157","creation":1552319384000,"expiration":1552320284000,"payUrl":"bitcoin:tb1qufxkm89aybhp600aycm54s5ycdj2pqz9hzxj4l?amount=0.40162157","status":"new","url":"https://api.zinari.org/invoice?id=7hqLE4VN5eS5DyhZLzCVby"}
{"id":"U8B7S21kdo8mB7TDtqDUDG","amount":1550,"currency":"USD","realAmount":"0.40162157","creation":1552319384000,"expiration":1552320284000,"payUrl":"bitcoin:tb1qufxkm89aybhp600aycm54s5ycdj2pqz9hzxj4l?amount=0.40162157","status":"new","url":"https://api.zinari.org/invoice?id=7hqLE4VN5eS5DyhZLzCVby"}
{"status":"new"}
POST /create-invoice
Create new invoice
POST /check-invoice
Get invoice details
POST /check-invoice-status
Get invoice status
Most common invoice statuses are: new (for a new invoice), confirmed (successful payment), complete (6 confirmations on chain, as for bitcoin) and expired (invoice expired)
In case you need to perform a request inside a public script you should use GET instead as this would save trade
and token
from exposure
Parameters
For /create-invoice
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
amount | body | [string] | true | amount for the price |
currency | body | [string] | true | currency code in ISO 4217 |
link | body | [string] | false | url to follow after the payment |
notification | body | [string] | false | url for IPN request (used by e-commerce software) |
order | body | [string] | false | uniq order id (equal to the order id in e-commerce software) |
For /check-invoice
and /check-invoice-status
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
invoice | body | [string] | true | invoice id |
OPTIONS /create-invoice
, /check-invoice
, /check-invoice-status
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
IPN Response Example & Explanation
IPN is sent in case notification
parameter is provided. Main IPN purpose is to send notifications to e-commerce software. IPNs are not signed, so it always better to use
/check-invoice
or /check-invoice-status
directly when it's possible.
{"id": "U8B7S21kdo8mB7TDtqDUDG", "url": "https://api.zinari.org/invoice?id=7hqLE4VN5eS5DyhZLzCVby", "posData": null, "status": "confirmed", "btcPrice": "0.40162157", "btcPaid": "0.40162157", "btcDue": "0.00000000"}
Invoices History
curl 'https://api.zinari.org/get-invoices' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce'
curl 'https://api.zinari.org/get-store-invoices' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
curl 'https://api.zinari.org/get-store-all-invoices' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
// Get history with all invoices for a store
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc';
var options = {
url: 'https://api.zinari.org/get-store-invoices',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Get history with all invoices for a store */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'store' => '8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc'
);
$response = Requests::post('https://api.zinari.org/get-store-invoices', $headers, $data);
// Get history with all invoices for a store
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=8z5ncxMzgZ8qTQKkgwpxiLMhpzajbx2AZATgBnJynesc}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/get-store-invoices", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
[
{
"ReceivedDate": "2020-01-13T13:15:27.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "DS4rs123JN8chH8QXzXMnX",
"InvoiceCreatedDate": "2020-01-13T13:05:46.000Z",
"InvoiceExpirationDate": "2020-01-13T13:20:46.000Z",
"InvoiceMonitoringDate": "2020-01-13T14:20:46.000Z",
"PaymentId": "354b8163022dfde282b6e025c77beceed145aeea138a4dc01d7d51faf5643e72-1",
"Destination": "tb1qgr3l8u8fhy2mlumqegu65ep4dkqskvuxzt3gec",
"CryptoCode": "BTC",
"ConversionRate": 8090.12550017418,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": "[email protected]",
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=DS4rs123JN8chH8QXzXMnX&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-11T05:14:29.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "BWqGGhrKEWJZ9HA1j7MXrs",
"InvoiceCreatedDate": "2019-04-11T05:08:30.000Z",
"InvoiceExpirationDate": "2019-04-11T05:23:30.000Z",
"InvoiceMonitoringDate": "2019-04-11T06:23:30.000Z",
"PaymentId": "e11e13e2742cfde626b51d197424bb91662bb0121ba1b35c5614230446d95b7a",
"Destination": "tb1qgfh8epgz8zj92an36ykx2q7fwxqzuhnue4sjnd",
"CryptoCode": "BTC",
"ConversionRate": 5213.02452631038,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=BWqGGhrKEWJZ9HA1j7MXrs&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2020-02-17T13:06:43.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "5vVMoUsv4qhUvuu8s9t5ky",
"InvoiceCreatedDate": "2020-02-17T12:59:31.000Z",
"InvoiceExpirationDate": "2020-02-17T13:14:31.000Z",
"InvoiceMonitoringDate": "2020-02-17T14:14:31.000Z",
"PaymentId": "5962014ec62980a9b7b9e8080ef92ba7fceeea9009e73c1c60921b1a6cde3868-0",
"Destination": "tb1qur8n45zc6u5easke9e8zz3cajt8906z22hgatq",
"CryptoCode": "BTC",
"ConversionRate": 9638.589,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": "[email protected]",
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=5vVMoUsv4qhUvuu8s9t5ky&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-10T18:51:08.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "5eQHjRpQ5myesbS9waS34D",
"InvoiceCreatedDate": "2019-04-10T18:50:38.000Z",
"InvoiceExpirationDate": "2019-04-10T19:05:38.000Z",
"InvoiceMonitoringDate": "2019-04-10T20:05:38.000Z",
"PaymentId": "d8abd7b6093d32bbb4c7a7bb7b59eff13ca3542f65ee89888d20746db02b726a",
"Destination": "tb1qxxkgrf5qezxrhs2828mc5mz7cft0axf2d7ahe8",
"CryptoCode": "BTC",
"ConversionRate": 5437.09577642961,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=5eQHjRpQ5myesbS9waS34D&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-05T13:02:39.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "EtrctTJtah9BUuZJYQJp2L",
"InvoiceCreatedDate": "2019-04-05T13:02:23.000Z",
"InvoiceExpirationDate": "2019-04-05T13:17:23.000Z",
"InvoiceMonitoringDate": "2019-04-05T14:17:23.000Z",
"PaymentId": "e9ab7cdb3b507c58029242631fa0949c02aba449ae520f65279f6b4b2ebbd797",
"Destination": "tb1q8dzdl52luedhyn7ly5tdth8dts0zw6rmuly33d",
"CryptoCode": "BTC",
"ConversionRate": 5028.43845060516,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=EtrctTJtah9BUuZJYQJp2L&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": null,
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "A4jCP6gTbsEtRfswrbZKen",
"InvoiceCreatedDate": "2019-05-07T17:03:24.000Z",
"InvoiceExpirationDate": "2019-05-07T17:18:24.000Z",
"InvoiceMonitoringDate": "2019-05-07T18:18:24.000Z",
"PaymentId": null,
"Destination": "tb1qtw3uk4j4u0hxd4uj8agjyw9x088qyn6wttg99l",
"ConversionRate": 5909.29000820981,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": null,
"BuyerEmail": null,
"Accounted": null,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=A4jCP6gTbsEtRfswrbZKen&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": "0.11531550",
"EthRate": "$175.38",
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": null,
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "WiswGDmHiC2aqiATiWEud3",
"InvoiceCreatedDate": "2019-05-07T11:42:30.000Z",
"InvoiceExpirationDate": "2019-05-07T11:57:30.000Z",
"InvoiceMonitoringDate": "2019-05-07T12:57:30.000Z",
"PaymentId": null,
"Destination": "tb1qgczevnfqf9xw5ce9m57ee4nhwr2uw6lskm8hh2",
"ConversionRate": 5892.99314287078,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": null,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=WiswGDmHiC2aqiATiWEud3&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-05T13:15:38.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "XktmvPPeD22ZHeBK1iqtmV",
"InvoiceCreatedDate": "2019-04-05T13:05:35.000Z",
"InvoiceExpirationDate": "2019-04-05T13:20:35.000Z",
"InvoiceMonitoringDate": "2019-04-05T14:20:35.000Z",
"PaymentId": "6d74496a8084eac15a6af7f77ff9e0f13b268c40bbac85c568e717b64fce6308",
"Destination": "tb1qw67j7m7zcc66gmuf6mc6ullzy4fgwejtqu27yu",
"CryptoCode": "BTC",
"ConversionRate": 5028.43845060516,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=XktmvPPeD22ZHeBK1iqtmV&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-10T16:46:44.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "2aUGbRCapf5GcKHcK2KJnZ",
"InvoiceCreatedDate": "2019-04-10T16:41:02.000Z",
"InvoiceExpirationDate": "2019-04-10T16:56:02.000Z",
"InvoiceMonitoringDate": "2019-04-10T17:56:02.000Z",
"PaymentId": "021c06d1dbfabaeba9378a05a2c3b9243f704d31bd92ffd651d04b7cc9e7cfc5",
"Destination": "tb1q97n5eelvnfsfx8mpvscqdt38uhmrve59uk4cyd",
"CryptoCode": "BTC",
"ConversionRate": 5287.05211729067,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=2aUGbRCapf5GcKHcK2KJnZ&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-06T07:54:56.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "QziNEEcQGDaN8FQqBmXqAf",
"InvoiceCreatedDate": "2019-04-06T07:53:11.000Z",
"InvoiceExpirationDate": "2019-04-06T08:08:11.000Z",
"InvoiceMonitoringDate": "2019-04-06T09:08:11.000Z",
"PaymentId": "406e1b4354c7261b16b914a2929e05169c5a04fefa5f2e5384c35e62cb8ca79f-1",
"Destination": "tb1qzgqgd72y5wkk5rne2wla80zm70ra40lfpklqaw",
"CryptoCode": "BTC",
"ConversionRate": 5020.57851110224,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=QziNEEcQGDaN8FQqBmXqAf&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": null,
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "GGtKcvbuaaXo6kfnwPybHd",
"InvoiceCreatedDate": "2019-05-07T16:33:27.000Z",
"InvoiceExpirationDate": "2019-05-07T16:48:27.000Z",
"InvoiceMonitoringDate": "2019-05-07T17:48:27.000Z",
"PaymentId": null,
"Destination": "tb1qk4gck8z9pv6ej5ff7sugn94hm97rastddpqsu9",
"ConversionRate": 5906.34461841557,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": null,
"BuyerEmail": null,
"Accounted": null,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=GGtKcvbuaaXo6kfnwPybHd&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": "0.11513736",
"EthRate": "$175.68",
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": null,
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "UKD5b23dz7rzzmsy5vRvvu",
"InvoiceCreatedDate": "2019-05-07T17:36:19.000Z",
"InvoiceExpirationDate": "2019-05-07T17:51:19.000Z",
"InvoiceMonitoringDate": "2019-05-07T18:51:19.000Z",
"PaymentId": null,
"Destination": "tb1qpf3ptyhwpcyegezpd8ma3356nylkten4ftxwlx",
"ConversionRate": 5913.54195543885,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": null,
"BuyerEmail": null,
"Accounted": null,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=UKD5b23dz7rzzmsy5vRvvu&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": "0.11562632",
"EthRate": "$174.57",
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": null,
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "KUzRUbjNXPpXy4eA9s9Jj2",
"InvoiceCreatedDate": "2019-05-07T17:24:30.000Z",
"InvoiceExpirationDate": "2019-05-07T17:39:30.000Z",
"InvoiceMonitoringDate": "2019-05-07T18:39:30.000Z",
"PaymentId": null,
"Destination": "tb1qq5x5et5xkzlh62pcx3fyj9f0cn8kkysp3vxu2n",
"ConversionRate": 5921.85192741704,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": null,
"BuyerEmail": null,
"Accounted": null,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=KUzRUbjNXPpXy4eA9s9Jj2&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": "0.11546427",
"EthRate": "$174.77",
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-06-19T15:35:02.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": "9",
"InvoiceId": "AV1b2VBA3Hb8cQQqSeQLXw",
"InvoiceCreatedDate": "2019-06-19T15:34:15.000Z",
"InvoiceExpirationDate": "2019-06-19T15:49:15.000Z",
"InvoiceMonitoringDate": "2019-06-19T16:49:15.000Z",
"PaymentId": "4c16cafe6a7915f6f8b6a255896b0cd5bd582df62c432505974ab0d0301b1541-0",
"Destination": "tb1q35zxyylvvcj64fya6u8asx6zlxqy08lchsr0lz",
"CryptoCode": "BTC",
"ConversionRate": 9078.99249761391,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": "[email protected]",
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=AV1b2VBA3Hb8cQQqSeQLXw&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": null,
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "GoB4mGusi4NKb1L3kMZdyK",
"InvoiceCreatedDate": "2019-05-07T17:09:02.000Z",
"InvoiceExpirationDate": "2019-05-07T17:24:02.000Z",
"InvoiceMonitoringDate": "2019-05-07T18:24:02.000Z",
"PaymentId": null,
"Destination": "tb1quss873kkrudszuucftrkxp8us4ywlr44s6fxyr",
"ConversionRate": 5909.29000820981,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": null,
"BuyerEmail": null,
"Accounted": null,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=GoB4mGusi4NKb1L3kMZdyK&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": "0.11551228",
"EthRate": "$175.14",
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-07-11T13:23:52.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "Bx679HRpUM2Ti1Lwn1y55J",
"InvoiceCreatedDate": "2019-07-11T13:22:34.000Z",
"InvoiceExpirationDate": "2019-07-11T13:37:34.000Z",
"InvoiceMonitoringDate": "2019-07-11T14:37:34.000Z",
"PaymentId": "987342f1eab2ef7011884225ce74d805aeb2761c5117490e95298c0a2e035a91-0",
"Destination": "tb1qz0z25t35egsazmtnzee3apk7ymtphdtmrpvdvg",
"CryptoCode": "BTC",
"ConversionRate": 11689.469622758,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": "[email protected]",
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=Bx679HRpUM2Ti1Lwn1y55J&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-12-23T11:18:09.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "4pnDMfAD5s5PWVVXE4BctE",
"InvoiceCreatedDate": "2019-12-23T11:17:15.000Z",
"InvoiceExpirationDate": "2019-12-23T11:32:15.000Z",
"InvoiceMonitoringDate": "2019-12-23T12:32:15.000Z",
"PaymentId": "6c3609e1a8f3f5abcf297d9bcc5e7a0dc856f688f88db0e5e4f111e418d5119a-0",
"Destination": "tb1q3yzscnwvjk2eft9rhgpycdvssfmsuw0wpele8w",
"CryptoCode": "BTC",
"ConversionRate": 7530.9323601033,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": "[email protected]",
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=4pnDMfAD5s5PWVVXE4BctE&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-05T14:01:24.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "FKSuQreLNBo6RqVjYUVDTb",
"InvoiceCreatedDate": "2019-04-05T14:01:07.000Z",
"InvoiceExpirationDate": "2019-04-05T14:16:07.000Z",
"InvoiceMonitoringDate": "2019-04-05T15:16:07.000Z",
"PaymentId": "096ad909d0c7611968aafa5484da013846b97557803e82089315786f6234cb0a",
"Destination": "tb1qlfcqsze6k8rx9vmqpn27jparl4x77c8hau9cq7",
"CryptoCode": "BTC",
"ConversionRate": 5027.63776201246,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=FKSuQreLNBo6RqVjYUVDTb&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-06-28T14:30:40.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": "14",
"InvoiceId": "BtgkS415X31Cn8L47tsarB",
"InvoiceCreatedDate": "2019-06-28T14:28:23.000Z",
"InvoiceExpirationDate": "2019-06-28T14:43:23.000Z",
"InvoiceMonitoringDate": "2019-06-28T15:43:23.000Z",
"PaymentId": "07ad915408d8fb06f8b2277d37ee3c57542e017de54b5cc92f564af335b1a5d9-0",
"Destination": "tb1qjgnfup3p7s2vssakhyhx5eqv9zgnvyghrj5uk7",
"CryptoCode": "BTC",
"ConversionRate": 11765.6470966484,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": "[email protected]",
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=BtgkS415X31Cn8L47tsarB&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-04-05T12:59:46.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "PqGUBF3JzotxTwnGQ5N8DD",
"InvoiceCreatedDate": "2019-04-05T12:50:53.000Z",
"InvoiceExpirationDate": "2019-04-05T13:05:53.000Z",
"InvoiceMonitoringDate": "2019-04-05T14:05:53.000Z",
"PaymentId": "53dc9636f57dab521739ebeaa653de75aee1761f272e8d142f8f20af4e68e0b2",
"Destination": "tb1q5zflf5lwxnza7mff7hpx6tr3m5qmlkpukck6yj",
"CryptoCode": "BTC",
"ConversionRate": 5041.0669819548,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": null,
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=PqGUBF3JzotxTwnGQ5N8DD&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
},
{
"ReceivedDate": "2019-08-19T05:21:01.000Z",
"StoreId": "HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y",
"OrderId": null,
"InvoiceId": "4VVQ1yTFT7dXVpA48o27RL",
"InvoiceCreatedDate": "2019-08-19T05:19:38.000Z",
"InvoiceExpirationDate": "2019-08-19T05:34:38.000Z",
"InvoiceMonitoringDate": "2019-08-19T06:34:38.000Z",
"PaymentId": "2c91d947e3c355ab3a7ebfeb130e4f4f32cb62116da217754401324482a928db-0",
"Destination": "tb1q5029e8p7udn5ze5t9u3au7rze9aer4x7geg3ga",
"CryptoCode": "BTC",
"ConversionRate": 10382.0971205188,
"InvoiceCurrency": "USD",
"InvoiceItemCode": null,
"InvoiceStatus": "complete",
"InvoiceExceptionStatus": "",
"BuyerEmail": "[email protected]",
"Accounted": true,
"InvoicePaymentDetails": "https://api.zinari.org/invoice/status?invoiceId=4VVQ1yTFT7dXVpA48o27RL&paymentMethodId=BTC&_=1",
"BchAmount": null,
"BchRate": null,
"BchPaidDetected": null,
"DgbAmount": null,
"DgbRate": null,
"DgbPaidDetected": null,
"EosAmount": null,
"EosRate": null,
"EosPaidDetected": null,
"EosTlosAmount": null,
"EosTlosRate": null,
"EosTlosPaidDetected": null,
"EosIqAmount": null,
"EosIqRate": null,
"EosIqPaidDetected": null,
"EthAmount": null,
"EthRate": null,
"EthPaidDetected": null,
"EthUsdtAmount": null,
"EthUsdtRate": null,
"EthUsdtPaidDetected": null,
"EthDaiAmount": null,
"EthDaiRate": null,
"EthDaiPaidDetected": null,
"RddAmount": null,
"RddRate": null,
"RddPaidDetected": null,
"RvnAmount": null,
"RvnRate": null,
"RvnPaidDetected": null,
"TronAmount": null,
"TronRate": null,
"TronPaidDetected": null,
"TronUsdtAmount": null,
"TronUsdtRate": null,
"TronUsdtPaidDetected": null,
"TronBttAmount": null,
"TronBttRate": null,
"TronBttPaidDetected": null,
"XmrAmount": null,
"XmrRate": null,
"XmrPaidDetected": null,
"XtzAmount": null,
"XtzRate": null,
"XtzPaidDetected": null
}
]
{"invoices":[["9rX3PEE8U1rZuMppqtBarn"],["KLo7ca2xbxswBHuFYBjfsU"],["LNgzR6u1nNkcrVmamJkGWU"],["JPQcwAoAo5cdTgi5xNPGZ4"],["Q4c18wkfwDYBg8nQfpSxyq"],["SE7FuzCdaQfwPbD38mkJsQ"]]}
POST /get-invoices
Get history with all invoices with complete/confirmed/paid
statuses
POST /get-store-invoices
Get history with all invoices for a store with complete/confirmed/paid
statuses
POST /get-store-all-invoices
Get all previously created invoices IDs as array
Parameters
For /get-invoices
, and /get-ln-invoices
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
For /get-store-invoices
and /get-store-ln-invoices
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
Response Parameters
For /get-invoices
, /get-store-invoices
Parameter | Description |
---|---|
ReceivedDate | payment received date |
StoreId | store id |
OrderId | order Id |
InvoiceId | invoice id |
InvoiceCreatedDate | date of creation of the invoice |
InvoiceExpirationDate | date of expiration of the invoice |
InvoiceMonitoringDate | date when we cease to monitor events of the invoice |
PaymentId | unique identifier of a payment |
Destination | the destination address the customer paid to |
CryptoCode | currency code of the method of payment (e.g. BTC) |
NetworkFee | network fee paid by the user in this payment |
ConvertionRate | conversion rate at invoice creation to convert from CryptoCode to InvoiceCurrency |
InvoiceCurrency | currency of the invoice (e.g. USD) |
InvoicePrice | price of the invoice (without Network Fee, in InvoiceCurrency) |
InvoiceItemCode | item code of the invoice |
InvoiceStatus | status of the invoice (e.g. expired) |
InvoiceException | status of the invoice (e.g. paidPartial) |
BuyerEmail | customer email |
InvoicePaymentDetails | URL for the invoice in BTC (could be changed manually from BTC to the another cryptoCode, for ex. ETH) |
BchAmount | invoice amount in Bitcoin Cash |
BchRate | Bitcoin Cash conversion rate |
BchPaidDetected | Amount of payment in Bitcoin Cash that was detected for the invoice |
DgbAmount | invoice amount in DigiByte |
DgbRate | DigiByte conversion rate |
DgbPaidDetected | Amount of payment in DigiByte that was detected for the invoice |
EosAmount | invoice amount in EOS |
EosRate | EOS conversion rate |
EosPaidDetected | Amount of payment in EOS that was detected for the invoice |
EosIqAmount | Amount in IQ |
EosIqRate | IQ conversion rate |
EosIqPaidDetected | Amount of payment in IQ that was detected for the invoice |
EthAmount | Amount in Ethereum |
EthRate | Ethereum conversion rate |
EthPaidDetected | Amount of payment in ETH that was detected for the invoice |
EthUsdtAmount | Amount in USDT (on Ethereum) |
EthUsdtRate | USDT conversion rate |
EthUsdtPaidDetected | Amount of payment in USDT that was detected for the invoice |
EthDaiAmount | Amount in DAI (on Ethereum) |
EthDaiRate | DAI conversion rate |
EthDaiPaidDetected | Amount of payment in DAI that was detected for the invoice |
RddAmount | Amount in ReddCoin |
RddRate | ReddCoin conversion rate |
RddPaidDetected | Amount of payment in ReddCoin that was detected for the invoice |
RvnAmount | Amount in Ravencoin |
RvnRate | Ravencoin conversion rate |
RvnPaidDetected | Amount of payment in Ravencoin that was detected for the invoice |
XmrAmount | Amount in Monero |
XmrRate | Monero conversion rate |
XmrPaidDetected | Amount of payment in Monero that was detected for the invoice |
XtzAmount | Amount in Tezos |
XtzRate | Tezos conversion rate |
XtzPaidDetected | Amount of payment in Tezos that was detected for the invoice |
BtcSingleRate | Bitcoin conversion rate |
BtcSingleAmount | Amount in BTC |
BtcSingleTxId | Transactions that a used to verify that invoice is complete |
BtcSingleTransactionsMempool | All transactions in mempool at the time of invoice |
BtcSingleMempool | Full Mempool state dump |
BtcSinglePaidDetectedMempool | Amount of payment (im mempool) in BTC that was detected for the invoice |
XncAmount | Amount in Xenios Coin |
XncRate | Xenios Coin conversion rate |
XncPaidDetected | Amount of payment in Xenios Coin that was detected for the invoice |
KsmAmount | Amount in Kusama |
KsmRate | Kusama conversion rate |
KsmPaidDetected | Amount of payment in Kusama that was detected for the invoice |
OwcAmount | Amount in Oduwa |
OwcRate | Oduwa conversion rate |
OwcPaidDetected | Amount of payment in Oduwa that was detected for the invoice |
OPTIONS /get-invoices
, /get-store-invoices
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Extending invoice expiration time
curl 'https://api.zinari.org/v2/store-invoice-expiration' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4&time=60'
// Extend invoice expiration time for a store
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4&time=60';
var options = {
url: 'https://api.zinari.org/v2/store-invoice-expiration',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Extend invoice expiration time for a store */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'trade' => '2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4',
'time' => '60'
);
$response = Requests::post('https://api.zinari.org/v2/store-invoice-expiration', $headers, $data);
// Extend invoice expiration time for a store
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`trade=2GhhbL55TyYUDqadvvEEpT5AafXynVTjqqTkMHhtW7T4&time=60`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/store-invoice-expiration", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"success":"Store expiration time updated"}
POST /v2/store-invoice-expiration
Set invoice expiration time
time
parameter is time in minutes, So, for example 30
is 30 minutes. Minimum value for time
is 10, while maximum is 360 minutes
Parameters
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
time | body | [string] | true | time for expiration in minutes > 10 < 360 |
OPTIONS /v2/store-invoice-expiration
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Item Payment URLs (checkout)
curl 'https://api.zinari.org/create-item-sale' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550¤cy=rub&description=spoon&email=test%40fastmail.mx&count=2&name=bestspoon'
curl 'https://api.zinari.org/check-item' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=24ea53d945692da5f353b4cd323e7826'
curl 'https://api.zinari.org/check-item-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=24ea53d945692da5f353b4cd323e7826'
curl 'https://api.zinari.org/items-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647'
curl 'https://api.zinari.org/v2/checkout-update' -H 'Content-Type: application/x-www-form-urlencoded' --data 'item=24ea53d945692da5f353b4cd323e7826&description=thebesttool&name=product1&trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&count=12'
// Create new Item Payment URL
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550¤cy=rub&description=spoon&email=test%40fastmail.mx&count=2&name=bestspoon';
var options = {
url: 'https://api.zinari.org/create-item-sale',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Check Item Payment Details
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'item=24ea53d945692da5f353b4cd323e7826';
var options = {
url: 'https://api.zinari.org/check-item',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Display Details for All Ever Created Payment Urls
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647';
var options = {
url: 'https://api.zinari.org/items-list',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Modify Item Payment Details
var fetch = require('node-fetch');
fetch('https://api.zinari.org/v2/checkout-update', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'item=24ea53d945692da5f353b4cd323e7826&description=thebesttool&name=product1&trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&count=12'
});
/* Create new Item Payment URL */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
'amount' => '550',
'currency' => 'rub',
'description' => 'spoon',
'email' => '[email protected]',
'count' => '2',
'name'=> 'bestspoon'
);
$response = Requests::post('https://api.zinari.org/create-item-sale', $headers, $data);
/* Check Item Payment Details */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'item' => '24ea53d945692da5f353b4cd323e7826'
);
$response = Requests::post('https://api.zinari.org/check-item', $headers, $data);
/* Display Details for All Ever Created Payment Urls */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647'
);
$response = Requests::post('https://api.zinari.org/items-list', $headers, $data);
/* Modify Item Payment Details */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'item' => '24ea53d945692da5f353b4cd323e7826',
'description' => 'thebesttool',
'name' => 'product1',
'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
'count' => '12'
);
$response = Requests::post('https://api.zinari.org/v2/checkout-update', $headers, $data);
// Create new Item Payment URL
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=550¤cy=rub&description=spoon&email=test%40fastmail.mx&count=2&name=bestspoon}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/create-item-sale", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Check Item Payment Details
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{item=24ea53d945692da5f353b4cd323e7826}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/check-item", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Check Item Payment Details
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/items-list", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Modify Item Payment Details
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`item=24ea53d945692da5f353b4cd323e7826&description=thebesttool&name=product1&trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&count=12`)
req, err := http.NewRequest("POST", "https://api.zinari.org/v2/checkout-update", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"item":"24ea53d945692da5f353b4cd323e7826","amount":"550","currency":"RUB","description":"spoon","url":"https://api.zinari.org/item/24ea53d945692da5f353b4cd323e7826"}
{"item":"24ea53d945692da5f353b4cd323e7826","amount":"550","currency":"RUB","description":"spoon","status":false,"invoices":null}
{"status":false}
{"items":[{"item":"ccfdd6b43b2b6ca4f76bb7f9bbe820fb","email":"[email protected]","currency":"USD","amount":"550","description":"spoon","invoices":null,"count":2},{"item":"6727f9d6bea3905b8358e3ce33cc7d04","email":"[email protected]","currency":"USD","amount":"5050","description":"table","invoices":null,"count":1},{"item":"13244be7359c3ec4281eaa79a7cb4ab7","email":"[email protected]","currency":"USD","amount":"150","description":"cake","invoices":["JbskdTw7GuEvgg44KXZVmF"],"count":1},{"item":"948da028ed35efb14b30f0f3155a088f","email":"[email protected]","currency":"USD","amount":"250","description":"lake","invoices":null,"count":2}]}
{"item":"24ea53d945692da5f353b4cd323e7826","amount":"0.1","currency":"USD","description":"thebesttool","status":true,"invoices":["LqRkL4CtAPA2CZisnAQdXD","87b7KeaGTLnVkN8c8EeHG5"],"name":"product1","count":12}
POST /create-item-sale
Creates new item Payment URL
Once you open a payment URL, a new invoice for an item will be generated.
And after the last item (check count
parameter) is paid, new invoice generation will stop and item status
will change to true
It could useful for static websites.
POST /check-item
Check item payment details
POST /check-item-status
Check item status
After the last item (check count
parameter) is paid new invoice generation will stop and item status
would change to true
POST /items-list
Details for All Ever Created Payment Urls
GET /item/ + Item ID
Generate invoice for certain item or show item details (ones all paid)
POST /v2/checkout-update
Update item payment details
Parameters
For /create-item-sale
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
currency | body | [string] | true | currency |
amount | body | [string] | true | amount for the price |
description | body | [string] | true | item description |
name | body | [string] | true | item name |
count | body | [boolean] | true | item availability count |
body | [string] | true | email for notification |
For /check-item
and /check-item-status
Parameter | In | Type | Required | Description |
---|---|---|---|---|
item | body | [string] | true | item id |
For /items-list
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
For /v2/checkout-update
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
description | body | [string] | true | item description |
name | body | [string] | true | item name |
count | body | [boolean] | true | item availability count |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
Response Parameters
For /create-item-sale
, /check-item
, /check-item-status
, /v2/checkout-update
Parameter | Description |
---|---|
item | item id |
amount | amount for the price |
description | item description |
status | item status (changes once the last item payed) |
currency | currency |
name | body |
invoices | array with all generated invoices |
url | item payment url |
For /items-list
Array with values for: item, email, currency, amount, description, invoices, count
Parameter | Description |
---|---|
item | item id |
amount | amount for the price |
description | item description |
status | item status (changes once the last item payed) |
currency | currency |
name | body |
invoices | array with all generated invoices |
url | item payment url |
OPTIONS /create-item-sale
, /check-item
, /check-item-status
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Crowdfunding
curl 'https://api.zinari.org/create-crowdfunding' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=1000¤cy=rub&description=cake&email=test%40fastmail.mx&name=bestcake'
curl 'https://api.zinari.org/check-crowdfunding' -H 'Content-Type: application/x-www-form-urlencoded' --data 'fund=58e85d60e308043559c8ac9d2efb3c7cae10'
curl 'https://api.zinari.org/check-crowdfunding-status' -H 'Content-Type: application/x-www-form-urlencoded' --data 'fund=58e85d60e308043559c8ac9d2efb3c7cae10'
curl 'https://api.zinari.org/crowdfunds-list' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647'
curl 'https://api.zinari.org/crowdfunding-donations' -H 'Content-Type: application/x-www-form-urlencoded' --data 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&fund=58e85d60e308043559c8ac9d2efb3c7cae10'
// Create new Crowdfunding
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=1000¤cy=rub&description=cake&email=test%40fastmail.mx&name=bestcake';
var options = {
url: 'https://api.zinari.org/create-crowdfunding',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Check Crowdfunding Details
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'fund=58e85d60e308043559c8ac9d2efb3c7cae10';
var options = {
url: 'https://api.zinari.org/check-crowdfunding',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Display Details for All Ever Created Crowdfunds
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647';
var options = {
url: 'https://api.zinari.org/crowdfunds-list',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Display Donations Details
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&fund=58e85d60e308043559c8ac9d2efb3c7cae10';
var options = {
url: 'https://api.zinari.org/crowdfunding-donations',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Create new Crowdfunding */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
'amount' => '1000',
'currency' => 'rub',
'description' => 'cake',
'email' => '[email protected]',
'name'=> 'bestcake'
);
$response = Requests::post('https://api.zinari.org/create-crowdfunding', $headers, $data);
/* Check Crowdfunding Details */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'fund' => '58e85d60e308043559c8ac9d2efb3c7cae10'
);
$response = Requests::post('https://api.zinari.org/check-crowdfunding', $headers, $data);
/* Display Details for All Ever Created Crowdfunds */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647'
);
$response = Requests::post('https://api.zinari.org/crowdfunds-list', $headers, $data);
/* Display Donations Details */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded');
$data = array(
'trade' => 'Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp',
'token' => '108977327347814744673750678559203866607310312666213682394904038637537833731647',
'fund' => '58e85d60e308043559c8ac9d2efb3c7cae10'
);
$response = Requests::post('https://api.zinari.org/crowdfunding-donations', $headers, $data);
// Create new Crowdfunding
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&amount=1000¤cy=rub&description=cake&email=test%40fastmail.mx&name=bestcake}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/create-crowdfunding", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Check Crowdfunding Details
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{fund=58e85d60e308043559c8ac9d2efb3c7cae10}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/check-crowdfunding", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Display Details for All Ever Created Crowdfunds
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/crowdfunds-list", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Display Donations Details
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{trade=Agozs1WFhSk3zxELPoBDrFaZty5bWPHdZeAeQAHV8gqp&token=108977327347814744673750678559203866607310312666213682394904038637537833731647&fund=58e85d60e308043559c8ac9d2efb3c7cae10}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/crowdfunding-donations", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"fund":"58e85d60e308043559c8ac9d2efb3c7cae10","amount":"1000","currency":"RUB","description":"spoon","email":"[email protected]"}
{"fund":"58e85d60e308043559c8ac9d2efb3c7cae12","amount":"1000","currency":"RUB","description":"spoon","status":true,"invoices":["AiTGALf9M2ij6xHk7Xh5UP","NNst8RxtiorxXuVyVdfGqq","CyW1HdAKvKxRCccNVXgNfS","MJbq984yxcwchCneCMr1pK","HM8Jjuno6TSCe3jGYKV3nq"]
{"status":false}
{"funds":[{"fund":"386b1ebd78dc0fc962706a33a9faa4705b78","email":"[email protected]","currency":"RUB","amount":"1000","description":"cake","invoices":null},{"fund":"8d4e01c49572fa02d82c31281ba2c928eb40","email":"[email protected]","currency":"RUB","amount":"1000","description":"cake","invoices":null},{"fund":"06c024a312279c7d21b01fbbb19bc7bedfe6","email":"[email protected]","currency":"RUB","amount":"1000","description":"cake","invoices":["5dB3RVM7nnckEwKRcvVqoQ"]}]}
{"donations":[{"invoice":"5dB3RVM7nnckEwKRcvVqoQ","created":"2019-10-25T14:29:32.000Z","participantEmail":"[email protected]","status":"complete"}]}
POST /create-crowdfunding
Creates new Crowdfunding
Crowdfunding used to raise certain amount.
Once amount is raised crowdfunding status
changes to true
and GET request with fund
ID and amount
would stop to generating new invoices
POST /check-crowdfunding
Check crowdfunding details
POST /check-crowdfunding-status
Check crowdfunding status
Once amount is raised crowdfunding status
changes to true
and GET request with fund
ID and amount
would stop to generating new invoices
POST /crowdfunds-list
Details for All Ever Created Crowdfunds
POST /crowdfunding-donations
Crowdfunding Donations Details
Displays private information with participants of crowdfunding (donations), includes participant email (email that was provided for the invoice)
GET /fund/ + Crowdfunding ID + / + Amount
Generates invoice for any amount to participate in the Crowdfunding
You can design images or buttons and specify exact amount inside the URL if there any need. Once crowdfunding amount is raised invoice generation would stop, and it would show crowdfunding details
Parameters
For /create-crowdfunding
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
currency | body | [string] | true | currency |
amount | body | [string] | true | amount for the price |
description | body | [string] | true | crowdfunding description |
name | body | [string] | true | crowdfunding campaign name |
body | [string] | true | email for notification |
For /check-crowdfunding
and /check-crowdfunding-status
Parameter | In | Type | Required | Description |
---|---|---|---|---|
fund | body | [string] | true | crowdfunding id |
For /crowdfunds-list
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
For /crowdfunding-donations
Parameter | In | Type | Required | Description |
---|---|---|---|---|
trade | body | [string] | true | trade agreement id |
token | body | [string] | true | token |
fund | body | [string] | true | crowdfunding id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
Response Parameters
For /create-crowdfunding
, /check-crowdfunding
and /check-crowdfunding-status
Parameter | Description |
---|---|
fund | crowdfunding id |
amount | amount to raise (goal) |
description | crowdfunding description or purpose |
status | crowdfunding status (changes once amount is collected) |
currency | currency |
invoices | array with all generated invoices |
balance | total amount collected |
For /crowdfunds-list
Array with values for: Crowdfunding ID (fund), email, currency, amount, description, invoices IDs
For /crowdfunding-donations
Array with values for: Invoice ID, Invoice Creation Time, Participant's email, Invoice Status
OPTIONS /create-crowdfunding
, /check-crowdfunding
and /check-crowdfunding-status
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Attaching image to the item sale or crowdfunding
curl --location --request POST 'https://api.zinari.org/upload-image' --header 'trade:myTrageAgreement' --header 'Content-Type: multipart/form-data' --form 'image=@/home/test/Images/image.jpg'
curl 'https://api.zinari.org/get-image' -H 'Content-Type: application/x-www-form-urlencoded' --data 'image=6b7c4e37754354dedba1c8a44dfc'
curl 'https://api.zinari.org/attach-image' -H 'Content-Type: application/x-www-form-urlencoded' --data 'image=6b7c4e37754354dedba1c8a44dfc&id=6727f9d6bea3905b8358e3ce33cc7d04&store=HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y&trade:myTrageAgreement'
// Upload image
var request = require('request');
var headers = {
'trade': 'myTrageAgreement',
'Content-Type': 'multipart/form-data'
};
var options = {
url: 'https://api.zinari.org/upload-image',
method: 'POST',
headers: headers
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Get image
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'image=6b7c4e37754354dedba1c8a44dfc';
var options = {
url: 'https://api.zinari.org/get-image',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Attach image to item-sale or crowdfunding
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'image=6b7c4e37754354dedba1c8a44dfc&id=6727f9d6bea3905b8358e3ce33cc7d04&store=HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y&trade:myTrageAgreement';
var options = {
url: 'https://api.zinari.org/attach-image',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Upload image */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'trade' => 'myTrageAgreement',
'Content-Type' => 'multipart/form-data'
);
$response = Requests::post('https://api.zinari.org/upload-image', $headers);
/* Get image */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'image' => '6b7c4e37754354dedba1c8a44dfc'
);
$response = Requests::post('https://api.zinari.org/get-image', $headers, $data);
/* Attach image to item-sale or crowdfunding */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'image' => '6b7c4e37754354dedba1c8a44dfc',
'id' => '6727f9d6bea3905b8358e3ce33cc7d04',
'store' => 'HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y',
'trade:myTrageAgreement' => ''
);
$response = Requests::post('https://api.zinari.org/attach-image', $headers, $data);
/// Upload image
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("POST", "https://api.zinari.org/upload-image", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("trade", "myTrageAgreement")
req.Header.Set("Content-Type", "multipart/form-data")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Get image
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`image=6b7c4e37754354dedba1c8a44dfc`)
req, err := http.NewRequest("POST", "https://api.zinari.org/get-image", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Attach image to item-sale or crowdfunding
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`image=6b7c4e37754354dedba1c8a44dfc&id=6727f9d6bea3905b8358e3ce33cc7d04&store=HnKZ7xcEMBq9n1iNiLKz8soLwGezS3r7ErgbAbAGSZ9y&trade:myTrageAgreement`)
req, err := http.NewRequest("POST", "https://api.zinari.org/attach-image", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"image":"6b7c4e37754354dedba1c8a44dfc"}
{"base64":"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","mimetype":"image/png"}
{"success": "Image was successfully attached to the: 6727f9d6bea3905b8358e3ce33cc7d04"}
POST /upload-image
Upload image
Uploads image. Image could be attached later to the payment url (item-sale) or to the crowdfunding, uses multipart/form-data
POST /get-image
Get image mimetype and its base64 representation
POST /attach-image
Attach image id to (item-sale) or to the crowdfunding
Attach image id to (item-sale) or to the crowdfunding. Every new invoice generated that has attached image would have imageId
parametrs in status response
Account Control
Account Management
curl 'https://api.zinari.org/reset-password' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com'
curl 'https://api.zinari.org/change-email' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io'
curl 'https://api.zinari.org/change-password' -H 'Content-Type: application/x-www-form-urlencoded' \
--data 'email=test%40zinaricoin.com&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh'
// Reset password
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com';
var options = {
url: 'https://api.zinari.org/reset-password',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Change email
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io';
var options = {
url: 'https://api.zinari.org/change-email',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Change password
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh';
var options = {
url: 'https://api.zinari.org/change-password',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Reset password */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]'
);
$response = Requests::post('https://api.zinari.org/reset-password', $headers, $data);
/* Change email */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'newemail' => '[email protected]'
);
$response = Requests::post('https://api.zinari.org/change-email', $headers, $data);
/* Change password */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'AeNu3miG7nahg',
'newpassword' => 'myhardpwdAeng2uabohcehhh'
);
$response = Requests::post('https://api.zinari.org/change-password', $headers, $data);
// Reset password
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/reset-password", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Change email
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&newemail=test2%40forgingblock.io}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/change-email", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("DNT", "1")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Change password
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=AeNu3miG7nahg&newpassword=myhardpwdAeng2uabohcehhh}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/change-password", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"success":"Check email inbox for reset link"}
{"success":"Check email inbox for email change link"}
{"success":"Password has been changed"}
POST /reset-password
Used to reset password
POST /change-email
Used to change email
POST /change-password
Used to change password
Password requirements:
Do not use common sequences or your private details, add another word or two, consider using lowercase and uppercase and special symbols
- At least 8 characters in length
- At least a zxcvbn score 3
Parameters
Parameter | In | Type | Required | Description | Scope |
---|---|---|---|---|---|
body | [string] | true | reset-password, change-email, change-password | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) | change-email, change-password |
newpassword | body | [string] | true | new strong password (zxcvbn score >= 1) | change-password |
newemail | body | [string] | true | new email for password restore | change-email |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /reset-password
, /change-email
and /change-password
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Account Informaton
curl 'https://api.zinari.org/provide-business-details' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&business=forgingblock&url=https://forgingblock.io'
curl 'https://api.zinari.org/get-business-details' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce'
// Provide Business Information
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&business=forgingblock&url=https://forgingblock.io';
var options = {
url: 'https://api.zinari.org/provide-business-details',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Get Business Information
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=AeNu3miG7nahg';
var options = {
url: 'https://api.zinari.org/get-business-details',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Provide Business Information */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'business' => 'forgingblock',
'url' => 'https://forgingblock.io',
);
$response = Requests::post('https://api.zinari.org/provide-business-details', $headers, $data);
/* Get Business Information */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'AeNu3miG7nahg'
);
$response = Requests::post('https://api.zinari.org/get-business-details', $headers, $data);
// Provide Business Information
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&business=forgingblock&url=https://forgingblock.io}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/provide-business-details", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("DNT", "1")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Get Business Information
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=AeNu3miG7nahg}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/get-business-details", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{'success': "New business information received"}
{"business":"forgingblock3","url":"https://api.zinari.org"}
POST /provide-business-details
Provide information about business
POST /get-business-details
Get information about business
Parameters
Parameter | In | Type | Required | Description | Scope |
---|---|---|---|---|---|
body | [string] | true | provide-business-details, get-business-details | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) | provide-business-details, get-business-details |
business | body | [string] | true | business name | provide-business-details |
url | body | [string] | true | website information | provide-business-details |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /provide-business-details, get-business-details
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Backward compatibility with BitPay API
Backward compatibility allows invoicing and authorization in a similar way as BitPay API
POST /invoices
Creates an invoice for the calling merchant.
Fully compatible with BitPay API
GET /invoices
Retrieves invoices for the calling merchant filtered by query.
Fully compatible with BitPay API
POST /create-pairing
Used to create pairing code
curl 'https://api.zinari.org/create-pairing' -H 'Content-Type: application/x-www-form-urlencoded' --data 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F'
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var dataString = 'email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F';
var options = {
url: 'https://api.zinari.org/create-pairing',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce',
'store' => 'G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F'
);
$response = Requests::post('https://api.zinari.org/create-pairing', $headers, $data);
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{email=test%40zinaricoin.com&password=myhardpwdAeng2uabohce&store=G8j4C7tEAYVotK2XR6L12senoZLkYjXy1sNXsmGc9d6F}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/create-pairing", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"pairng":"2pqz9hz"}
POST /tokens
Used to receive API access using pairing
Parameters
For /tokens
Parameter | In | Type | Required | Description |
---|---|---|---|---|
guid | body | [string] | true | parameter to enforce idempotence for POST requests |
id | body | [string] | true | client id |
label | body | [string] | true | label for a client |
pairingCode | body | [string] | true | pairing code |
For /create-pairing
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
store | body | [string] | true | store id |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
OPTIONS /tokens
and /create-pairing
Response without content, but with supported methods
Status | Meaning | Description | Schema |
---|---|---|---|
204 | No Content | No Content | None |
Using API in client-side applications
Sometimes when security is reliable in some client-side, applications cookie authentication could be used.
The cookie is valid for 6 hours and it allows the avoidance providing email
and password
or trade
and token
continuously for certain API calls.
However store
param should be provided instead of trade
and token
All calls except /withdraw-ln
support cookie.
curl 'https://api.zinari.org/signin' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data '[email protected]&password=myhardpwdAeng2uabohce'
curl 'https://api.zinari.org/signout'
// Sign In
var request = require('request');
var headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
};
var dataString = '[email protected]&password=myhardpwdAeng2uabohce';
var options = {
url: 'https://api.zinari.org/signin',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
// Sign Out
var request = require('request');
var options = {
url: 'https://api.zinari.org/signout'
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
/* Sign In */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'
);
$data = array(
'email' => '[email protected]',
'password' => 'myhardpwdAeng2uabohce'
);
$response = Requests::post('https://api.zinari.org/signin', $headers, $data);
/* Sign Out */
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array();
$response = Requests::get('https://api.zinari.org/signout', $headers);
// Sign In
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
var data = []byte(`{[email protected]&password=myhardpwdAeng2uabohce}`)
req, err := http.NewRequest("POST", "https://api.zinari.org/signin", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
// Sign Out
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://api.zinari.org/signout", nil)
if err != nil {
log.Fatal(err)
}
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Response examples:
{"success":"Sign In success"}
{"success":"Sign Out success"}
POST /signin
Sets 6 hours long cookie
For testing purposes /test/login.html webpage could be used to login.
Cookie could be find under name __forgingblock
in cookie store
GET or POST /signout
Sets expired cookie
Parameters
For /signin
Parameter | In | Type | Required | Description |
---|---|---|---|---|
body | [string] | true | ||
password | body | [string] | true | strong password (zxcvbn score >= 1) |
Responses
Status | Meaning | Description | Schema |
---|---|---|---|
200 | OK | Request has succeeded | None |
400 | Bad Request | Malformed request syntax | None |
401 | Unauthorized | Authorization has been refused | None |
429 | Too Many Requests | Rate limiting: Too Many Requests | None |
422 | Unprocessable Entity | Unable to be processed | None |
Integrations
We provide several plugins for popular e-commerce software.
Supported e-commerce engines:
Integration with WooCommerce
- Install GMP extension for PHP (recommended)
- Download plugin
- In WordPress select
Plugin -> Add New -> Upload Plugin
and select zip archive - After Installation you could find plugin in
Plugins -> Installed Plugins -> Zinari Cryptocurrency Gateway WooCommerce
- In plugin settings near API Token, select
https://api.zinari.org
(MainNet) - Create pairing code using Dashboard, select
Accounts -> Plugins
- In case you are using API directly you could use Create pairing form instead
- Copy pairing code you received and click
Pair
- Thats it! Your users can pay using cryptocurrency now!
Integration with PrestaShop
- Download plugin
- In PrestaShop admin panel select
Modules -> Module Catalog -> Install a module
and upload zip archive - After Installation click
Configure
or you could find plugin inModules -> Module Manager -> forgingblock
and clickConfigure
- In plugin settings near
API URL
, selecthttps://api.zinari.org
(MainNet) - Create pairing code using Dashboard, select
Accounts -> Plugins
- In case you are using API directly you could use Create pairing form instead
- Copy pairing code you received and click
Pair
- Thats it! Your users can pay using cryptocurrency now!
Integration with OpenCart
- Download plugin
- In OpenCart admin panel select
Extensions -> Installer -> Upload File
and upload zip archive - After Installation select
Extensions -> Payments -> Zinari Cryptocurrency Gateway OpenCart
and clickEdit
button - In plugin settings near
Environment
, select Live (https://api.zinari.org
) or Test (https://api.zinari.org
) - Type in your trade agreement in
Trade ID
and token insideToken
(those details are provided to you after every new store creation in the response and inside email) - Click
Save
button - Thats it! Your users can pay using cryptocurrency now!
Integration with Zen Cart
- Download plugin
- Unzip archive inside zencart installation root folder and change rights on extracted files accordingly to your root folder owner (for ex.
chown -R /var/www/zencart/ www-data:www-data
) - After Installation go to
Modules -> Payment -> Zinari Cryptocurrency Gateway Zen Cart
inside Zen Cart Admin panel and clickEdit
button - In plugin settings near
Environment
, select Live (https://api.zinari.org
) or Test (https://api.zinari.org
) - In plugin settings near
Payment Zone
, select--none--
- Type in your trade agreement in
Trade ID
and token insideToken
(those details are provided to you after every new store creation in the response and inside email) - Click
Update
button - Thats it! Your users can pay using cryptocurrency now!
Integration with Magento 2
- Download plugin
- Unzip archive inside magento installation root folder and change rights on extracted files accordingly to your root folder owner (for ex.
chown -R /var/www/magento2/ www-data:www-data
) - Run set of the commands with
magento
binary (located inbin
folder inside magento installation root)magento module:enable Zinari_Payment --clear-static-content
magento setup:upgrade
magento setup:static-content:deploy -f
magento cache:clean
- After Installation go to
Stores -> Configuration -> Sales -> Payment Methods -> Zinari Cryptocurrency Gateway Magento
inside Magento Admin panel and click expand icon - In plugin settings near
Test Mode
, select No (https://api.zinari.org
) or Yes (https://api.zinari.org
) - Type in your trade agreement in
Trade ID
and token insideToken
(those details are provided to you after every new store creation in the response and inside email) - Click
Save Config
button - Thats it! Your users can pay using cryptocurrency now!
Integration with Drupal Commerce 2
- Download plugin
- In Drupal admin panel select
Extend -> Install new module -> Upload File
and upload zip archive - After Installation go to
Modules -> Payment -> Zinari Cryptocurrency Gateway Drupal Commerce
inside Zen Cart Admin panel and clickEdit
button - Go to
Commerce -> Configuration -> Payment Gateway -> Add payment gateway
and selectPlugin
as Zinari Payment - In plugin settings near
Environment
, select Live (https://api.zinari.org
) or Test (https://api.zinari.org
) - Type in your trade agreement in
Trade ID
and token insideToken
(those details are provided to you after every new store creation in the response and inside email) - Click
Save
button - Thats it! Your users can pay using cryptocurrency now!
Integration with osCommerce 2
- Download plugin
- Unzip archive inside osCommerce installation root folder (catalog) and change rights on extracted files accordingly to your root folder owner (for ex.
chown -R /var/www/oscommerce/ www-data:www-data
) - After Installation go to
Modules -> Payment -> Zinari Cryptocurrency Gateway osCommerce
inside OsCommerce panel and clickInstall Module
button - In plugin settings near
Environment
, select Live (https://api.zinari.org
) or Test (https://api.zinari.org
) Do you want to accept ForginBlock payments
selectTrue
- Type in your trade agreement in
Trade ID
and token insideToken
(those details are provided to you after every new store creation in the response and inside email) - Thats it! Your users can pay using cryptocurrency now!
Integration with Shopify
- Login into Dashboard and go to
Account -> Shopify Integration
- If you want to do it straight from the API check Shopify Integration endpoints
- Type in your Shopify Store Domail URL and click
Add Shopify Store
button - Login into Shopify Store Panel and go to
Settings -> Checkout -> Order processing -> Additional scripts
- Copy and save text with a newly generated code into Additional scripts
- You are done, however if you forget your code you could always click
View Code
button in dashboard near your Shopify Store Domain URL- Also, if you have more Shopify Stores, or run your Shopify Store on different domains, you could just add more domain URLs using same
Add Shopify Store
button, and the code would be the same. - If you changed your Shopify Store URL, you should add a new one and remove the old one using the
Delete
button.
- Also, if you have more Shopify Stores, or run your Shopify Store on different domains, you could just add more domain URLs using same