La API de Wispro es una API REST JSON con operaciones GET, PUT, POST, DELETE.
Cada endpoint puede presentar endpoints que permiten una o más de las operaciones CRUD:
Create
Read
Update
Delete
Ejemplos de aplicación
- Aprovisionamiento de pagos desde sistemas de facturación externos.
- Cambio del estado de Contrato.
- Aprovisionamiento de Contratos.
- Gestión de Clientes desde sistemas externos.
- Desarrollos propios que impliquen modificaciones o consultas de los modelos expuestos en la API de Wispro.
Respuestas con error
Si bien en ésta documentación en los ejemplos de respuestas se mostraran con códigos de respuestas como 401, 404, etc. La API siempre que pueda responder algo responderá con código 200 y en el cuerpo del mensaje de respuesta se obtendrá el código de estado de la acción.
200 (400)
{
"status": 400,
"meta": {},
"message": "Invalid record", // wrong params
"errors": {
"name": "taken"
}
}
200 (401)
{
"status": 401,
"meta": {},
"message": "Unauthorized", // bad Authorization header
"errors": {}
}
200 (402)
{
"status": 402,
"meta": {},
"message": "Payment Required", // License expired
"errors": {}
}
200 (404)
{
"status": 404,
"meta": {},
"message": "Record not found",
"errors": {}
}
200 (412)
{
"status": 412,
"meta": {},
"message": "Can not be applied", // Apply changes action error
"errors": {}
}
200 (500)
{
"status": 500,
"meta": {},
"message": "Server error", // Error in the backend endpoint
"errors": {}
}
Si está empezando como proveedor de internet le recomendamos el artículo:
Paginación y parámetros extra
Paginación
Cuando pedimos una colección de objetos, los resultados serán paginados.
La información de paginación estará presente siempre en response['meta']['pagination']
y contará de 4 valores:
total_records: total de registros encontrados
total_pages: la cantidad total de páginas necesarias para mostrar todos los registros
per_page: la cantidad de objetos que se muestran por página,
current_page: la página actual
JSON
{
"status": 200,
"meta": {
"object": "plan",
"pagination": {
"total_records": 3,
"total_pages": 1,
"per_page": 20,
"current_page": 1
}
},
"data": [...resultados...]
Para manejar la paginación podrá enviar como parámetros en la url:
page: Indicando el número de pagina que desea ver. [Por defecto: 1]
per_page: Indicando la cantidad de resultados por página [Valor máximo: 100, por defecto: 20]
cURL
curl --request GET \
--url https://www.cloud.wispro.co/api/v1/plans?page=3&per_page=100 \
--header 'Accept: application/json' \
--header 'Authorization: 5367aa2c-c117-4447-a657-00ca13894275'
Ruby
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://www.cloud.wispro.co/api/v1/plans?page=3&per_page=50")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["Authorization"] = '5367aa2c-c117-4447-a657-00ca13894275'
response = http.request(request)
puts response.read_body
Resultado JSON
{
"status": 200,
"meta": {
"object": "plan",
"pagination": {
"total_records": 399,
"total_pages": 4,
"per_page": 100,
"current_page": 3
}
},
"data": [...resultados...]
}
Idioma
En caso de tratar de crear, actualizar y borrar objetos y obtener errores, estos errores los podemos obtener localizados con el parámetro locale [Valores: es, en, pt, Defecto: es ]
cURL
curl --request DELETE \
--url https://www.cloud.wispro.co/api/v1/plans/382b4120-f124-4f33-8bad-0e6c767e88bc?locale=es \
--header 'Accept: application/json' \
--header 'Authorization: 5367aa2c-c117-4447-a657-00ca13894275'
JSON
{
"status": 400,
"meta": {},
"message": "Invalid record",
"errors": {
"name": ["Este plan aún tiene 3 contratos asignados y no puede ser borrado; elimine los contratos o cámbielos de plan intente nuevamente"]
}
}
Zona horaria
Todas las fechas (con hora) serán devueltas respetando la zona horaria del ISP en formato ISO8601.
Por ej: 2019-11-08T08:00:11.919-05:00
Filtros
Es posible filtrar los resultados enviando parámetros de búsqueda Los parámetros aceptados actualmente son los listados en cada endpoint y pueden usarse uno o más combinados al mismo tiempo.
Por ejemplo en el caso de los clientes se puede usar los siguientes parámetros para listar solo los clientes con nombre “cristina” y creados después del 8 de noviembre de 2019
cURL
curl --request GET \
--url https://cloud.wispro.co/api/v1/clients?name_unaccent_cont=cristina&created_at_after=2019-11-08T08:00:11.919-05:00 \
--header 'Accept: application/json' \
--header 'Authorization: 5367aa2c-c117-4447-a657-00ca13894275'
Ruby
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://www.cloud.wispro.co/api/v1/plans/382b4120-f124-4f33-8bad-0e6c767e88bc")
params = {
name_unaccent_cont: 'cristina',
created_at_after: '2019-11-08T08:00:11.919-05:00'
}
url.query = URI.encode_www_form(params)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Accept"] = 'application/json'
request["Authorization"] = '5367aa2c-c117-4447-a657-00ca13894275'
response = http.request(request)
puts response.read_body
Operaciones CRUD
Encuentre las siguientes operaciones en lenguajes cURL, Node, Ruby, PHP y Phyton:
CLIENTES [CRUD]
PLANES [CRUD]
CONTRATOS [CRUD]
FACTURACION – FACTURAS [CR]
FACTURACION – NOTAS DE CREDITO [CR]
FACTURACION – PROMESAS DE PAGO [CR]
FACTURACION – PAGOS [R]
FACTURACION – CLIENTE PASARELA DE PAGO [R]
FACTURACION – CUENTA CORRIENTE [R]
SERVIDORES – MIKROTIKS [RUD]
SERVIDORES – BMUS [RUD]
MESA DE AYUDA – ISSUES [CRU]
Pruebe gratis nuestro potente software para Proveedores de Internet.