Introducción¶
Aquí encontrará la descripción de la API VoIPstudio, que da acceso a todos los recursos de la plataforma.
General¶
La API REST permite a los clientes de VoIPstudio acceder gran parte de los recursos. Nuestra API tiene predicción de URL, orientadas a recursos y utiliza códigos de respuesta HTTP para indicar errores de API. Utilizamos funciones HTTP integradas los HTTP verbs, que son entendidos por los clientes HTTP disponibles en el mercado. Admitimos el intercambio de recursos de origen cruzado(cross-origin resource sharing), lo que le permite interactuar de forma segura con nuestra API desde una aplicación web del lado del cliente. Todas las respuestas de la API son devueltas en JSON, incluidos los errores.
Endpoints¶
La URL base para la API es:
https://l7api.com/v1.2/voipstudio/
Autenticación¶
La comunicación entre la aplicación de cliente y la API de VoIPstudio es segura gracias a HTTP basic authentication sobre SSL.
Antes de poder mandar peticiones a la API de VoIPstudio es necesario obtener la API Key
o user_token
que será utilizado para autenticar las peticiones.
Puede generar API Key
/ user_token
de las dos maneras siguientes:
- Envíe una solicitud POST al punto final
/login
con el correo electrónico y la contraseña como credenciales. - Utilice el panel de administrador de VoIPstudio para crear API Key /
user_token
.
Consulte las instrucciones detalladas a continuación:
E-mail y Contraseña¶
Solicitud de acceso usando email y contraseña:
curl -X POST -H "Content-Type: application/json" \
https://l7api.com/v1.2/voipstudio/login \
-d '{"email":"jsmith@example.com","password":"$ecretPas$$"}'
Solicitud de ejemplo:
POST /v1.2/voipstudio/login HTTP/1.1
Host: l7api.com
Content-Type: application/json
{"email":"jsmith@example.com","password":"$ecretPas$$"}
Ejemplo de respuesta exitosa:
{
"message":"Login success",
"user_token":"123456abc993ba5dd8a0e7ce9876543",
"user_id":123456
}
Por defecto el user_token
expirará a los 30 minutos de inactividad. Cada vez que se hace una peticón a la API el contador se reinicia.
Si requiere un tiempo de expiración mayor, una vez obtenido el user_token
inicial con la llamada API POST /login
, puede crear nuevas calves API con la llamada POST /apitokens
:
curl -X POST -H "Content-Type: application/json" \
-H "X-Auth-Token: 123456abc993ba5dd8a0e7ce9876543" \
https://l7api.com/v1.2/voipstudio/apitokens \
-d '{"name":"Example API App","expiry":604800}'
Ejemplo de respuesta exitosa:
{
"data":{
"user_id":123456,
"token":"9843211cb48787655cddb080ebdabced",
"customer_id":521156,
"name":"Example API App",
"host":"8.8.8.8",
"user_agent":"curl/7.58.0",
"expiry":604800,
"last_request_at":null,
"created_at":"2023-02-09 17:20:01"
},
"links":{}
}
Nota: para crear claves API que no expiren utilice "expiry":0
en el payload del POST /apitokens
Obtener claves API desde el panel de administración web¶
Siga los pasos que se indican a continuación para añadir una clave API a un usuario:
- En el panel de administración, edite el usuario para el que desea añadir claves de API.
- Vaya a la sección
API Keys
. - Introduzca un nombre para su API Key, puede ser cualquier cosa que desee. Por ejemplo, el nombre de la aplicación que utilizará esta Clave API.
- Haga clic en el botón "Añadir".
- Haga clic en el icono "Ojo" para recuperar la clave de API /
user_token
. - Haga clic en el icono "Engranaje" y seleccione "Mostrar detalles" para obtener detalles adicionales o eliminar la clave de API.
Comunicación¶
Se espera que las solicitudes entrantes gestionadas por nuestra API tengan un encabezado X-Auth-Token
con un valor user_token
(clave de API) devuelto por una respuesta POST /login
o POST /apitokens
correcta.
X-Auth-Token: TOKEN
Example of authenticated request:
curl -H "Content-Type: application/json"
-H "X-Auth-Token: 123abc45678def3234sdfgdf3434df3444" \
https://l7api.com/v1.2/voipstudio/cdrs
HTTP responses¶
VoIPstudio REST API usa códigos de respuesta HTTP convencionales para indicar el éxito o el fracaso de una solicitud de API. En general, los códigos en el rango 2xx indican éxito, los códigos en el rango 4xx indican un error que ha fallado dada la información proporcionada (por ejemplo, se omitió un parámetro requerido, etc.) y los códigos en el rango 5xx indican un error del servidor.
Cada respuesta exitosa, según el método HTTP, contiene las siguientes propiedades:
-
GET collection of resources:
data
- an array of resources datatotal
- total number of resources
-
GET single resource:
data
- resources datalinks
- links to related resources
Cada respuesta de error contiene las siguientes propiedades:
* `message` - mensaje de error genérico
* `errors` - array of error messages
Páginador¶
Para puntos finales de recopilación de datos, como GET https://l7api.com/v1.2/voipstudio/cdrs
el buscador se puede utilizar para devolver un número específico de registros de una página determinada en el conjunto de datos. Para aplicar el buscador, añada los siguientes parámetros a la URL ?page=N&limit=Z
donde N
es el numero de página y Z
el número de entradas a devolver(máximo 5000).
Filtros¶
Para filtrar los datos, el parámetro filter
se puede pasar como una cadena en la query URL. El valor del parámetro filter
debe ser cadena codificada JSON en el formato que se muestra a continuación:
[
{"property":"_PROPERTY_NAME_","operator":"_OPERATOR_","value":"_SEARCH_VALUE_"},
{"property":"_PROPERTY_NAME_","operator":"_OPERATOR_","value":"_SEARCH_VALUE_"}
...
]
Los tokens anterionres _PROPERTY_NAME_
, _OPERATOR_
y _VALUE_TO_SEARCH_
se deben interpretar como se muestra:
-
_PROPERTY_NAME_
puede ser cualquier propiedad del objeto. Consulte la sección "Recursos" a continuación para obtener una explicación detallada del modelo de datos para cada punto final. -
_OPERATOR_
puede ser::eq
o=
al buscar registros con valor de "propiedad" igual a_SEARCH_VALUE_
ne
,neq
,<>
o!=
al buscar registros con valor de "propiedad" NO igual a_SEARCH_VALUE_
lt
o<
al buscar registros con valor de "propiedad" inferior a_SEARCH_VALUE_
._SEARCH_VALUE_
lte
o<=
cuando se buscan registros con valor de "propiedad" inferior o igual._SEARCH_VALUE_
gt
o>
al buscar registros con valor de "propiedad" mayor que._SEARCH_VALUE_
gte
o>=
al buscar registros con valor de "propiedad" mayor o igual._SEARCH_VALUE_
in
al buscar registros con valor de "propiedad" incluida en_SEARCH_VALUE_
(Nota: el valor de búsqueda debe pasarse como una matriz, por ejemplo:["foo", "bar" ]
)like
al buscar registros con valor de "propiedad" patrón de coincidencia de_SEARCH_VALUE_
notlike
cuando se buscan registros cuyo valor de "propiedad" NO coincide con el patrón de_SEARCH_VALUE_
-
_SEARCH_VALUE_
el valor que desea buscar
Ejemplo de solicitud al punto final /cdrs
en busca de llamadas entrantes (la propiedad dst_id
es igual al Id de usuario) al Id de usuario 123456
después del 1 de septiembre de 2018:
curl -H "X-Auth-Tokeb: TOKEN" -H "Content-Type: application/json"
'https://l7api.com/v1.2/voipstudio/cdrs?filter=[
{"property":"dst_id","operator":"eq","value":"123456"},
{"property":"calldate","operator":"gt","value":"2018-09-01 00:00:00"}
]'
Agrupar entradas¶
El parámetro group_by
está disponible para agrupar registros por propiedad específica : `GET https://l7api.com/v1.2/voipstudio/cdrs?group_by=src
. Este parámetro se debe pasar como cadena en la query URL.