pindo-cli 0.2.1

Creator: bigcodingguy24

Last updated:

Add to Cart

Description:

pindocli 0.2.1

pindo-cli



Installation
Install from PyPi using pip, a package manager for Python.
pip install pindo-cli
Don't have pip installed? Try installing it, by running this from the command line:
$ curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
python setup.py install
You may need to run the above commands with sudo.
Getting Started
Once you have installed Pindo CLI you're ready to go.
pindo --help

Usage: pindo [OPTIONS] COMMAND [ARGS]...

Pindo CLI

A simple Command Line Interface that allows you to authenticate with the Pindo API

https://www.pindo.io

Options:
--debug / --no-debug
-v, --version Show the version and exit.
--help Show this message and exit.

Commands:
balance Get account balance
org Organization
refresh-token Refresh a Token.
register Create a new Pindo account.
sms Send a test message
token Request a token for using Pindo API.


Send a test message

pindo sms --help

Usage: pindo sms [OPTIONS]

Send a test message

Options:
--token TEXT API Token
--to TEXT Receiver phone number (+250xxxxxx)
--text TEXT Message to send
--sender TEXT Sender name
--help Show this message and exit.

API Response Code



Code
Text
Meaning




201
sent
Successfully sent


401
unauthorized
unauthorized access


404
not found
invalid resource URI


409
conflict
number is from unsupported country


409
conflict
number is from unsupported telco


409
conflict
Wrong phone number format




An example of a successfully sent SMS.

{
"count": 1,
"remaining_balance": 3.11,
"sms_id":"1058918",
"self_url": "https://api.pindo.io/v1/sms/1058918",
"sms_items": [
{
"id": 1062502,
"item_price": 0.01,
"network": "63510",
"remaining_balance": 3.11,
"status": "sent",
"to": "+250785000000"
}
]
}


Pindo Webhook Event example POST methods

{
"status": "DELIVRD",
"sms_id": 1058918,
"modified_at": "24-07-2020, 23:35:32",
"retries_count": 0
}

SMS API Usage
The pindo api needs your Token. You can either pass the token directly to the constructor (see the code below) or via environment variables.
# cURL

curl -X POST \
https://api.pindo.io/v1/sms/ \
-H 'Accept: */*' \
-H 'Authorization: Bearer your-token' \
-H 'Content-Type: application/json' \
-d '{
"to" : "+250781234567",
"text" : "Hello from Pindo",
"sender" : "Pindo"
}'

# python

import requests

token='your-token'
headers = {'Authorization': 'Bearer ' + token}
data = {'to' : '+250781234567', 'text' : 'Hello from Pindo', 'sender' : 'Pindo'}

url = 'https://api.pindo.io/v1/sms/'
response = requests.post(url, json=data, headers=headers)
print(response)
print(response.json())

// NodeJS

var request = require("request");
data = { to: "+250781234567", text: "Hello from Pindo", sender: "Pindo" };

var options = {
method: "POST",
body: data,
json: true,
url: "https://api.pindo.io/v1/sms/",
headers: {
Authorization: "Bearer your-token"
}
};

function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
//call the request

request(options, callback);

// Java

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{"to" : "+250781234567", "text" : "Hello from Pindo","sender" : "Pindo"}");
Request request = new Request.Builder()
.url("https://api.pindo.io/v1/sms/")
.post(body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer your-token")
.build();
Response response = client.newCall(request).execute();

// PHP

$request = new HttpRequest();
$request->setUrl('https://api.pindo.io/v1/sms/');
$request->setMethod(HTTP_METH_POST);

$request->setHeaders(array(
'Authorization' => 'Bearer your-token',
'Content-Type' => 'application/json'
));

$request->setBody('{
"to" : "+250781234567",
"text" : "Hello from Pindo",
"sender" : "Pindo"
}');

try {
$response = $request->send();

echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}

// cURL

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pindo.io/v1/sms/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"{\n\t\"to\" : \"+250781234567\",\n\t\"text\" : \"Test SMS.\",\n\t\"sender\" : \"Pindo\"\n}",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer token",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

// GO

package main

import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)

func main() {

url := "https://api.pindo.io/v1/sms/"

payload := strings.NewReader("{"to" : "+250781234567", "text" : "Hello from Pindo","sender" : "Pindo"}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer your-token")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

fmt.Println(res)
fmt.Println(string(body))

}

// C#

var client = new RestClient("https://api.pindo.io/v1/sms/");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer your-token");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", "{\n\t\"to\" : \"+250781234567\", \n\t\"text\" : \"Hello from Pindo\",\n\t\"sender\" : \"Pindo\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

# ruby

require 'net/http'
require 'json'
require 'uri'

data = { to: '+250781234567', text: 'Hello from Pindo', sender: 'Pindo' };

uri = URI('https://api.pindo.io/v1/sms/')
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri)
req['Authorization'] = 'Bearer your-token'
req['Content-Type'] = 'application/json'
req.body = data.to_json
http.request(req)

// Dart

import 'dart:convert';
import 'package:http/http.dart' as http;

Future main() async {
String url = 'https://api.pindo.io/v1/sms/';
Map<String, String> data = {
'to': '+250781234567',
'text': 'Hello from Pindo',
'sender': 'Pindo'
};

Map<String, String> headers = {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
};

http.Response response = await http.post(
url,
body: jsonEncode(data),
headers: headers,
);
print(response.statusCode);
print(jsonDecode(response.body));
}

Verify API Usage
PindoVerfiy API lets you send a PIN to a user's phone and validate that they received it. PindoVerfiy can be used for a number of authentication and anti-fraud purposes, such as 2-factor authentication, password-less sign-in, and validating users’ phone numbers.

An example of a successfully generated PIN.

{
"message": "success",
"network": "63510",
"remaining_balance": 487.49,
"request_id": 4
}


An example of a successfully verified PIN.

{
"message": "success",
"remaining_balance": 487.49,
"request_id": 4
}


Generate a PIN.

# python

import requests
import json

url = "https://api.pindo.io/v1/verify"

payload = json.dumps({
"brand": "Pindo",
"number": "+250781234567"
})
headers = {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.json())

// NodeJS

var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.pindo.io/v1/verify',
'headers': {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"brand": "Pindo",
"number": "+250781234567"
})

};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});

// Java

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"brand\":\"Pindo\",\n \"number\":\"+250781234567\"\n}\n");
Request request = new Request.Builder()
.url("https://api.pindo.io/v1/verify")
.method("POST", body)
.addHeader("Authorization", "Bearer your-token")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();

// PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.pindo.io/v1/verify',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"brand":"Pindo",
"number":"+250781234567"
}
',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer your-token',
'Content-Type: application/json'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


Verify a PIN

// NodeJS

var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.pindo.io/v1/verify/check',
'headers': {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"code": "752623",
"request_id": 4
})

};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});


Check PIN status

// NodeJS

var request = require('request');
var options = {
'method': 'GET',
'url': 'https://api.pindo.io/v1/verify/status/:request_id',
'headers': {
'Authorization': 'Bearer your-token'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});


Cancel a PIN

// NodeJS

var request = require('request');
var options = {
'method': 'PUT',
'url': 'https://api.pindo.io/v1/verify/cancel/:request_id',
'headers': {
'Authorization': 'Bearer your-token'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.