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

Api-reference-Wispro-ejemplo-plans
Ejemplo lista de planes

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]

Documentación completa

Pruebe gratis nuestro potente software para Proveedores de Internet.

Si necesita ayuda con esta guía, por favor contáctese al chat de soporte online seleccionando el área de asistencia.