Sin entrar en demasiados tecnicismos, daremos una definición medio formal de lo que son: La interfaz de programación de aplicaciones, abreviada como API del inglés (Application Programming Interface) , es un conjunto de subrutinas, funciones y procedimientos que ofrece ciertos «servicios» para ser utilizados por otro software como una capa de abstracción.
Vamos a ver como de una manera muy sencilla podemos consultar los dominios que tenemos en nuestro Panel de gestión preferido 😉 @neodigit que nos ofrece un API https://developers.neodigit.net para poder realizar algunas tareas desde nuestra linea de comandos (POWERSHELL) en este caso, que $deity me perdone por hacer esto con Windows, pero me pareció una buena manera de desmitificar su uso… espero que os guste y anime para que os hagáis unos cuantos «scripts» y lo compartáis con nosotros.
Bueno, lo primero es abrir el POWERSHELL ISE. Tiene esta pinta:

Desde esta línea de comandos tenemos un editor que genera ficheros con extensión .ps1 y añadiendo unas líneas de código como las que siguen, podemos por ejemplo, listar los dominios que tenemos en nuestro panel ordenados por su estado y fecha de caducidad. Solamente pretendo hacer un ejercicio básico, hace casi 20 años que no tiro una sola línea de código 🙂 pero eso es otra historia, para mostrar la potencia del uso de los API y como podemos automatizar, completar la falta de funcionalidad o adaptar a nuestras necesidades determinadas gestiones por su rapidez.
# Script powershell de ejmplo de uso API con neodigit # Tecnocrática Centro de Datos, SL # --- # Fecha: 30/11/2016 # Tecnócrata: Tomás Ledo. # Descripción: Listar dominios $server='https://api.neodigit.net' $version='/v1' $module = '/domains' $resource = '/domains' $format = '.json' $uri=$server+$version+$module+$resource+$format $token = @{} $token.Add('X-TCpanel-Token','9Oj8Abn1ZXmWVyBZuQB4YC17Pw6EZT1yNQR648D8P6LUFbjqoh') $req = Invoke-RestMethod -Method GET -Uri $uri -Headers $token $domain = $req.name $product = $req.product_info $output = @() $i = 0 foreach ( $product in $domain ){ $i ++ $o = New-Object -TypeName PSObject -Property @{ Fecha = $req.product_info.product_expiration[$i] Estado = $req.product_info.product_status[$i] Dominio = $req.name[$i] } $output += $o } $output | Sort-Object -Property fecha
Expliquemos algunos conceptos para que nuestro script de listado de dominios funcione:
- Necesitaremos nuestra llave de API o API-Key, que podemos encontrarlas en el panel accediendo a: https://panel.neodigit.net/api-consumers y desde ahí generaremos un «token» o palabra clave que usaremos para las llamadas que hace nuestro script y declaramos en la variable token. Nota: Este «token» del ejemplo es uno generado en mi cuenta y está expirado, no sirve. Como recomendación adicional si podéis además limitar el acceso por IP la cosa quedará «niquelada»:

$token = @{} $token.Add('X-TCpanel-Token','9Oj8Abn1ZXmWVyBZuQB4YC17Pw6EZT1yNQR648D8P6LUFbjqoh')
$server='https://api.neodigit.net' $version='/v1' $module = '/domains' $resource = '/domains' $format = '.json' $uri=$server+$version+$module+$resource+$format
$req = Invoke-RestMethod -Method GET -Uri $uri -Headers $token
$output = @() $i = 0 foreach ( $product in $domain ){ $i ++ $o = New-Object -TypeName PSObject -Property @{ Fecha = $req.product_info.product_expiration[$i] Estado = $req.product_info.product_status[$i] Dominio = $req.name[$i] } $output += $o }
$output | Sort-Object -Property fecha
Deja una respuesta