API Admin
La API Admin está diseñada para técnicos y clientes que quieran gestionar subcuentas.
Las funcionalidades de la API Admin son:
- La creación y alta de subcuentas.
- Modificación del saldo de créditos de subcuentas.
- Habilitar, deshabilitar y eliminar subcuentas.
Para iniciar una integración con la API Admin son imprescindibles los siguientes requisitos:
- Una cuenta de LabsMobile asociada con un nombre de usuario (correo electrónico de registro). Crea una cuenta aquí.
- Token API utilizado como contraseña y generado desde la sección Configuración API de tu cuenta.
- URL del endpoint de la API Admin y los valores de los parámetros para realizar las peticiones.
Colección Postman API Admin
Descargar
A tener en cuenta
La API Admin de LabsMobile utiliza parámetros HTTP POST en formato XML y una URL base común para todas las peticiones: https://api.labsmobile.com/admin/
Autenticación
El método de autenticación utilizado en cualquier petición de la API Admin es Basic Auth HTTP.
Este tipo de autenticación consta de unas credenciales username:tokenapi que se incluyen en el encabezado de la petición HTTP codificado en base64().
Ejemplo de valor de encabezado de autenticación:Authorization: Basic 9yewaXic21vYmlsZqS5jmSk04enFTbUU=
Recomendación Se pueden generar tokens API desde la Configuración API de la cuenta. Recomendamos cambiar el token frecuentemente y utilizar diferentes tokens para cada uso, conexión o integración.
Crear cuenta
Este comando permite crear una subcuenta.
La subcuenta creada estará controlada por la cuenta administradora que ejecuta esta función y se podrá modificar el estado y saldo de créditos a través de las funciones de esta API.
ENDPOINT
POST https://api.labsmobile.com/admin/cmd/cmd_createaccount.php
PARÁMETROS
Los parámetros o datos se envían en una variable http/POST con nombre
XmlDatacon el elemento raízcmdy los demás elementos que se describen a continuación:login email obligatorio
Nombre de usuario de la nueva cuenta. Este nombre de usuario se podrá utilizar para acceder a la aplicación WebSMS o API.
pwd contraseña obligatorio
Contraseña de la nueva cuenta.
<?xml version="1.0" encoding="UTF-8"?> <cmd> <login>newaccount@test.com</login> <pwd>hteRW42w</pwd> </cmd>
RESULTADO
El resultado de cualquier petición API SMS http/POST se obtiene en formato
XMLcon el elemento raíz<response>y con los siguientes elementos hijos:code integer
Código identificador que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<code>0</code>message string
Descripción que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<message>Parameter login not found in XML</message>
<?xml version="1.0" encoding="UTF-8"?> <response> <code>0</code> <message>Command has been successfully processed</message> </response> </cmd>
curl --user myUsername:myToken -X POST \
https://api.labsmobile.com/admin/cmd/cmd_createaccount.php \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>'
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.labsmobile.com/admin/cmd/cmd_createaccount.php");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
curl_easy_setopt(curl, CURLOPT_USERNAME, "myUsername");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "myToken");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char *data = 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>';
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
return 0;
}
using System;
using RestSharp;
namespace CreateAccount
{
class Program
{
static void MainSend(string[] args)
{
var client = new RestClient("https://api.labsmobile.com");
var request = new RestRequest("/admin/cmd/cmd_createaccount.php", Method.Post);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Authorization", "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("myUsername" + ":" + "myToken")));
var body = @"XmlData=<?xml version=""1.0"" encoding=""UTF-8""?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>";
request.AddParameter("application/x-www-form-urlencoded", body, ParameterType.RequestBody);
RestResponse response = client.Execute(request);
if (response.ErrorException != null)
{
Console.WriteLine("Error: " + response.ErrorException.Message);
}
else
{
Console.WriteLine("Response content: " + response.Content);
}
}
}
}
package com.example;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class App {
public static void main(String[] args) throws UnirestException {
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://api.labsmobile.com/admin/cmd/cmd_createaccount.php")
.header("Content-Type", "application/x-www-form-urlencoded")
.basicAuth("myUsername", "myToken")
.body("XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>")
.asString();
System.out.println("Status code: " + response.getBody());
}
}
<?php
$curl = curl_init();
$xmlData = '<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>';
$postFields = 'XmlData=' . $xmlData;
$auth_basic = base64_encode("myUsername:myToken");
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.labsmobile.com/admin/cmd/cmd_createaccount.php',
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 => $postFields,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/x-www-form-urlencoded',
'Authorization: Basic '. $auth_basic
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests, base64, json
userToken = "myUsername:myToken"
credentials = (base64.b64encode(userToken.encode()).decode())
url = "https://api.labsmobile.com/admin/cmd/cmd_createaccount.php"
payload = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>"headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic %s' % credentials,
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
const axios = require('axios');
let data = 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>';
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.labsmobile.com/admin/cmd/cmd_createaccount.php',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from("myUsername:myToken").toString('base64')
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
require "uri"
require 'base64'
require "net/http"
url = URI("https://api.labsmobile.com/admin/cmd/cmd_createaccount.php")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request["Authorization"] = "Basic " + Base64.strict_encode64("myUsername:myToken")
request.body = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><pwd>hteRW42w</pwd></cmd>"
response = https.request(request)
puts response.read_body
Modificar saldo
Este comando permite añadir o restar créditos al saldo una subcuenta existente y controlada por la cuenta administradora que ejecuta esta llamada.
ENDPOINT
POST https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php
PARÁMETROS
Los parámetros o datos se envían en una variable http/POST con nombre
XmlDatacon el elemento raízcmdy los demás elementos que se describen a continuación:login string obligatorio
Nombre de usuario de la cuenta a la que se quieren modificar los créditos.
messages float obligatorio
Número de créditos a sumar o restar a la cuenta.
<?xml version="1.0" encoding="UTF-8"?> <cmd> <login>newaccount@test.com</login> <messages>30</messages> </cmd>
RESULTADO
El resultado de cualquier petición API SMS http/POST se obtiene en formato
XMLcon el elemento raíz<response>y con los siguientes elementos hijos:code integer
Código identificador que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<code>0</code>message string
Descripción que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<message>Command has been successfully processed</message>
<?xml version="1.0" encoding="UTF-8"?> <response> <code>148</code> <message>Not enough credits to perform the adding command</message> </response> </cmd>
curl --user myUsername:myToken -X POST \
https://api.labsmobile.com/admin/cmd/cmd_addbalance.php \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>'
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.labsmobile.com/admin/cmd/cmd_addbalance.php");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
curl_easy_setopt(curl, CURLOPT_USERNAME, "myUsername");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "myToken");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char *data = 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>';
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
return 0;
}
using System;
using RestSharp;
namespace AddBalance
{
class Program
{
static void MainSend(string[] args)
{
var client = new RestClient("https://api.labsmobile.com");
var request = new RestRequest("/admin/cmd/cmd_addbalance.php", Method.Post);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Authorization", "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("myUsername" + ":" + "myToken")));
var body = @"XmlData=<?xml version=""1.0"" encoding=""UTF-8""?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>";
request.AddParameter("application/x-www-form-urlencoded", body, ParameterType.RequestBody);
RestResponse response = client.Execute(request);
if (response.ErrorException != null)
{
Console.WriteLine("Error: " + response.ErrorException.Message);
}
else
{
Console.WriteLine("Response content: " + response.Content);
}
}
}
}
package com.example;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class App {
public static void main(String[] args) throws UnirestException {
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://api.labsmobile.com/admin/cmd/cmd_addbalance.php")
.header("Content-Type", "application/x-www-form-urlencoded")
.basicAuth("myUsername", "myToken")
.body("XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>")
.asString();
System.out.println("Status code: " + response.getBody());
}
}
<?php
$curl = curl_init();
$xmlData = '<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>';
$postFields = 'XmlData=' . $xmlData;
$auth_basic = base64_encode("myUsername:myToken");
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.labsmobile.com/admin/cmd/cmd_addbalance.php',
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 => $postFields,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/x-www-form-urlencoded',
'Authorization: Basic '. $auth_basic
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests, base64, json
userToken = "myUsername:myToken"
credentials = (base64.b64encode(userToken.encode()).decode())
url = "https://api.labsmobile.com/admin/cmd/cmd_addbalance.php"
payload =
payload = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>"
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic %s' % credentials,
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
const axios = require('axios');
let data = 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>';
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.labsmobile.com/admin/cmd/cmd_addbalance.php',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from("myUsername:myToken").toString('base64')
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
require "uri"
require 'base64'
require "net/http"
url = URI("https://api.labsmobile.com/admin/cmd/cmd_addbalance.php")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request["Authorization"] = "Basic " + Base64.strict_encode64("myUsername:myToken")
request.body = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><messages>30</messages></cmd>"
response = https.request(request)
puts response.read_body
Modificar cuenta
Este comando permite modificar el estado de subcuenta existente y controlada por la cuenta administradora que ejecuta esta llamada.
ENDPOINT
POST https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php
PARÁMETROS
Los parámetros o datos se envían en una variable http/POST con nombre
XmlDatacon el elemento raízcmdy los demás elementos que se describen a continuación:login string obligatorio
Nombre de usuario de la cuenta a la que se quiere modificar el estado.
status 0 | 1 | 2 obligatorio
Estado al que se quiere modificar la cuenta.
Valores de estado0Deshabilitar cuenta 1Habilitar cuenta 2Eliminar cuenta
<?xml version="1.0" encoding="UTF-8"?> <cmd> <login>newaccount@test.com</login> <status>0</status> </cmd>
RESULTADO
El resultado de cualquier petición API SMS http/POST se obtiene en formato
XMLcon el elemento raíz<response>y con los siguientes elementos hijos:code integer
Código identificador que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<code>0</code>message string
Descripción que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<message>Command has been successfully processed</message>
<?xml version="1.0" encoding="UTF-8"?> <response> <code>147</code> <message>Trying to update a non-existing account</message> </response> </cmd>
curl --user myUsername:myToken -X POST \
https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><status>0</status></cmd>'
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
curl_easy_setopt(curl, CURLOPT_USERNAME, "myUsername");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "myToken");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char *data = '<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com<</login><status>0</status></cmd>';
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
return 0;
}
using System;
using RestSharp;
namespace Status
{
class Program
{
static void MainSend(string[] args)
{
var client = new RestClient("https://api.labsmobile.com");
var request = new RestRequest("/admin/cmd/cmd_statusaccount.php", Method.Post);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Authorization", "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("myUsername" + ":" + "myToken")));
var body = @"XmlData=<?xml version=""1.0"" encoding=""UTF-8""?><cmd><login>newaccount@test.com</login><status>0</status></cmd>";
request.AddParameter("application/x-www-form-urlencoded", body, ParameterType.RequestBody);
RestResponse response = client.Execute(request);
if (response.ErrorException != null)
{
Console.WriteLine("Error: " + response.ErrorException.Message);
}
else
{
Console.WriteLine("Response content: " + response.Content);
}
}
}
}
package com.example;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class App {
public static void main(String[] args) throws UnirestException {
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php")
.header("Content-Type", "application/x-www-form-urlencoded")
.basicAuth("myUsername", "myToken")
.body("XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><status>0</status></cmd>")
.body()
.asString();
System.out.println("Status code: " + response.getBody());
}
}
<?php
$curl = curl_init();
$xmlData = '<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com<</login><status>0</status></cmd>';
$postFields = 'XmlData=' . $xmlData;
$auth_basic = base64_encode("myUsername:myToken");
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php',
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 => $postFields,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/x-www-form-urlencoded',
'Authorization: Basic '. $auth_basic
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests, base64, json
userToken = "myUsername:myToken"
credentials = (base64.b64encode(userToken.encode()).decode())
url = "https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php"
payload = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><status>0</status></cmd>"headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic %s' % credentials,
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
const axios = require('axios');
let data = 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><status>0</status></cmd>';
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from("myUsername:myToken").toString('base64')
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
require "uri"
require 'base64'
require "net/http"
url = URI("https://api.labsmobile.com/admin/cmd/cmd_statusaccount.php")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request["Authorization"] = "Basic " + Base64.strict_encode64("myUsername:myToken")
request.body = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><status>0</status></cmd>"
response = https.request(request)
puts response.read_body
Modificar contraseña
Este comando permite modificar la contraseña de la subcuenta existente y controlada por la cuenta administradora que ejecuta esta llamada.
ENDPOINT
POST https://api.labsmobile.com/admin/cmd/cmd_changepassword.php
PARÁMETROS
Los parámetros o datos se envían en una variable http/POST con nombre
XmlDatacon el elemento raízcmdy los demás elementos que se describen a continuación:login string obligatorio
Nombre de usuario de la cuenta a la que se quiere modificar el estado.
pwd contraseña obligatorio
Nueva contraseña de la subcuenta existente.
<?xml version="1.0" encoding="UTF-8"?> <cmd> <login>newaccount@test.com</login> <pwd>Hr3sd</pwd> </cmd>
RESULTADO
El resultado de cualquier petición API SMS http/POST se obtiene en formato
XMLcon el elemento raíz<response>y con los siguientes elementos hijos:code integer
Código identificador que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<code>0</code>message string
Descripción que indica si se ha podido procesar la petición de forma exitosa o si se ha producido un error. Posibles valores en la el apartado Errores.
Ejemplo:
<message>Command has been successfully processed</message>
<?xml version="1.0" encoding="UTF-8"?> <response> <code>147</code> <message>Trying to update a non-existing account</message> </response> </cmd>
curl --user myUsername:myToken -X POST \
https://api.labsmobile.com/admin/cmd/cmd_changepassword.php \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><pwd>Hr3sd</pwd></cmd>'
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(curl, CURLOPT_URL, "https://api.labsmobile.com/admin/cmd/cmd_changepassword.php");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
curl_easy_setopt(curl, CURLOPT_USERNAME, "myUsername");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "myToken");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
const char *data = '<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com<</login><pwd>Hr3sd</pwd></cmd>';
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
curl_easy_cleanup(curl);
}
return 0;
}
using System;
using RestSharp;
namespace Status
{
class Program
{
static void MainSend(string[] args)
{
var client = new RestClient("https://api.labsmobile.com");
var request = new RestRequest("/admin/cmd/cmd_changepassword.php", Method.Post);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddHeader("Authorization", "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("myUsername" + ":" + "myToken")));
var body = @"XmlData=<?xml version=""1.0"" encoding=""UTF-8""?><cmd><login>newaccount@test.com</login><pwd>Hr3sd</pwd></cmd>";
request.AddParameter("application/x-www-form-urlencoded", body, ParameterType.RequestBody);
RestResponse response = client.Execute(request);
if (response.ErrorException != null)
{
Console.WriteLine("Error: " + response.ErrorException.Message);
}
else
{
Console.WriteLine("Response content: " + response.Content);
}
}
}
}
package com.example;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class App {
public static void main(String[] args) throws UnirestException {
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://api.labsmobile.com/admin/cmd/cmd_changepassword.php")
.header("Content-Type", "application/x-www-form-urlencoded")
.basicAuth("myUsername", "myToken")
.body("XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><pwd>Hr3sd</pwd></cmd>")
.body()
.asString();
System.out.println("Status code: " + response.getBody());
}
}
<?php
$curl = curl_init();
$xmlData = '<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com<</login><pwd>Hr3sd</pwd></cmd>';
$postFields = 'XmlData=' . $xmlData;
$auth_basic = base64_encode("myUsername:myToken");
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.labsmobile.com/admin/cmd/cmd_changepassword.php',
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 => $postFields,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/x-www-form-urlencoded',
'Authorization: Basic '. $auth_basic
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests, base64, json
userToken = "myUsername:myToken"
credentials = (base64.b64encode(userToken.encode()).decode())
url = "https://api.labsmobile.com/admin/cmd/cmd_changepassword.php"
payload = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><pwd>Hr3sd</pwd></cmd>"headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic %s' % credentials,
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
const axios = require('axios');
let data = 'XmlData=<?xml version="1.0" encoding="UTF-8"?><cmd><login>newaccount@test.com</login><pwd>Hr3sd</pwd></cmd>';
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.labsmobile.com/admin/cmd/cmd_changepassword.php',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from("myUsername:myToken").toString('base64')
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
require "uri"
require 'base64'
require "net/http"
url = URI("https://api.labsmobile.com/admin/cmd/cmd_changepassword.php")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request["Authorization"] = "Basic " + Base64.strict_encode64("myUsername:myToken")
request.body = "XmlData=<?xml version=\"1.0\" encoding=\"UTF-8\"?><cmd><login>newaccount@test.com</login><pwd>Hr3sd</pwd></cmd>"
response = https.request(request)
puts response.read_body
Errores
A continuación se describen los códigos de error HTTP que puede devolver una petición a la API Admin.
| Código HTTP | Código XML | Descripción |
|---|---|---|
| 200 OK | 0 | Comando procesado correctamente |
| 400 Bad Request | 130 | Error interno o inesperado |
| 400 Bad Request | 141 | Parámetro requerido no encontrado en el XML |
| 400 Bad Request | 142 | Error en el formato XML |
| 400 Bad Request | 143 | Parámetro login no encontrado |
| 400 Bad Request | 144 | Parámetro pwd no encontrado |
| 400 Bad Request | 145 | Parámetro message no encontrado |
| 400 Bad Request | 146 | Parámetro status no encontrado |
| 400 Bad Request | 147 | Error modificando una cuenta inexistente |
| 400 Bad Request | 148 | No existen suficientes créditos para esta operación |
| 400 Bad Request | 150 | Cuenta existente con el mismo username |
| 401 Bad Unauthorized | 151 | Credenciales incorrectas |
| 401 Bad Unauthorized | 152 | No se han encontrado credenciales |
Recursos de soporte
Recomendamos consultes y tengas en cuenta los siguientes recursos de soporte en tu integración:
- Descripción, manual y ejemplos de código de la API de envío SMS
- Guía técnica de un proceso de validación o autenticación OTP por SMS
- Todas las versiones y funcionalidades de la API de LabsMobile
- Tutorial primeros pasos de una integración API
- Crea una cuenta de prueba
- Recomendaciones y buenas prácticas en cualquier integración
- Plugins, módulos y extensiones
- ¿Necesitas ayuda? Contacta con nuestros técnicos

