Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Panel

Table of Contents

Summary

...

maxLevel2

Getting Started

Info

Starting with Release 3.0 of 

Spacevars
0longproduct
firmware, REST license is free of charge and you can use it for multiple scenarios.

REST APIs are provided for developers who want to programmatically integrate the Sonus SBC 1000/2000 the 

Spacevars
0longproduct
into their applications, and for administrators who want to script interactions with the Sonus SBC 1000/2000
Spacevars
0longproduct
.

One of these scenarios example is scripting provisioning, that which allows you to program multiple SBCs with the same parameters, in a one shot execution instead of having to program manually one by one each SBCs.manually programming each one. This is often the case when you need to deploy multiple SBCs in a the same countrycounty, creating and must create the same routing and transformation tables manually each time.

Here are some quick start tips to let you easily jump This document outlines tips for jumping into REST programming through Microsoft PowershellPower Shell.

http://fiddler2.com/

Prerequisite

Prerequisite

Your system must include the following:

  • Make sure you loaded 3.x base licenses loaded into the SBC to have ; this will define the REST license as “unlimited"
  • You need to have an SBC account with REST or Administrator access level
  • Windows Management Framework 3.0: http://www.microsoft.com/en-us/download/details.aspx?id=34595  (Windows 7 download: Windows6.1-KB2506143-x64.msu)To Check your Version: 

Verify the Version

Verify the version of the host using the following command.

Code Block
$host.version

Login to REST

Login using a public signed certificate (

...

untested)

Code Block
### Load the Certificate x509
$CertPathDer = "C:\Users\plessisa\Desktop\Rest\Cert.der"
$certDer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath)

### Login
$BodyValue = "Username=restuser&Password=restpass"

$url = "https://134.56.226.215/rest/login"
Invoke-RestMethod -Uri $url -Certificate $certDer -Method Post -Body $BodyValue -SessionVariable ps 

...

Code Block
### Allow self Sign Cert
add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    
    public class IDontCarePolicy : ICertificatePolicy {
        public IDontCarePolicy() {}
        public bool CheckValidationResult(
            ServicePoint sPoint, X509Certificate cert,
            WebRequest wRequest, int certProb) {
            return true;
        }
    }
"@
[System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy
                                            
### Login
$BodyValue = "Username=restuser&Password=restpass"

$url = "https://134.56.226.215/rest/login"
Invoke-RestMethod -Uri $url -Method Post -Body $BodyValue -SessionVariable ps 

Basic REST requests - Samples

Create resources (PUT)

Code Block
$BodyValue = "Description=Default SIP Server"
$url = "https://134.56.226.215/rest/sipservertable/8"
Invoke-RestMethod -Uri $url -Method PUT -Body $BodyValue -WebSession $ps

...

Code Block
$url = "https://134.56.226.215/rest/sipservertable/8"
Invoke-RestMethod -Uri $url -Method DELETE -Body "" -WebSession $ps

Advanced REST Requests

Backup Configuration

Code Block
$DestFile = "C:\Users\plessisa\Desktop\Rest\backup.tar.gz"
$url = "https://134.56.226.215/rest/system?action=backup"
Invoke-RestMethod -Uri $url -Method POST -Body "" -WebSession $ps -OutFile $DestFile 

Restore Configuration

Code Block
$url= "https://134.56.226.215/rest/system?action=importconfig"
$body = "--MyBoundary`n"
$body += 'Content-Disposition: form-data; name="Filename"; filename="symphonyconfig.xml"'
$body += "`nContent-Type: application/xml`n`n"
$body += $(get-content symphonyconfig.xml -raw)
$body += "`n--MyBoundary--"
 
Invoke-RestMethod -uri $url -method POST -ContentType "multipart/form-data; boundary=MyBoundary" -body $body -WebSession $ps

Upload new Sbc Firmware (Does not work)

Code Block
$url= "https://134.56.226.215/rest/partition/1?action=upgrade"
$body = "--MyBoundary`n"
$body += 'Content-Disposition: form-data; name="Filename"; filename="sbc1000-release-3.1.0.img"'
$body += "`nContent-Type: application/octet-stream`n`n"
$body += $(get-content sbc1000-release-3.1.0.img -raw)
$body += "`n--MyBoundary--"
 
Invoke-RestMethod -uri $url -method POST -ContentType "multipart/form-data; boundary=MyBoundary" -body $body -WebSession $ps

Upload new SbcComms (Does not work)

$url= "https://134.56.226.215/rest/sbaconfig?action=sbaupgrade"
$body = "--MyBoundary`n"
$body += 'Content-Disposition: form-data; name="sbaInstallFilename"; filename="Setup.msi"'
$body += "`nContent-Type: application/octet-stream`n`n"
$body += $(get-content Setup.msi -raw)
$body += "`n--MyBoundary--"
 
Invoke-RestMethod -uri $url -method POST -ContentType "multipart/form-data; boundary=MyBoundary" -body $body -WebSession $ps

Scripting with REST

Basic Handler (PUT, POST, GET, DELETE)

Code Block
Function BasicHandler {
    Param($ResultIn)
    [xml]$XmlResultIn = $ResultIn.Substring(5)
    if($XmlResultIn.root.status.http_code.contains("200")) {
        return "Success"
    } else {
        return "Error Code:<"+$XmlResultIn.root.status.app_status.app_status_entry.code+"> Param:<"+$XmlResultIn.root.status.app_status.app_status_entry.params+">"
    }
}

####### Expected
PS C:> BasicHandler $Result
Success
or
Error Code:<20013> Param:<8|SIPServerTable>

Content Handler (GET)

Code Block
[xml]$FinalResult= $Result.Substring(5)

####### Expected Result
PS C:> $FinalResult.root.sipservertable.Description
Default SIP TOTO

...