SIMPLer Features‎ > ‎Features Index‎ > ‎

2011-2Q: SIMPLer API

[20180928] Note that a new APACHE API CORE is being rolled out. Should there be any issues / queries, please do not hesitate to contact support@azotel.com

Due to multiple recurring requests to add an API that would allow easier integration of the signup forms with SIMPLer system, a SIMPLer API feature has been added to the system.  

API has been implemented in two technologies:
  • SOAP - has been used to provide a well known, standardised environment, that should be easy to deploy regardless of the programming platform used. An overview of SOAP technology can be find here: http://en.wikipedia.org/wiki/SOAP
  • REST/JSON - this is a de-facto industry standard for small integrations
Setup
To interface with SIMPLer operator has to:test
  1. Provide Azotel Technologies Ltd with a Public IP address the API will be interfaced from. Also let know which version of API  (SOAP or REST/JSON) will be used
  2. Configure their API client script with the details below that will be send back as an acknowledgement of the IP address:
    • API URL
    • API credentials: username & password
Examples
Do refer to below examples while developing your API client.
  • SOAP - An example of SIMPLer SOAP API client written in Perl and PHP language can be found here:
  • REST/JSON


General
The SOAP Client should interface with a proxy URL contructed appropiately to his server name. I.e if the IP address of the wib server operator uses is 84.203.220.111 that the URL would look following:
http://84.203.220.111/API/operatorapi.pl
The URI should point at OperatorAPI context
http://84.203.220.111/OperatorAPI
In perl language it would look followingly (using the SOAP::Lite module)
my $result = SOAP::Lite
	-> uri('http://84.203.220.111/OperatorAPI')
	-> proxy('http://84.203.220.111/API/operatorapi.pl
')
REST/JSON - do please review attached CURL based examples - these explain everything on how to invoke each command - there are two invoke each command:
  • one that follows the original API concept - these are available under /API folder. i.e. 
POST server.azotel.com/API/modifyCustomer
  • second that follows REST a bit more closely - these are available under / folder. In this case POST, PUT and DELETE functions would be used for data manipulation i.e. 
PUT server.azotel.com/customer

The API runs on port 8080 and it uses same authentication procedure as original API i.e. it will check against the Access List for username, ip and password - before enabling any APi functions are executed.

The SSL version of API is deployed under following URL:

https://server.azotel.com/restapi/




Functions

  • pingAPI - this function is used to verify that the SIMPLer API is reachable
    • Attributes - any set constructed from below can be used as long as the required set is provided
                api_username       => TEXT (required)
                api_password       => TEXT (required)
                operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
  • Result - the SOAP reply will either:
    • 'OK' - to confirm successful processing 
    • error message
  • addCustomer - this function is used to add a new customer account to SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
name               => TEXT (required)
nickname           => TEXT (required): SIMPLer will make it unique by adding a serial number postfix if the nickname already exists in the database
invoicingid        => TEXT (required): SIMPLer will make it unique by adding a serial number postfix if the invoicingid already exists in the database
init_date          => DATE: Initial Contact date in MM/DD/YYYY format
startdate          => DATE: Start Date in MM/DD/YYYY format
customerstatus     =>  TEXT: current, etc..
customer_tracking  => TEXT
installdate        => DATE: Installation Date in MM/DD/YYYY format
frequency          => INTEGER: billing frequency in months
invoicing_status   => BOOLEAN: 1 billing on, 0 billing off
voip               => BOOLEAN: 1 account voip enabled, 0 account voip disabled
address            => TEXT: Installation Address in add1:::add2:::add3:::add4:::add5:::add6 format, where:
add1: Street 1
add2: Street 2
add3: Town
add4: County
add5: Post Code
add6: State

iaddress           => TEXT: format is same as for address attribute
country            => TEXT
eup_username       => TEXT: End User Portal username (if not used customer invoicing ID will be used as EUP login)
password           => TEXT: End User Portal password
type               => TEXT: Customer account type from following list: customer business, customer home, reseller, partner, supplier, competitor gov,
marketingcode      => TEXT
marketingemails    => BOOLEAN: 1 marketing emails on, 0 marketing emails off
installation_area  => TEXT
community_code     => TEXT
reference          => TEXT or INTEGER - if using historical Referencing system, this field is to be populated with any text representing the referee, otherwise populate with referee customer ID number
referral_fee_status => TEXT: no fee, due, pre-paid, paid
referral_fee_amount => FLOAT
note               => TEXT
privatenote        => TEXT
importance         => INTEGER: from 1 to 5
phone_list_main    => TEXT
fax                => TEXT
email              => EMAIL ADDRESS
accounts_email     => TEXT
support_email      => TEXT
website            => TEXT
contacts_list      => TEXT: The contact list in following format - name1:::phone1:::position1:::email1///name2:::phone2:::position2:::email2
vat_exemption      => TEXT: vat exemption details in following format - Yes:::1:::29/12/2012
payment_method     => TEXT: cash, cheque, credit card, debit card, direct debit, online transfer, standing order
send_method        => TEXT: mail, pdf, both, none
                                            where:
                                             - mail - Email To Customer
                                             - pdf  - Only to Operator
                                             - both - Both email customer and send to operator
                                             - none - do not send invoice
                                    
credit             => INTEGER: number of credit days assigned do the cusotmer
setup_fees         => FLOAT
folder             => TEXT
order_number       => TEXT
gwid               => INTEGER: ID number of the gateway we want to assign to customer account
bucketid           => INTEGER: ID number of the bucket we want to assign to customer account
monitor            => TEXT: monitor, no monitor, monitor+sms, monitor no alert
tcp                => TEXT
udp                => TEXT
p2p                => TEXT: true, false
sites              =>
ip_type            => TEXT: public, private
ip_number          => INTEGER
connLimit          => INTEGER
rssi               => BOOLEAN: 1 equipment graphs on, 0 equipment graphs off
nat                => BOOLEAN: 1 auto provision nat on, 0 auto provision nat off
auto_prov_radius_credentials             => BOOLEAN: auto-provision 'Generate RADIUS Accounts'
auto_prov_activatecpe                    => BOOLEAN: auto-provision 'Activate IP Address'
auto_prov_radius_dynamic_ip              => BOOLEAN: auto-provision 'Generate Customer IP Address'
auto_prov_pppoe                          => BOOLEAN: auto-provision 'Set PPPoE on WAN interface'
sand_invoice_status                      => TEXT: must be on of the following: override, default, off, deferred
sand_invoice_email_from                 
=> EMAIL ADDRESS
               sand_invoice_email_to                    => EMAIL ADDRESS
sand_invoice_email_bcc                   => EMAIL ADDRESS
sand_invoice_billing_issue_date         
=> TEXT: example: 15 days
sand_invoice_email_date_1               
=>
TEXT: example: 20 days
sand_invoice_email_date_2               
=>
TEXT: example: 25 days
sand_invoice_disconnection_date         
=>
TEXT: example: 30 days
sand_invoice_throttling_date            
=> TEXT: example: 28 days
sand_invoice_deferred_to                 
=> DATE: correct format: DD/MM/YYYY
lodgement_failure_email_2               
=> TEXT: example: 5 days
lodgement_failure_email_3               
=>
TEXT: example: 10 days
lodgement_failure_disconnection         
=>
TEXT: example: 15 days
sand_traffic_limit                      
=> INTEGER: traffic limit [GB]: example: 10
sand_traffic_status                     
=> TEXT: must be on of the following: override, default, off, deferred
sand_traffic_email_from                 
=>
EMAIL ADDRESS
sand_traffic_email_to                   
=>
EMAIL ADDRESS
sand_traffic_email_bcc                  
=> EMAIL ADDRESS,
sand_traffic_email_treshold_1           
=> INTEGER: percentage usage threshold [%]: example: 60
sand_traffic_email_treshold_2           
=> INTEGER: percentage usage threshold [%]: example: 80
sand_traffic_disconnection_treshold     
=>
INTEGER: percentage usage threshold [%]: example: 100
sand_traffic_overage_treshold           
=> INTEGER: percentage usage threshold [%]: example: 90
sand_traffic_do_not_prorate             
=>
must be one of the following:
                                               
default                                      :  leave the field empty
                                               
Prorate the CAP in the first month           :  -1
                                                Do NOT
prorate the CAP in the first month    :  1 
sand_traffic_do_not_carry_overage_over  
=>
must be one of the following:
                                                default                                              :  leave the field empty
                                               
Carry over overage Top-Ups to the next period        :  -1
                                                Do NOT
carry over overage Top-Ups to the next period :  1 
sand_traffic_deferred_to                 
=>
DATE: correct format: DD/MM/YYYY
tax_zone           => INTEGER: default tax zone ID
tax_mode           => TEXT: default, fixed, multi
tax_rate           => FLOAT: default tax rate
overage            => FLOAT
formula            => TEXT
overageid          => INTEGER
free_service       => BOOLEAN: 1 free service on, 0 free service off
invoicing_day      => INTEGER
gpsx               => FLOAT
gpsy               => FLOAT
value_added_reseller   => INTEGER: VAR ID
master_agent           => INTEGER: MA ID
regional_sales_manager => INTEGER: RSM ID
salesman           => INTEGER: Salesman ID
group              => INTEGER/INTEGER LIST: ID of the group to which the customer should be assigned, or comma separated list of group ID (e.g. '1,2,5')
custom_field_*          => TEXT
cp_terms           => BOOLEAN: 't' or 'f'
send_receipt       => BOOLEAN: 1 or 0
sendCCPassword     => BOOLEAN: 1 or 0 - a customer_portal_login email will be send if name, sageid and password are specified
use_invoicing_id_auto_generation_from_wisp_settings  => BOOLEAN: 1 or 0
generate_nickname_based_on_invoicing_id => BOOLEAN: 1 or 0
 


Note: For custom fields replace the * in custom_field_* with the ID of the custom field defined under settings->Custom Fields.
    • Result - the SOAP reply will either:
      • start with 'OK:' token followed by customerid of the new account - for successful processing
      • contain an error message
  • modifyCustomer - this function is used to modify an existing customer account in SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
customerid         => TEXT (required)
name               => TEXT (optional)
nickname           => TEXT (optional)
invoicingid        => TEXT (optional)
init_date          => DATE: Initial Contact date in MM/DD/YYYY format
startdate          => DATE: Start Date in MM/DD/YYYY format
customerstatus     => TEXT: current, etc..
customer_tracking  => TEXT
installdate        => DATE: Installation Date in MM/DD/YYYY format
frequency          => INTEGER: billing frequency in months
invoicing_status   => BOOLEAN: 1 billing on, 0 billing off
voip               => BOOLEAN: 1 account voip enabled, 0 account voip disabled
address            => TEXT: Installation Address in add1:::add2:::add3:::add4:::add5:::add6 format, where:
add1: Street 1
add2: Street 2
add3: Town
add4: County
add5: Post Code
add6: State

iaddress           => TEXT: format is same as for address attribute
country            => TEXT
password           => TEXT: End User Portal password
type               => TEXT: Customer account type from following list: customer business, customer home, reseller, partner, supplier, competitor gov,
marketingcode      => TEXT
marketingemails    => BOOLEAN: 1 marketing emails on, 0 marketing emails off
installation_area  => TEXT
community_code     => TEXT
reference          => TEXT or INTEGER - if using historical Referencing system, this field is to be populated with any text representing the referee, otherwise populate with referee customer ID number
referral_fee_status => TEXT: no fee, due, pre-paid, paid
referral_fee_amount => FLOAT
note               => TEXT
privatenote        => TEXT
importance         => INTEGER: from 1 to 5
phone_list_main    => TEXT
fax                => TEXT
email              => EMAIL ADDRESS
accounts_email     => TEXT
support_email      => TEXT
website            => TEXT
contacts_list      => TEXT: The contact list in following format - name1:::phone1:::position1:::email1///name2:::phone2:::position2:::email2
vat_exemption      => TEXT: vat exemption details in following format - Yes:::1:::29/12/2012
payment_method     => TEXT: cash, cheque, credit card, debit card, direct debit, online transfer, standing order
send_method        => TEXT: mail, pdf
credit             => INTEGER: number of credit days assigned do the cusotmer
setup_fees         => FLOAT
folder             => TEXT
order_number       => TEXT
gwid               => INTEGER: ID number of the gateway we want to assign to customer account
bucketid           => INTEGER: ID number of the bucket we want to assign to customer account
monitor            => TEXT: monitor, no monitor, monitor+sms, monitor no alert
tcp                => TEXT
udp                => TEXT
p2p                => TEXT: true, false
sites              =>
ip_type            => TEXT: public, private
ip_number          => INTEGER
connLimit          => INTEGER
rssi               => BOOLEAN: 1 equipment graphs on, 0 equipment graphs off
nat                => BOOLEAN: 1 auto provision nat on, 0 auto provision nat off
auto_prov_radius_credentials             => BOOLEAN: auto-provision 'Generate RADIUS Accounts'
auto_prov_activatecpe                    => BOOLEAN: auto-provision 'Activate IP Address'
auto_prov_radius_dynamic_ip              => BOOLEAN: auto-provision 'Generate Customer IP Address'
auto_prov_pppoe                          => BOOLEAN: auto-provision 'Set PPPoE on WAN interface'
sand           => TEXT
tax_zone           => INTEGER: default tax zone ID
tax_mode           => TEXT: default, fixed, multi
tax_rate           => FLOAT: default tax rate
overage            => FLOAT
formula            => TEXT
overageid          => INTEGER
free_service       => BOOLEAN: 1 free service on, 0 free service off
invoicing_day      => INTEGER
gpsx               => FLOAT
gpsy               => FLOAT
value_added_reseller   => INTEGER: VAR ID
master_agent           => INTEGER: MA ID
regional_sales_manager => INTEGER: RSM ID
salesman           => INTEGER: Salesman ID
group              => INTEGER/INTEGER LIST: ID of the group to which the customer should be assigned, or comma separated list of group ID (e.g. '1,2,5')
send_receipt       => BOOLEAN: 1 or 0
custom_field_*          => TEXT


Note: For custom fields replace the * in custom_field_* with the ID of the custom field defined under settings->Custom Fields.
  • Result - the SOAP reply will either:
    • 'OK'
    • contain an error message


  • deleteCustomer - this function is used to delete an existing customer account in SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has multiple databases
customerid         => TEXT (required)
deleteMaintenance  => boolean (optional)
deleteSubscription => boolean (optional)
  • Result - the SOAP reply will either:
    • 'OK'
    • contain an error message

Note - SIMPLer will allow to delete only accounts that meet following conditions:

  1. customer must be in a status different than 'current'
  2. no subscriptions should be attached to a customer account
  3. no IP addresses should be set under a customer account 
  4. no invoices should be generated for a customer account
  5. no sales issues should be attached to a customer account
  6. no maintenance tickets should be attached to a customer account
  7. no billing issues should be attached to a customer account
  8. no VoIP accounts should be set under a customer account
  9. no email accounts should be set under a customer account
  10. no FTP accounts should be attached to a customer account
  11. no CPE/Equipment details should be added to a customer account
  12. no Credit Cards should be added to a customer account
  13. no Bank Accounts / EFT Accounts should be added to a customer account
  14. no Attachments should be linked to a customer account

Once above conditions are met - SIMPLer will delete the customer account along with all other setup (i.e. RADIUS account) associated with the particular customer account



  • addSubscription - this function is used to add a new subscription to a customer account in SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
customerid         => INTEGER (required)
productid          => INTEGER (required)
quantity           => INTEGER
discount           => FLOAT
round              => TEXT: default, up, down, arithmetic
premium            => FLOAT
type               => TEXT: Recurring, Overage, Reconnection
valid_to           => DATE in MM/DD/YYYY format
valid_from         => DATE in MM/DD/YYYY format
cycles             => INTEGER
frequency          => INTEGER
price              => FLOAT
description        => TEXT
tax_zone           => INTEGER: default tax zone ID
tax_mode           => TEXT: default, fixed, multi
tax_rate           => FLOAT: default tax rate
overage            => FLOAT
formula            => TEXT
overageid          => INTEGER
free_service       => BOOLEAN: 1 free service on, 0 free service off
price_changed      => BOOLEAN: 1 price overriden,
description_changed=> BOOLEAN: 1 description overriden
revert_customer    => BOOLEAN: 1 Function to revert customer to normal status

  • Result - the SOAP reply will either:
    • 'OK' - to confirm successful processing
    • error message
  • addIP - this function is used to add a new IP to a customer account in SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
customerid         => INTEGER (required)
ip                 => INET
mac                => MAC
macrestrict        => BOOLEAN: 1 mac restriction on, 0 mac restriction off
label              => TEXT
type               => BOOLEAN: 1 - Public IP, 0 - Private IP
dhcpoptions        => TEXT
radius_username    => TEXT
gatewayid          => INTEGER
updateMAConEUPLogin =>
BOOLEAN: 1 - Allow to auto - update MAC on EUP login ON, 0 - Allow to auto - update MAC on EUP login OFF
  • Result - the SOAP reply will either:
    • 'OK' - to confirm successful processing
    • error message

  • listCustomTableEntries - this function is used to manipulate list customer Custom Tables 
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has multiple database
customerid         => TEXT (optional)
value              => TEXT (optional)
columnid           => TEXT (optional)
  • Result - the JSON reply will either:
    • Error message
    • Generation Result
    • REST Format Example request
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2"}' http://server.azotel.com/restapi/API/listCustomTableEntries

or

curl -H "Accept: application/json" -H "Content-type: application/json" -X GET -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2"}' http://server.azotel.com/restapi/customTableEntries

    • REST JSON formatted response example. Note that there are essentially two sets of data returned:
      • columns - this set of data will be returned always. It contains definitions of the Custom Table Columns.
      • rows_per_customerid - is there are any results - these will be returned indexed by customerid -> rowid -> columnid
{
   "ip" : "78.133.203.161",
   "result" : {
      "voip" : {
         "rows_per_customerid" : {
            "2" : {
               "1" : {
                  "39" : "VoIPUsername1",
                  "40" : "VoIPPassword1",
                  "41" : "VoIPNumber1"
               },
               "3" : {
                  "39" : "VoIPUsername2",
                  "40" : "VoIPPassword2",
                  "41" : "VoIPNumber2"
               },
               "2" : {
                  "39" : "VoIPUsername3",
                  "40" : "VoIPPassword3",
                  "41" : "VoIPNumber3"
               }
            }
         },
         "columns" : {
            "39" : {
               "locked" : "0",
               "options" : "",
               "note" : "",
               "availability" : "customer custom table",
               "length" : "",
               "default_value" : "",
               "mandatory" : "0",
               "label" : "VoIP Username",
               "type" : "textfield",
               "id" : "39"
            },
            "40" : {
               "locked" : "0",
               "options" : "",
               "note" : "",
               "availability" : "customer custom table",
               "length" : "",
               "default_value" : "",
               "id" : "40",
               "type" : "textfield",
               "label" : "VoIP Password",
               "mandatory" : "0"
            },
            "41" : {
               "locked" : "0",
               "options" : "",
               "note" : "",
               "availability" : "customer custom table",
               "length" : "",
               "default_value" : "",
               "id" : "41",
               "type" : "textfield",
               "label" : "VoIP Number",
               "mandatory" : "0"
            }
         }
      }
   }
}

  • addCustomTableEntries - this function is used to manipulate list customer Custom Tables 
    • Attributes - any set constructed from below can be used as long as the required set is provided (Note:  if you are inserting a date use the following format: 2018-09-22)
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has multiple database
customerid         => TEXT (required)
columnid1          => TEXT (required)
columnid2          => TEXT (required)
...
columnid3          => TEXT (required)

  • Result - the JSON reply will either:
    • Error message
    • Generation Result
    • REST Format Example request
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2","tablename":"voip","39":"VoIPUsername","40":"VoIPPassword","41":"VoIPNumber"}' http://server.azotel.com/restapi/API/addCustomTableEntries

or

curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2","tablename":"voip","39":"VoIPUsername","40":"VoIPPassword","41":"VoIPNumber"}' http://server.azotel.com/restapi/customTableEntries

  • REST JSON formatted response example. It returns the OK: followed by the added row ID.
{
   "ip" : "78.133.203.161",
   "result" : "OK: 3"
}


  • modifyCustomTableEntries - this function is used to manipulate list customer Custom Tables 
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has multiple database
customerid         => TEXT (required)
columnid1          => TEXT (required)
columnid2          => TEXT (optional)
...
columnid3          => TEXT (optional)
  • Result - the JSON reply will either:
    • Error message
    • Generation Result
  • REST Format Example request
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2","tablename":"voip","rowid":"1","41":"VoIPNumberModified"}' http://server.azotel.com/restapi/API/modifyCustomTableEntries

or

curl -H "Accept: application/json" -H "Content-type: application/json" -X PUT -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2","tablename":"voip","rowid":"1","41":"VoIPNumberModified"}' http://server.azotel.com/restapi/customTableEntries

  • REST JSON formatted response example. 
{
   "ip" : "78.133.203.161",
   "result" : "OK"
}


  • deleteCustomTableEntries - this function is used to manipulate list customer Custom Tables 
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has multiple database
customerid         => TEXT (required)
columnid1          => TEXT (required)
columnid2          => TEXT (optional)
...
columnid3          => TEXT (optional)
  • Result - the JSON reply will either:
    • Error message
    • Generation Result
  • REST Format Example request
curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2","rowid":"1"}' http://server.azotel.com/restapi/API/deleteCustomTableEntries

or

curl -H "Accept: application/json" -H "Content-type: application/json" -X DELETE -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"2","rowid":"1"}' http://server.azotel.com/restapi/customTableEntries

  • REST JSON formatted response example. 
{
   "ip" : "78.133.203.161",
   "result" : "OK"
}


  • addSite - this function is used to add a new Site to the SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
sitename           => TEXT (required)
wibid              => INTEGER: ID of WIB
contactname        => TEXT
accessinfo         => TEXT
gpsx               => NUMERIC
gpsy               => NUMERIC
phone              => TEXT
email              => TEXT
accesshours        => TEXT
interval           => INTEGER: 0 - none, 1 - Quarterly, 2 - Semi-Annually, 3 - Annually
status             => INTEGER: 1 -Potential, 2 - Production, 3 - Decommissioned, 4 - Cancelled
sitetype           => TEXT: Network, Warehouse, Installer
maintenanceOption  => INTEGER: 0 - Disabled, 1 - Enabled
frequency          => NUMERIC
height             => NUMERIC
min_stock_level    => TEXT
common             => TEXT
owner              => TEXT
reference          => TEXT
mlduration         => TEXT
towertype          => TEXT: Building, Grain, Guided Tower, Lattice, Monopole, Pole, Water Tower
substatus          => TEXT
ponumber           => TEXT
compliancenumber   => TEXT
heightallocation   => TEXT
accessgpsx         => NUMERIC
accessgpsy         => NUMERIC
nextmaintenancedate=> DATE: format: YYYY-MM-DD
state              => TEXT: must be a valid non abbreviated US state
street1            => TEXT
street2            => TEXT
city               => TEXT
county             => TEXT
zip                => TEXT
country            => TEXT: must be a valid full name country
  • Result - the SOAP reply will either:
    • 'OK:<siteid>' - to confirm successful processing
    • error message


  • modifySite - this function is used to modify a site in SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
siteid             => INTEGER (required)
sitename           => TEXT
wibid              => INTEGER: ID of WIB
contactname        => TEXT
accessinfo         => TEXT
gpsx               => NUMERIC
gpsy               => NUMERIC
phone              => TEXT
email              => TEXT
accesshours        => TEXT
interval           => INTEGER: 0 - none, 1 - Quarterly, 2 - Semi-Annually, 3 - Annually
status             => INTEGER: 1 -Potential, 2 - Production, 3 - Decommissioned, 4 - Cancelled
sitetype           => TEXT: Network, Warehouse, Installer
maintenanceOption  => INTEGER: 0 - Disabled, 1 - Enabled
frequency          => NUMERIC
height             => NUMERIC
min_stock_level    => TEXT
common             => TEXT
owner              => TEXT
reference          => TEXT
mlduration         => TEXT
towertype          => TEXT: Building, Grain, Guided Tower, Lattice, Monopole, Pole, Water Tower
substatus          => TEXT
ponumber           => TEXT
compliancenumber   => TEXT
heightallocation   => TEXT
accessgpsx         => NUMERIC
accessgpsy         => NUMERIC
nextmaintenancedate=> DATE: format: YYYY-MM-DD
state              => TEXT: must be a valid non abbreviated US state
street1            => TEXT
street2            => TEXT
city               => TEXT
county             => TEXT
zip                => TEXT
country            => TEXT: must be a valid full name country
  • Result - the SOAP reply will either:
    • 'OK:<siteid>' - to confirm successful processing
    • error message
  • deleteSite - this function is used to delete an existing Site entry.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
siteid             => INTEGER (required)

  • Result - the SOAP reply will either:
    • OK' - to confirm successful processing, OR 
    • error message
  • addCreditCardToken - this function is used to add a new Credit Card Details with TOKEN to a customer account in SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
customerid         => INTEGER (required)
cc_last4           => INTEGER (required) - 4 digits allowed
module_id          => INTEGER (required)
cc_token           => TEXT (required)
cc_month           => INTEGER - number between 1 and 12
cc_year            => INTEGER - number bigger or equal than current year
cc_type            => TEXT: visa, mastercard, american express, discover, other
cc_auto_payment    => BOOLEAN: 't' or 'f'
cc_preferred       => BOOLEAN: 't' or 'f'
street1            => TEXT
street2            => TEXT
city               => TEXT
county             => TEXT
zip                => TEXT
firstname          => TEXT
lastname           => TEXT
cc_holder          => TEXT
state              => TEXT: 'Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','District of Columbia','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania','Puerto Rico','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming'
country            => TEXT: "Afghanistan","Albania","Algeria","Andorra","Angola","Antigua and Barbuda","Argentina","Armenia","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium", "Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Central African Republic", "Chad","Chile","China","Colombia","Comoros","Congo","Costa Rica","C&ocirc;te d'Ivoire","Croatia","Cuba","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","East Timor","Ecuador", "Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Fiji","Finland","France","Gabon","Gambia","Georgia","Germany","Ghana","Greece","Grenada","Guatemala","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kazakhstan","Kenya","Kiribati","North Korea","South Korea","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Romania","Russia","Rwanda","Saint Kitts and Nevis","Saint Lucia","Saint Vincent and the Grenadines","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia and Montenegro","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","Spain","Sri Lanka","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Togo","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Yemen","Zambia","Zimbabwe"
  • Result - the SOAP reply will either:
    • 'OK: [creditcard ID]' - to confirm successful processing
    • error message
  • addEFTToken- this function is used to add a new EFT Details with TOKEN to a customer account in SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
customerid         => INTEGER (required)
               eft_last4          => INTEGER (required) - 4 digits allowed 
               eft_token          => TEXT(required)
               eft_banksortcode   => INTEGER(required)
               eft_bankonlineref  => TEXT(required)
               eft_bankaccountname=> TEXT(required)
               eft_bankaccounttype=> TEXT(required) - 'checking' or 'savings'
               eft_auto_payment   => BOOLEAN - 't' or 'f'
               eft_preferred      => BOOLEAN - 't' or 'f'
               module_id          => INTEGER (required) - send email to support@azotel.com if you do not know the module ID


  • Result - the SOAP reply will either:
    • 'OK: [EFT ID]' - to confirm successful processing
    • error message

  • addMaintenance - this function is used to add a new Maintenance Ticket to SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
customerid         => INTEGER
dateReported       => DATE in YYYY-MM-DD format
reportedby         => TEXT
type               => support, administration, installation, network, support, relocate, remove, repair, azotel, azotel-feature, disti, accounts, sales, management, suspend, internal tracking, connection review, general outage, point to point link required, RF interference, Engineering, router, survey, Upgrade, voip
subtype            => must be a valid subtype that belongs to a given maintenance type
description        => TEXT
resolution         => TEXT
priority           => INTEGER
status             => open, closed, waiting for customer
dateClosed         => DATE in YYYY-MM-DD format
closedby                        => TEXT
title              => TEXT (required)
hours_spent        => INTEGER
siteId             => INTEGER
equipmentId        => INTEGER
email_recipients   => TEXT
  • Result - the SOAP reply will either:
    • 'OK:[new maintenance issue id]' - to confirm successful processing, the id
    • error message
  • modifyMaintenance - this function is used to modify an existing Maintenance Ticket in the SIMPLer system.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
id                 => INTEGER (required) - id of the maintenance ticket
customerid         => INTEGER
dateReported       => DATE in YYYY-MM-DD format
reportedby         => TEXT
type               => support, administration, installation, network, support, relocate, remove, repair, azotel, azotel-feature, disti, accounts, sales, management, suspend, internal tracking, connection review, general outage, point to point link required, RF interference, Engineering, router, survey, Upgrade, voip
subtype            => must be a valid subtype that belongs to a given maintenance type
description        => TEXT
resolution         => TEXT
updateresolution   => INTEGER - 1 = append resolution rather than replacing      
priority           => INTEGER
status             => open, closed, waiting for customer
dateClosed         => DATE in YYYY-MM-DD format
closedby           => TEXT
title              => TEXT
hours_spent        => INTEGER
siteId             => INTEGER
equipmentId        => INTEGER
updatedby          => TEXT
email_recipients   => TEXT
  • Result - the SOAP reply will either:
    • 'OK' - to confirm successful processing
    • error message

  • addInstallerTracking - this function is used to add a new Installer Tracking entry.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
maintenanceId      => INTEGER (required)
dateOpened         => DATE in YYYY-MM-DD format
dateClosed         => DATE in YYY-MM-DD format
status             => open, paid
installerFee       => FLOAT
installerId        => INTEGER
note               => TEXT
dueDate            => DATE in YYYY-MM-DD format
dueHour            => INTEGER
dueMinute          => INTEGER
  • Result - the SOAP reply will either:
    • '[new installer tracking id]OK' - to confirm successful processing, OR 
    • error message

  • modifyInstallerTracking - this function is used to modify an existing Installer Tracking entry.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
installerTrackingId => INTEGER (required)
dateOpened         => DATE in YYYY-MM-DD format
dateClosed         => DATE in YYY-MM-DD format
status             => open, paid
installerFee       => FLOAT
maintenanceId      => INTEGER
installerId        => INTEGER
note               => TEXT
dueDate            => DATE in YYYY-MM-DD format
dueHour            => INTEGER
dueMinute          => INTEGER
  • Result - the SOAP reply will either:
    • '[installer tracking id]OK' - to confirm successful processing, OR 
    • error message

  • deleteInstallerTracking - this function is used to modify an existing Installer Tracking entry.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
installerTrackingId => INTEGER (required)

  • Result - the SOAP reply will either:
    • '[installer tracking id]OK' - to confirm successful processing, OR 
    • error message




  • listEquipment - this function is used to perform simple queries on equipment table in SIMPLer.
    • Attributes - any set constructed from below can be used as long as the required set is provided
api_username       => TEXT (required)
api_password       => TEXT (required)
operator           => TEXT (optional): to specify the database in case an operator has multiple database

id                 => TEXT (optional): use this field to fetch a single equipment record with a particular ID (if exists)
type               => TEXT (optional): use this field to narrow down searches to a particular equipment type
ipaddress          => TEXT (optional): use this field to fetch a single equipment record with a particular IP address (if exists)
nickname           => TEXT (optional): use this field to narrow down searches to equipment with nicknames that match the given string
macaddress         => TEXT (optional): use this field to narrow down searches to equipment with MAC Addresses that match the given string

  • Result - the JSON reply will either:
    • Error message
    • Generation Result
      • SOAP Format Example
<Equipment>
  <1>
    <id>1</id>
    <date_added>2016-08-10 05:49:50.297976</date_added>
    <description>description</description>
    <imsi></imsi>
    <ipaddress>10.10.10.17</ipaddress>
    <ki></ki>
    <macaddress></macaddress>
    <msisdn></msisdn>
    <nickname>A5</nickname>
    <opcode></opcode>
    <serialnumber>GMB999998765</serialnumber>
    <sqn></sqn>
    <status>use</status>
    <type>telradltecpe</type>
  </1>
  <100>
    <id>100</id>
    <date_added>2016-08-10 05:49:50.297976</date_added>
    <description>Irasburg NAS/Router</description>
    <imsi></imsi>
    <ipaddress>10.254.254.29</ipaddress>
    <ki></ki>
    <macaddress></macaddress>
    <msisdn></msisdn>
    <nickname>PPPoE-Irasburg-NAS</nickname>
    <opcode></opcode>
    <serialnumber>Router</serialnumber>
    <sqn></sqn>
    <status>use</status>
    <type></type>
  </100>
</Equipment>


        • REST Format Example
{
   "ip" : "127.0.0.1",
   "result" : {
      "equipment" : [
         {
            "ki" : "",
            "nickname" : "NS2",
            "status" : "stock",
            "imsi" : "",
            "description" : "3.2.3-rc",
            "opcode" : "",
            "msisdn" : "",
            "macaddress" : "00:15:6D:B7:FA:4E",
            "date_added" : "2016-08-10 05:49:50.297976",
            "serialnumber" : "",
            "sqn" : "",
            "id" : "32",
            "type" : "nanostationsm",
            "ipaddress" : "172.16.9.202"
         },
         {
            "ki" : "",
            "nickname" : "PPPoE-Stowe_Hollow_NAS_and_DSL",
            "status" : "use",
            "imsi" : "",
            "description" : "Stowe Hollow NAS",
            "opcode" : "",
            "macaddress" : "",
            "msisdn" : "",
            "date_added" : "2016-08-10 05:49:50.297976",
            "serialnumber" : "Router",
            "sqn" : "",
            "id" : "127",
            "type" : "",
            "ipaddress" : "64.222.83.40"
         },
         }
      ]
   }
}

        • addEquipment - this function is used to add a new equipment table entry in SIMPLer.
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        nickname           => TEXT (required) - nickname for equipment. Must be unique
        ipaddress          => TEXT - must be a valid ip address
        description        => TEXT
        serialnumber       => TEXT
        mac                => TEXT - must be a valid mac address
        status             => TEXT - valid values: stock, use
        invDetails         => TEXT
        parent             => INTEGER - equipment ID of parent device
        type               => TEXT - valid values:  AirOSBH, AirOSBH1, alvarionap, alvarionsm, bridge, bridgeSNMP, canopyap, canopybh, canopycmm, canopyofdm, canopyOFDMv2, canopyPTP800,
        canopysm, genericAP, genericAPSNMP, genericAPSNMPv1, genericBH,
        genericBHSNMP,
         genericBHSNMPv1, genericSM, genericSMSNMP, genericSMSNMPv1,
        mikrotikap,
         mikrotikrouter, mikrotiksm, nanostationap, nanostationsm, other,
        otherSNMP,
         pbx, remotevoipphone, router, routerSNMP, switch, switchSNMP,
        canopy320sm, canopy320ap
        snmp_community     => TEXT
        value              => TEXT - equipment costs
        assigned_site      => INTEGER - site ID of parent site
        maintemail         => TEXT - email address to override default maintenance email address
        dhcpoptions        => TEXT
        equipmentdata      => TEXT - not used by SIMPLer. For operator to store any information relating to the equipment
        supplier           => TEXT
        supplier_orderno   => TEXT
        receive_by         => TEXT
        receive_date       => TEXT
        internal_groupno   => TEXT
        port               => TEXT
        equipnote          => TEXT
        typeLabel          => TEXT
        assigned_site_name => TEXT
        parentNickname     => TEXT
        imsi               => TEXT
        ki                 => TEXT
        opcode             => TEXT
        msisdn             => TEXT
        sqn                => TEXT
        pin1               => TEXT
        pin2               => TEXT
        puk1               => TEXT
        adm1               => TEXT
        iccid              => TEXT
        custom_field_*            => TEXT

        Note: For custom fields replace the * in custom_field_* with the ID of the custom field defined under settings->Custom Fields.


        • Result - the SOAP reply will either:
          • 'OK: [new equipment id]' - to confirm successful processing, the id of the newly added equipment is returned.
          • error message

        • modifyEquipment - this function is used to modify an existing equipment table entry in SIMPLer.
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        equipid            => INTEGER (required)
        nickname           => TEXT - nickname for equipment. Must be unique
        ipaddress          => TEXT
        description        => TEXT
        serialnumber       => TEXT
        mac                => TEXT
        status             => TEXT - valid values: stock, use
        invDetails         => TEXT
        parent             => INTEGER - equipment ID of parent device
        type               => TEXT - valid values:  AirOSBH, AirOSBH1, alvarionap, alvarionsm, bridge, bridgeSNMP, canopyap, canopybh, canopycmm, canopyofdm, canopyOFDMv2, canopyPTP800,
        canopysm,
         genericAP, genericAPSNMP, genericAPSNMPv1, genericBH, genericBHSNMP,
        genericBHSNMPv1,
        genericSM, genericSMSNMP, genericSMSNMPv1, mikrotikap,
        mikrotikrouter,
        mikrotiksm,nanostationap, nanostationsm, other, otherSNMP,
        pbx,
         remotevoipphone, router, routerSNMP, switch, switchSNMP, canopy320sm, canopy320ap
        snmp_community     => TEXT
        value              => TEXT - equipment costs
        assigned_site      => INTEGER - site ID of parent site
        maintemail         => TEXT - email address to override default maintenance email address
        dhcpoptions        => TEXT
        equipmentdata      => TEXT - not used by SIMPLer. For operator to store any information relating to the equipment
        supplier            => TEXT
        supplier_orderno    => TEXT
        receive_by          => TEXT
        receive_date        => TEXT
        internal_groupno    => TEXT
        port                => TEXT
        equipnote          => TEXT
        typeLabel          => TEXT
        assigned_site_name => TEXT
        parentNickname     => TEXT
        custom_field_*            => TEXT

        Note: For custom fields replace the * in custom_field_* with the ID of the custom field defined under settings->Custom Fields.

        • Result - the SOAP reply will either:
          • 'OK - to confirm successful processing
          • error message
        • addEquipmentLoginDetails - this function is used to add a new equipment login details to the equipment entry in SIMPLer.
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        equipid            => TEXT (required) - equipid for equipment.
        username           => TEXT (required) - login username
        password           => TEXT
        notes              => TEXT


        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message
        • deleteEquipmentLoginDetails - this function is used to delete equipment login details from the equipment entry in SIMPLer.
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        equipid            => TEXT (required) - equipid for equipment.
        username           => TEXT (required) - login username


        • Result - the SOAP reply will either:
          • 'OK' to confirm successful processing
          • error message
        • updateWibFiles - this function is used to update the WIB files
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        wibnumber          => INTEGER (required)
        force              => BOOLEAN: 1 - Force Mode (i.e.required for QoS rate changes), 0 - Standard Mode
        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message
        • updateGPSdetails - this function is used to calculate the missing GPS details based on addresses
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message
        • generateInvoices - this function is used to start up the invoicing process
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        type               => TEXT: new, recurring (defaults to recurring)
        customerid         => INTEGER
        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message

        • addEFT - this function is used to add customer EFT details (bank account)
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username                   => TEXT (required)
        api_password                   => TEXT (required)
        operator                       => TEXT (optional): to specify the database in case an operator has multiple database
        customerid                     => INTEGER
        bankaccountnumber              => TEXT (required)
        banksortcode                   => TEXT
        bankonlineref                  => TEXT
        bankaccountname                => TEXT
        bankdetailschanged             => BOOLEAN
        bankaccounttype                => TEXT: checking, savings, DEFAULT
        autopayment                    => BOOLEAN
        preferred                      => BOOLEAN
        eft_sepa_sequencetype          => TEXT: SEPA Sequence Type 
          
                                   
                                        'FRST','RCUR','OOFF','FNAL','NA', where:

                                        'FRST'    => 'First Time Debits',
                                        'RCUR'    => 'Recurring Debits',
                                        'OOFF'    => 'Once Off Debits',
                                        'FNAL'    => 'Final Debits',
                                        'NA'      => 'Not Available / Used Up'
        eft_sepa_bic                   => INTEGER
        : SEPA BIC / SWIFT
        eft_sepa_iban                  => TEXT: SEPA IBAN
        eft_sepa_debtorname            => TEXT: SEPA Debtor Name
        eft_sepa_country               => TEXT: SEPA Debtor Country
        eft_sepa_debtorremittancedata  => TEXT: SEPA Remittance Data
        eft_sepa_signaturedate         => DATE (format: YYYY-MM-DD): SEPA Signature Date
        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message

        • addCPE - this function is used to add customer CPE details (customer permises equipment)
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        equipid            => INTEGER (required)
        customerid         => INTEGER (required)
        gpsx               => FLOAT
        gpsy               => FLOAT
        distance           => FLOAT
        colour             => TEXT
        frequency          => TEXT
        installedby        => TEXT
        dishinstalled      => BOOLEAN
        groundingcompleted => BOOLEAN
        additionalinfo     => TEXT ARRAY

        • Result - the SOAP reply will either:
          • 'OK :[new cpe id]' - to confirm successful processing, the id
          • error message

        • modifyCPE - this function is used to modify customer CPE details (customer permises equipment)
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        cpeid              => INTEGER (required)
        equipid            => INTEGER
        customerid         => INTEGER
        gpsx               => FLOAT
        gpsy               => FLOAT
        distance           => FLOAT
        colour             => TEXT
        frequency          => TEXT
        installedby        => TEXT
        dishinstalled      => BOOLEAN
        groundingcompleted => BOOLEAN
        additionalinfo     => TEXT ARRAY

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message

        • deleteCPE - this function is used to delete customer CPE details (customer permises equipment)
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        cpeid              => INTEGER (required)

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message


        • addBasestation - this function is used to add Basestation details
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        equipid            => INTEGER (required)
        siteid             => INTEGER (required)
        sector             => TEXT
        direction          => TEXT
        colour             => TEXT
        frequency          => NUMERIC
        installed          => TEXT
        note               => TEXT
        gatewayid          => INTEGER
        monitor            => TEXT: monitor, no monitor, monitor+sms, monitor no alert

        • Result - the SOAP reply will either:
          • 'OK :[new basestation id]' - to confirm successful processing
          • error message

        • modifyBasestation - this function is used to modify customer Basestation details
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        basestationid      => INTEGER (required)
        equipid            => INTEGER (required)
        siteid             => INTEGER
        sector             => TEXT
        direction          => TEXT
        colour             => TEXT
        frequency          => NUMERIC
        installed          => TEXT
        note               => TEXT
        gatewayid          => INTEGER
        monitor            => TEXT: monitor, no monitor, monitor+sms, monitor no alert

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message

        • deleteBasestation - this function is used to delete customer Basestation details
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        basestationid      => INTEGER (required)

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message

        • payInvoice - this function is used to pay specific Invoice based on Invoice Number provided
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        invoiceNo          => INTEGER (required)
        amount             => INTEGER (required)
        paymentDate        => DATE: YYYY-MM-DD (if not specified current date is used)
        paymentType        => TEXT (required): direct debit, cash, cheque, online transfer, credit card, debit card, standing order
        narrative          => TEXT (optional)

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message

        • listRADIUSdetails - this function is used to list a username and password details to a RADIUS server associated to the customer's account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        customerid         => INTEGER (optional): when used RADIUS usernames of specified customer will be returned
        username           => TEXT (optional): when used RADIUS usernames of specified username will be returned
        password           => TEXT (optional): when used RADIUS usernames of specified password will be returned
        priority           => TEXT (optional): when used RADIUS usernames of specified priority will be returned
        existing_radius_username    => TEXT (required): when used RADIUS usernames of specified existing_radius_username will be returned

        • Result - the SOAP reply will either:
          • XML containing data
          • error message
          • REST Format Example
        {
           "ip" : "78.133.203.161",
           "result" : {
              "radius_usernames" : [
                 {
                    "priority" : "5",
                    "password" : "875-9700",
                    "customerid" : "2",
                    "exclude_from_auto_group_from_bucket" : null,
                    "id" : "2",
                    "username" : "GuestMarquette"
                 }
              ],
              "results" : [
                 [
                    "1"
                 ]
              ]
           }
        }

        • addRADIUSdetails - this function is used to add a username and password details to a RADIUS server associated to the customer's account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        customerid         => INTEGER (required)
        radius_username    => TEXT (required)
        radius_password    => TEXT (optional, can be left blank if required)
        radius_priority    => INTEGER (optional, defines sort order)
        existing_radius_username    => TEXT (optional): instead of customer ID

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message
        • deleteRADIUSdetails - this function is used to delete a username and password details from a RADIUS server associated to the customer's account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        radius_username    => TEXT (required)

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message
        • addSalesmanTask - this function is used to add salesman issue to the database
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        custId             => INTEGER(required)
        date_reported      => DATE(required) - format YYYY-MM-DD
        description        => TEXT(required)
        type               => TEXT(required)
        date_closed        => DATE(optional) - format YYYY-MM-DD)
        hours_spent        => NUMBER(optional)
        value              => NUMBER(optional)
        priority           => INTEGER(optional): 1,2,3,4 or 5
        status             => TEXT(optional): open, closed, waiting for customer
        var                => TEXT(optional): name of Value Added Reseller that exists in the database
        rsm                => TEXT(optional): name of Regional Sales Manager that exists in the database
        ma                 => TEXT(optional): name of Master Agent that exists in the database
        salesman           => TEXT(optional): name of Salesman that exists in the database
        resolution         => TEXT(optional)
            


        • Result - the SOAP reply will either:
          • 'OK:<ISSUEID>' - to confirm successful processing
          • error message
        • modifySalesmanTask - this function is used to modify salesman issue to the database
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        custId             => INTEGER(required)
        issueId            => INTEGER(required)
        date_reported      => DATE(required) - format YYYY-MM-DD
        description        => TEXT(required)
        type               => TEXT(required)
        date_closed        => DATE(optional) - format YYYY-MM-DD)
        hours_spent        => NUMBER(optional)
        value              => NUMBER(optional)
        priority           => INTEGER(optional): 1,2,3,4 or 5
        status             => TEXT(optional): open, closed, waiting for customer
        var                => TEXT(optional): name of Value Added Reseller that exists in the database
        rsm                => TEXT(optional): name of Regional Sales Manager that exists in the database
        ma                 => TEXT(optional): name of Master Agent that exists in the database
        salesman           => TEXT(optional): name of Salesman that exists in the database
        resolution         => TEXT(optional)
        updateresolution   => TEXT(optional): if non-zero then resolution will be appended instead of being overwritten    


        • Result - the SOAP reply will either:
          • 'OK:<ISSUEID>' - to confirm successful processing
          • error message
        • deleteSalesmanTask - this function is used to delete salesman issue from the database
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        issueId            => INTEGER(required)   


        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message

        • updateBucketsFromSubscription - this function is used to execute a routine that will update customer buckets (and RADIUS details) based on the subscriptions attached to the account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        customerid         => INTEGER (optional, limits operation to one account only)
        force              => boolean [0 or 1] - if specified it will force the RADIUS group recalculation even if the bucket has not been changed for the account - enabling new RADIUS accounts to pick up bucket settings, but wiping out all custom changes made to the radius groups

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message


        • checkExistingEmail - this function is used to check whether customer account with email address supplied already exists in SIMPler system.
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        email              => EMAIL ADDRESS (required)

        • Result - the SOAP reply will either:
          • 0 - customer account with supplied email does not exist
          • <customerid> - customer ID of found customer
          • error message


        • addCustomerNote - this function is used to add Customer Note to the existing customer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)
        note_title         => TEXT (required)
        note_text          => TEXT (required)


        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message


        • getActiveSubscriptionData - this function is used to get Active Subscription from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)


        • Result - the SOAP reply will either:
          • XML containing data
          • error message


        • deleteSubscription - this function is used to delete an existing Subscription entry.
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has muiltiple databases
        subscriptionid     => INTEGER (required): ID of subscription that is to be deleted
        update_wib_files   => BOOLEAN: toggles wib update on subscription change for operators using buckets from subscriptions feature
        deleteActiveProductId => INTEGER (optional): productid of an active product to be deleted from customer subscriptions


        • Result - the SOAP reply will either:
          • OK' - to confirm successful processing, OR 
          • error message


        • getMaintenanceData - this function is used to get Maintenance Data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)


        • Result - the SOAP reply will either:
          • XML containing data
          • error message


        • getInvoicesData - this function is used to get Invoices Data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)


        • Result - the SOAP reply will either:
          • XML containing data
          • error message

        • getCustomerData - this function is used to get  Customer Data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)
        ip                 => 1  (optional): to retrieve IP details,
        cpe                => 1  (optional): to retrieve CPE details,
        creditcard         => 1  (optional): to retrieve Credit Card details,
        eft                => 1  (optional): to retrieve EFT details,
        subscription       => 1  (optional): to retrieve Subscription details,    
        maintenance        => 1  (optional): to retrieve Maintenance details,
        invoices           => 1  (optional): to retrieve Invoices details
        usage              => 1  (optional): to retrieve Customer Traffic Usage details
        statement          => 1  (optional): to retrieve Customer summary Statement
        customFields       => 1  (optional): to retrieve Customer custom fields


        • Result - the SOAP reply will either:
          • XML containing data
          • error message
            • REST Format Example
        {
           "ip" : "127.0.0.1",
           "result" : {
              "customer" : {
                 "installdate" : "2011-03-01",
                 "website" : "",
                 "installstreet" : "",
                 "street" : "Cieszynska 146",
                 "startdate" : "2011-03-01",
                 "town" : "London",
                 "state" : "",
                 "installzip" : "",
                 "frequency" : "1",
                 "email" : "",
                 "supportemail" : "",
                 "id" : "27904",
                 "name" : "Maciej Gawlowski",
                 "customerstatus2" : "",
                 "installstreet2" : "",
                 "zip" : "3",
                 "invoicingid" : "mgawlowskiXYZ193",
                 "installtown" : "",
                 "street2" : "Dom 4",
                 "customerstatus3" : "",
                 "type" : "customer home",
                 "county" : "43-428",
                 "wibnumber" : "",
                 "init_date" : "2011-03-01",
                 "status" : "potential",
                 "fax" : "",
                 "vat_exemption" : "No",
                 "paymentmethod" : "direct debit",
                 "country" : "Poland",
                 "installstate" : "",
                 "nickname" : "mgawlowskiXYZ193",
                 "customerstatus1" : "potential",
                 "gpsx" : "",
                 "customer_tracking" : "",
                 "phone" : "",
                 "note" : "",
                 "customerstatus5" : "",
                 "accountsemail" : "",
                 "gpsy" : "",
                 "sendmethod" : "pdf",
                 "customerstatus4" : "",
                 "installcounty" : "",
                                "value_added_reseller_id":",
                                "value_added_reseller":"",
                                "master_agent_id":"",
                                "master_agent":"",
                                "salesman_id":"1",
                                "salesman":"Dennis Soap",
                                "regional_sales_manager_id",
                                "regional_sales_manager",
              }
           }
        }



        • getCustomerStatuses - this function is used to get  Customer Data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database

        • Result - the JSON reply will either:
          • Error message
          • Generation Result
            • SOAP Format Example
        getCustomerStatuses: <customerStatusesRoot>  <array>contract</array>
          <array>current</array>
          <array>enquiry</array>
          <array>installed</array>
          <array>migrated</array>
          <array>Nowy Status</array>
          <array>post</array>
          <array>potential</array>
          <array>simply failed</array>
          <array>survey failed</array>
          <array>unused</array>
          <array>waiting for install</array>
          <array>waiting for survey</array>
          <array>Web Request</array>
          <labels Nowy Status="Nowy Status" Web Request="Web Request" contract="contract" current="Current" enquiry="enquiry" installed="installed" migrated="migrated" post="Disconnected" potential="potential" simply failed="simply failed" survey failed="survey failed" unused="unused" waiting for install="waiting for install" waiting for survey="waiting for survey" />
          <substatus_hash name="post" default="" labels="Reason">
            <values></values>
            <values>affordability (no longer want BB)</values>
            <values>competitor</values>
            <values>competitor price</values>
            <values>competitor product</values>
            <values>non payment</values>
            <values>price</values>
            <values>signal</values>
            <values>relocation (no service)</values>
            <values>other</values>
            <values>Price Increase</values>
            <values>response to service issues</values>
          </substatus_hash>
          <substatus_hash name="survey failed" default="" labels="">
            <values>No LOS/Signal</values>
            <values>Out of Area</values>
            <values>Failed Payment</values>
            <values>Contract</values>
            <values>Aesthetics</values>
            <values>AP Full</values>
            <values>Other-Changed Mind</values>
          </substatus_hash>
          <substatus_hash name="waiting for install" default="3" labels="Priority">
            <values>1</values>
            <values>2</values>
            <values>3</values>
            <values>4</values>
            <values>5</values>
          </substatus_hash>
          <substatus_hash name="waiting for survey" default="3" labels="Priority">
            <values>1</values>
            <values>2</values>
            <values>3</values>
            <values>4</values>
            <values>5</values>
          </substatus_hash>
        </customerStatusesRoot>


        • REST Format Example
        {
           "ip" : "127.0.0.1",
           "result" : {
              "array" : [
                 "contract",
                 "current",
                 "enquiry",
                 "installed",
                 "migrated",
                 "Nowy Status",
                 "post",
                 "potential",
                 "simply failed",
                 "survey failed",
                 "unused",
                 "waiting for install",
                 "waiting for survey",
                 "Web Request"
              ],
              "substatus_hash" : {
                 "survey failed" : {
                    "default" : null,
                    "values" : [
                       "No LOS/Signal",
                       "Out of Area",
                       "Failed Payment",
                       "Contract",
                       "Aesthetics",
                       "AP Full",
                       "Other-Changed Mind"
                    ],
                    "labels" : null
                 },
                 "waiting for survey" : {
                    "default" : "3",
                    "values" : [
                       "1",
                       "2",
                       "3",
                       "4",
                       "5"
                    ],
                    "labels" : "Priority"
                 },
                 "post" : {
                    "default" : null,
                    "values" : [
                       "",
                       "affordability (no longer want BB)",
                       "competitor",
                       "competitor price",
                       "competitor product",
                       "non payment",
                       "price",
                       "signal",
                       "relocation (no service)",
                       "other",
                       "Price Increase",
                       "response to service issues"
                    ],
                    "labels" : "Reason"
                 },
                 "waiting for install" : {
                    "default" : "3",
                    "values" : [
                       "1",
                       "2",
                       "3",
                       "4",
                       "5"
                    ],
                    "labels" : "Priority"
                 }
              },
              "labels" : {
                 "contract" : "contract",
                 "waiting for survey" : "waiting for survey",
                 "potential" : "potential",
                 "installed" : "installed",
                 "post" : "Disconnected",
                 "waiting for install" : "waiting for install",
                 "simply failed" : "simply failed",
                 "enquiry" : "enquiry",
                 "survey failed" : "survey failed",
                 "migrated" : "migrated",
                 "current" : "Current",
                 "unused" : "unused",
                 "Web Request" : "Web Request",
                 "Nowy Status" : "Nowy Status"
              }
           }
        }

        • getEFTData - this function is used to get EFT data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)


        • Result - the SOAP reply will either:
          • XML containing data
          • error message
        • getIPData - this function is used to get IP data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)


        • Result - the SOAP reply will either:
          • XML containing data
          • error message
        • getCreditCardData - this function is used to get Credit Card Data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (required)


        • Result - the SOAP reply will either:
          • XML containing data
          • error message
        • getCPEData - this function is used to get CPE Data from customer account
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database

        customerid         => INTEGER (optional)
        equipid            => INTEGER (optional)
        nickname           => TEXT (optional)
        ipaddress          => TEXT (optional)
        serialnumber       => TEXT (optional)
        macaddress         => TEXT (optional)

        • Result - the SOAP reply will either:
          • XML containing data
          • error message
        • getProducts - this function is used to get Products Data 
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        productid          => INTEGER or ARRAY (of INTEGERS) (optional)
        • Result - the SOAP reply will either:
          • XML containing data
          • error message
        • searchCustomer - this function is used to search for customer accounts
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        customerid         => INTEGER (optional): search on customerid
        firstname          => TEXT (optional): search on firstname field (i.e. first part of customer name split at the first white space)
        lastname           => TEXT (optional): search on lastname field (i.e. second part of customer name split at the first white space)
        nickname           => TEXT (optional): search on state field
        invoicingid        => TEXT (optional): search on state field
        email              => TEXT (optional)search on customer email field
        phone              => TEXT (optional)search on customer phone field
        customerstatus     => TEXT (optional)search on customer status field, statuses as used in SIMPLer:
        • contract
        • current
        • installed
        • post
        • potential
        • survey failed
        • unused
        • waiting for install
        • waiting for survey
        street1            => TEXT (optional)search on customer street 1 field
        street2            => TEXT (optional): search on customer street 2 field
        city               => TEXT (optional): search on customer city field
        county             => TEXT (optional): search on country field
        postcode           => TEXT (optional): search on post code/zip code field
        state              => TEXT (optional): search on state field
        country            => TEXT (optional): search on country field
        limit              => INTEGER (optional): limit output to X records - defaults to 20
        offset             =>
         INTEGER (optional): says to skip that many rows before beggining to return rews
        case_sensitive     => INTEGER (optional): by default searches are case insensitive, if set to 1 - searches will be case sensitive
        order              => TEXT (optional): field defines sorting field (firstname, lastname). DEFAULT: customerid

        • Result - the SOAP reply will either:
          • XML containing data
          • error message

        Example XML Output - note that there are additional data returned apart from customer records that cover query details - such as number of results, limit applied, offset applied, order used to sort results, case_sensitivity option used.


        <customerSearchRoot>  

          <case_sensitive>0</case_sensitive>
          <customer id="27738">
            <city>Pogwizdow</city>
            <country>Albania</country>
            <county></county>
            <customerid>27738</customerid>
            <customerstatus>post</customerstatus>
            <email>maciej.gawlowski@gmail.com</email>
            <firstname>Maciej</firstname>
            <lastname>2 Gawlowski</lastname>
            <phone>606473915</phone>
            <postcode>43-418</postcode>
            <state>Alaska</state>
            <street1>Cieszynska 146</street1>
            <street2></street2>
          </customer>
          <customer id="27739">
            <city>Pogwizdow</city>
            <country>Afghanistan</country>
            <county></county>
            <customerid>27739</customerid>
            <customerstatus>post</customerstatus>
            <email>maciej.gawlowski@gmail.com</email>
            <firstname>Maciej</firstname>
            <lastname>3 Gawlowski</lastname>
            <phone>606473915</phone>
            <postcode>43-418</postcode>
            <state>Alaska</state>
            <street1>Cieszynska 146</street1>
            <street2></street2>
          </customer>
          <customer id="27827">
            <city>Not Collected</city>
            <country>Poland</country>
            <county></county>
            <customerid>27827</customerid>
            <customerstatus>current</customerstatus>
            <email>maciej.gawlowski@gmail.com</email>
            <firstname>Maciej</firstname>
            <lastname>Gawlowski</lastname>
            <phone></phone>
            <postcode>50-535</postcode>
            <state></state>
            <street1>Not Collected</street1>
            <street2></street2>
          </customer>
          <customer id="27784">
            <city>Not Collected</city>
            <country>United States</country>
            <county></county>
            <customerid>27784</customerid>
            <customerstatus>post</customerstatus>
            <email></email>
            <firstname>Maciej</firstname>
            <lastname>Gawlowski</lastname>
            <phone>606473915</phone>
            <postcode></postcode>
            <state></state>
            <street1>Not Collected</street1>
            <street2></street2>
          </customer>
          <customer id="27831">
            <city>Wroclaw</city>
            <country>Poland</country>
            <county></county>
            <customerid>27831</customerid>
            <customerstatus>post</customerstatus>
            <email>maciej.gawlowski@gmail.com</email>
            <firstname>Maciej</firstname>
            <lastname>Gawlowski</lastname>
            <phone>606473915</phone>
            <postcode>50-536</postcode>
            <state>Maryland</state>
            <street1>Not Collected</street1>
            <street2></street2>
          </customer>
          <limit>5</limit>
          <offset>0</offset>
          <order>lastname</order>
          <results>307</results>
        </customerSearchRoot>


        • synchronizeCustomerAttachments - this function is used to snchronize customer attachments with the FTP server
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        customerid         => INTEGER (required)
        filenameregexp     => TEXT (required): if defined only files that match the regexp will be processed by the script
        description        => TEXT (required): to specify what description should be used for all new files added
        rights             => TEXT (required): to specify rights required - field must be in pgsql ARRAY format allowed rights are: billing information, maintenance, network information, sales tracking  i.e. {"billin information", "maintenance"}
        mode               => TEXT (optional): 'electronic_document'

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message


        • synchronizeMaintenanceAttachments - this function is used to snchronize maintenance attachments with the FTP server
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple databases
        issuenumber        => INTEGER (required)
        filenameregexp     => TEXT (required): if defined only files that match the regexp will be processed by the script
        description        => TEXT (required): to specify what description should be used for all new files added
        dateadded          => TEXT (required): date added

        • Result - the SOAP reply will either:
          • 'OK' - to confirm successful processing
          • error message


        • addCommunityCode - this function is used to add Community Codes to a dedicated table in SIMPLer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        code               => TEXT (required)

        • Result - the SOAP reply will either:
          • 'OK'
          • contain error message (i.e. code already exist message)


        • modifyCommunityCode - this function is used to modify existing Community Codes in a dedicated table in SIMPLer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        code               => TEXT (required)
        new_code           => TEXT (required)

        • Result - the SOAP reply will either:
          • 'OK'
          • contain error message (i.e. code already exist message)


        • deleteCommunityCode - this function is used to delete existing Community Codes in a dedicated table in SIMPLer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        code               => TEXT (required)

        • Result - the SOAP reply will either:
          • 'OK'
          • contain error message (i.e. code already exist message)


        • listCommunityCode - this function is used to delete existing Community Codes in a dedicated table in SIMPLer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database

        • Result - the SOAP reply will will come in following XML formatted output:
        <customerSearchRoot>  <code>Code 1 via API Modified</code>
          <code>Code 1 via API</code>
          <code>Community Code 4</code>
          <code>Community Code 3</code>
          <code>Community Code 2</code>
          <code>Community Code 1 Default</code>
          <results>6</results>


        • addSubaccount - this function is used to add Subaccount to Master Account in SIMPLer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        masterCustomerId   => TEXT (required)
        subCustomerId      => TEXT (required)
        master_display_subaccount_invoices              => BOOLEAN: 't' or 'f'
        master_display_subaccount_usage                 => BOOLEAN: 't' or 'f'
        subaccount_display_master_invoices              => BOOLEAN: 't' or 'f'
        subaccount_synchronization_customerstatus       => BOOLEAN: 't' or 'f'
        subaccount_synchronization_usage_allowance      => BOOLEAN: 't' or 'f'
        master_allow_eup_relogin                        => BOOLEAN: 't' or 'f'
        subaccount_invoice_from_master                  => BOOLEAN: 't' or 'f'
        subaccount_invoice_from_master_prorate          => VALUE: '1' or '2' or '3' where 1 - No Prorate, 2 - Prorate Option A, 3 - Prorate Option 3

        • Result - the SOAP reply will either:
          • 'OK'
          • contain error message (i.e. code already exist message)
        • updateSubaccount - this function is used to update Subaccount to Master Account in SIMPLer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        masterCustomerId   => TEXT (required)
        subCustomerId      => TEXT (required)
        master_display_subaccount_invoices              => BOOLEAN: 't' or 'f'
        master_display_subaccount_usage                 => BOOLEAN: 't' or 'f'
        subaccount_display_master_invoices              => BOOLEAN: 't' or 'f'
        subaccount_synchronization_customerstatus       => BOOLEAN: 't' or 'f'
        subaccount_synchronization_usage_allowance      => BOOLEAN: 't' or 'f'
        master_allow_eup_relogin                        => BOOLEAN: 't' or 'f'
        subaccount_invoice_from_master                  => BOOLEAN: 't' or 'f'
        subaccount_invoice_from_master_prorate          => VALUE: '1' or '2' or '3' where 1 - No Prorate, 2 - Prorate Option A, 3 - Prorate Option 3

        • Result - the SOAP reply will either:
          • 'OK'
          • contain error message (i.e. code already exist message)

        • deleteSubaccount - this function is used to delete Subaccount from Master Account in SIMPLer
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        masterCustomerId   => TEXT (required)
        subCustomerId      => TEXT (required)

        • Result - the SOAP reply will either:
          • 'OK'
          • contain error message (i.e. code already exist message)

        • generateIP - this function is used to generate an IP (or a set of IP addresses) in SIMPLer.
          • Attributes - any set constructed from below can be used as long as the required set is provided
        api_username       => TEXT (required)
        api_password       => TEXT (required)
        operator           => TEXT (optional): to specify the database in case an operator has multiple database
        quantity           => TEXT (optional): number of IP addresses that are to be generated. If not defined it will default to 1

        customerid         => TEXT (required): defines customer for whom IP addresses are to be generated
        iptype             => TEXT (optional): override customers IP type for generation 
        interface_id       => INTEGER (optional): specify interface to generate IP from 
        saveInDb           => TEXT (optional): if defined - generated IP addresses will automatically be saved to customer account 
        syncRADIUS         => TEXT (optional): if defined - generated IP addresses will automatically be assigned to customer radius accounts and RADIUS server will be updated accordingly (Note: saveInDb attribute must be present)
        updateWIB          => TEXT (optional): if defined - WIB will be updated with new IP addresses (Note: saveInDb attribute must be present)
        updateMAConEUPLogin => BOOLEAN: 1 - Allow to auto - update MAC on EUP login ON, 0 - Allow to auto - update MAC on EUP login OFF

        • Result - the JSON reply will either:
          • Error message
          • Generation Result
            • SOAP Format Example
        <customerSearchRoot>
          <gatewayid>1</gatewayid>
          <generated>10</generated>
          <interfaceid>20</interfaceid>
          <ip>192.168.99.68</ip>
          <ip>192.168.99.69</ip>
          <ip>192.168.99.70</ip>
          <ip>192.168.99.71</ip>
          <ip>192.168.99.72</ip>
          <ip>192.168.99.73</ip>
          <ip>192.168.99.74</ip>
          <ip>192.168.99.75</ip>
          <ip>192.168.99.76</ip>
          <ip>192.168.99.77</ip>
          <iptype>Public</iptype>
          <quantity>10</quantity>
          <wibnumber>100</wibnumber>
        </customerSearchRoot>

              • REST Format Example

        {
           "ip" : "192.168.150.1",
           "result" : {
              "wibnumber" : "100",
              "iptype" : "Public",
              "ip" : [
                 "192.168.99.58",
                 "192.168.99.59",
                 "192.168.99.60",
                 "192.168.99.61",
                 "192.168.99.62",
                 "192.168.99.63",
                 "192.168.99.64",
                 "192.168.99.65",
                 "192.168.99.66",
                 "192.168.99.67"
              ],
              "quantity" : "10",
              "gatewayid" : "1",
              "generated" : 10,
              "interfaceid" : [
                 "20"
              ]
           }
        }

                                                        • getInterfaceData - this function is used to get a list of gateway interfaces
                                                          • Attributes - any set constructed from below can be used as long as the required set is provided
                                                        api_username       => TEXT (required)
                                                        api_password       => TEXT (required)
                                                        operator           => TEXT (optional): to specify the database in case an operator has multiple database
                                                        quantity           => TEXT (optional): number of IP addresses that are to be generated. If not defined it will default to 1

                                                        id                 => TEXT (optional): interface ID
                                                        gatewayid          => TEXT (optional): gateway ID

                                                        • Result - the JSON reply will either:
                                                          • Error message
                                                          • Generation Result
                                                            • REST Format Example
                                                        {
                                                           "ip" : "127.0.0.1",
                                                           "result" : {
                                                              "interfaces" : [
                                                                 {
                                                                    "networkaddress" : "10.10.10.0",
                                                                    "broadcast" : "10.10.10.255",
                                                                    "startip" : "10.10.10.10",
                                                                    "gatewayid" : "1",
                                                                    "interface" : "eth1",
                                                                    "numberip" : "10",
                                                                    "label" : "",
                                                                    "id" : "18",
                                                                    "role" : "Canopy",
                                                                    "mask" : "255.255.255.0",
                                                                    "gwaddress" : "10.10.10.1"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "11.11.11.0",
                                                                    "broadcast" : "11.11.11.255",
                                                                    "startip" : "11.11.11.11",
                                                                    "gatewayid" : "1",
                                                                    "interface" : "eth1",
                                                                    "numberip" : "1",
                                                                    "label" : "",
                                                                    "id" : "19",
                                                                    "role" : "Canopy",
                                                                    "mask" : "255.255.255.0",
                                                                    "gwaddress" : "11.11.11.1"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "172.16.7.0",
                                                                    "broadcast" : "172.16.7.255",
                                                                    "startip" : "172.16.7.201",
                                                                    "gatewayid" : "1",
                                                                    "interface" : "eth1",
                                                                    "numberip" : "12",
                                                                    "label" : "Test label",
                                                                    "id" : "12",
                                                                    "role" : "Public",
                                                                    "mask" : "255.255.255.0",
                                                                    "gwaddress" : "172.16.7.1"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "71.255.145.192",
                                                                    "broadcast" : "71.255.145.223",
                                                                    "startip" : "71.255.145.194",
                                                                    "gatewayid" : "3",
                                                                    "interface" : "LAN1",
                                                                    "numberip" : "27",
                                                                    "label" : "FP EDIA 71.255.158.118",
                                                                    "id" : "22",
                                                                    "role" : "Public",
                                                                    "mask" : "255.255.255.224",
                                                                    "gwaddress" : "71.255.145.193"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "172.16.9.128",
                                                                    "broadcast" : "172.16.9.191",
                                                                    "startip" : "172.16.9.130",
                                                                    "gatewayid" : "2",
                                                                    "interface" : "eth1",
                                                                    "numberip" : "2",
                                                                    "label" : "",
                                                                    "id" : "16",
                                                                    "role" : "Customer",
                                                                    "mask" : "255.255.255.192",
                                                                    "gwaddress" : "172.16.9.129"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "80.100.100.0",
                                                                    "broadcast" : "80.100.100.255",
                                                                    "startip" : "80.100.100.2",
                                                                    "gatewayid" : "2",
                                                                    "interface" : "eht0",
                                                                    "numberip" : "253",
                                                                    "label" : "Publics for Testing",
                                                                    "id" : "55",
                                                                    "role" : "Public",
                                                                    "mask" : "255.255.255.0",
                                                                    "gwaddress" : "80.100.100.1"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "192.168.99.0",
                                                                    "broadcast" : "192.168.99.255",
                                                                    "startip" : "192.168.99.2",
                                                                    "gatewayid" : "1",
                                                                    "interface" : "eth1",
                                                                    "numberip" : "252",
                                                                    "label" : "",
                                                                    "id" : "20",
                                                                    "role" : "Public",
                                                                    "mask" : "255.255.255.0",
                                                                    "gwaddress" : "192.168.99.1"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "172.16.8.0",
                                                                    "broadcast" : "172.16.9.255",
                                                                    "startip" : "172.16.8.190",
                                                                    "gatewayid" : "2",
                                                                    "interface" : "eth1",
                                                                    "numberip" : "100",
                                                                    "label" : "One Canopy range",
                                                                    "id" : "13",
                                                                    "role" : "Canopy",
                                                                    "mask" : "255.255.128.0",
                                                                    "gwaddress" : "172.16.8.1"
                                                                 },
                                                                 {
                                                                    "networkaddress" : "10.10.10.10",
                                                                    "broadcast" : "10.10.10.9",
                                                                    "startip" : "10.10.10.2",
                                                                    "gatewayid" : "3",
                                                                    "interface" : "LAN2",
                                                                    "numberip" : "100",
                                                                    "label" : "Nothing",
                                                                    "id" : "21",
                                                                    "role" : "Public",
                                                                    "mask" : "255.255.255.192",
                                                                    "gwaddress" : "10.10.10.1"
                                                                 }
                                                              ]
                                                           }
                                                        }

                                                        • getOverageAllowances - this function is used to get a list overage allowances
                                                          • Attributes - any set constructed from below can be used as long as the required set is provided
                                                        api_username       => TEXT (required)
                                                        api_password       => TEXT (required)
                                                        operator           => TEXT (optional): to specify the database in case an operator has multiple database

                                                        cutomerid          => TEXT (optional): customer ID
                                                        date_from          => TEXT (optional): date from (inclusive)
                                                        date_to            => TEXT (optional): date to (inclusive)

                                                        • Result - the JSON reply will either:
                                                          • Error message
                                                          • Generation Result
                                                          • REST Format Example
                                                        {
                                                           "ip" : "127.0.0.1",
                                                           "result" : {
                                                              "interfaces" : [
                                                                 {
                                                                    "timestamp" : "2018-07-21 02:05:39.637192",
                                                                    "invoiceid" : "",
                                                                    "used" : "",
                                                                    "customerid" : "698",
                                                                    "method" : "",
                                                                    "id" : "7174",
                                                                    "traffic_limit" : "6"
                                                                 }
                                                              ]
                                                           }
                                                        }

                                                        • customerRadius - this function is used to manipulate (list, add, modify, delete) customer RADIUS tables i.e. radcheck, radreply.
                                                          • Attributes - any set constructed from below can be used as long as the required set is provided
                                                        api_username       => TEXT (required)
                                                        api_password       => TEXT (required)
                                                        operator           => TEXT (optional): to specify the database in case an operator has multiple database

                                                        table              => TEXT (required)[radcheck, radreply, usergroup, radusergroup]: specifies which radius table should be updated. Should be either radcheck, radreply or usergroup (radusergroup on some servers).
                                                        action             => TEXT (required)[list,add,modify,delete]: specifies what action we want to execute on the table.
                                                        • list - use this action to list all entries related to either all usernames associated with a SIMPLer customer or with a specified username
                                                        • add - use this action to add new 
                                                        • modify - 
                                                        • delete - 
                                                        customerid         => TEXT (required): 

                                                        username           => TEXT (optional): 
                                                        attribute          => INTEGER (optional): 
                                                        op                 => TEXT (optional): 
                                                        value              => TEXT (optional): 


                                                        • Result - the JSON reply will either:
                                                          • Error message
                                                          • Generation Result
                                                            • SOAP Format Example
                                                              • list

                                                              • add

                                                              • delete

                                                              • modify

                                                              • REST Format Example
                                                                • for add / delete / modify
                                                        {
                                                            "ip": "192.168.150.1",
                                                            "result": {
                                                                "table": "radcheck",
                                                                "action": "add",
                                                                "result": "OK"
                                                            }
                                                        }

                                                                • list
                                                        {
                                                            "ip": "192.168.150.1",
                                                            "result": {
                                                                "table": "radcheck",
                                                                "action": "list",
                                                                "results": [
                                                                    {
                                                                        "attribute": "Cleartext-Password",
                                                                        "value": "0ac5ae06a2ec2",
                                                                        "customerid": "27939",
                                                                        "id": "4270",
                                                                        "op": ":=",
                                                                        "username": "ts_telrad_autopro"
                                                                    },
                                                                    {
                                                                        "attribute": "filter-id",
                                                                        "value": "firewall-filter",
                                                                        "customerid": "27939",
                                                                        "id": "4273",
                                                                        "op": "==",
                                                                        "username": "ts_telrad_autopro"
                                                                    },
                                                                ]
                                                            }
                                                        }

                                                        • listRadiusSessions - this function is used to manipulate (list, add, modify, delete) customer RADIUS tables i.e. radcheck, radreply.
                                                          • Attributes - any set constructed from below can be used as long as the required set is provided
                                                        api_username       => TEXT (required)
                                                        api_password       => TEXT (required)
                                                        operator           => TEXT (optional): to specify the database in case an operator has multiple database
                                                        customerid         => TEXT (optional)
                                                        username           => TEXT (optional)

                                                        • Result - the JSON reply will either:
                                                          • Error message
                                                          • Generation Result
                                                            • SOAP Format Example
                                                              • list via customerid
                                                        curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"17"}' http://server.azotel.com/restapi/listRadiusSessions

                                                        or

                                                        curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","customerid":"17"}' http://server.azotel.com/restapi/API/listRadiusSessions

                                                        • list via username
                                                        curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","username":"RADIUSUSERNAME"}' http://server.azotel.com/restapi/API/listRadiusSessions

                                                        or

                                                        curl -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"api_username":"username","api_password":"password","operator":"operator","username":"RADIUSUSERNAME"}' http://server.azotel.com/restapi/API/listRadiusSessions

                                                              • REST Format Example
                                                        {
                                                           "ip" : "188.121.16.66",
                                                           "result" : {
                                                              "radius_sessions" : [
                                                                 {
                                                                    "acctoutputoctets" : "116513067944",
                                                                    "acctsessiontime" : "9817273",
                                                                    "acctstarttime_display" : "2018-03-03 18:33:24",
                                                                    "acctinputoctets" : "9293410279",
                                                                    "acctsessionid" : "8130ba19",
                                                                    "nasipaddress" : "37.48.225.24",
                                                                    "acctsessiontime_display" : "113 day(s) 15h 01m 13s ",
                                                                    "acctstoptime" : null,
                                                                    "framedipaddress" : "37.48.226.202",
                                                                    "framedipv6prefix" : null,
                                                                    "callingstationid" : "04:18:D6:FA:58:0C",
                                                                    "radacctid" : "2828389",
                                                                    "acctinputoctets_display" : "8.7 GB",
                                                                    "username" : "USERNAME",
                                                                    "acctstarttime" : "2018-03-03 18:33:24+00",
                                                                    "acctsessionid_display" : "8130ba19",
                                                                    "customerid" : "1791",
                                                                    "acctstoptime_display" : "",
                                                                    "acctoutputoctets_display" : "108.5 GB"
                                                                 },
                                                                 {
                                                                    "acctoutputoctets" : "16392279807",
                                                                    "acctsessiontime" : "831656",
                                                                    "acctstarttime_display" : "2018-02-22 03:31:53",
                                                                    "acctinputoctets" : "1104564354",
                                                                    "acctsessionid" : "8130a337",
                                                                    "nasipaddress" : "37.48.225.24",
                                                                    "acctsessiontime_display" : "9 day(s) 15h 00m 56s ",
                                                                    "acctstoptime" : "2018-03-03 18:32:49+00",
                                                                    "framedipaddress" : "37.48.226.202",
                                                                    "framedipv6prefix" : null,
                                                                    "current" : 1,
                                                                    "callingstationid" : "04:18:D6:FA:58:0C",
                                                                    "radacctid" : "2756919",
                                                                    "acctinputoctets_display" : "1.0 GB",
                                                                    "username" : "USERNAME",
                                                                    "acctstarttime" : "2018-02-22 03:31:53+00",
                                                                    "acctsessionid_display" : "8130a337",
                                                                    "customerid" : "1791",
                                                                    "acctstoptime_display" : "2018-03-03 18:32:49",
                                                                    "acctoutputoctets_display" : "15.3 GB"
                                                                 },
                                                                 {
                                                                    "acctoutputoctets" : "49909954754",
                                                                    "acctsessiontime" : "3632990",
                                                                    "acctstarttime_display" : "2018-01-11 02:11:11",
                                                                    "acctinputoctets" : "2725956511",
                                                                    "acctsessionid" : "81304cb3",
                                                                    "nasipaddress" : "37.48.225.24",
                                                                    "acctsessiontime_display" : "42 day(s) 01h 09m 50s ",
                                                                    "acctstoptime" : "2018-02-22 03:21:01+00",
                                                                    "framedipaddress" : "37.48.226.202",
                                                                    "framedipv6prefix" : null,
                                                                    "current" : 1,
                                                                    "callingstationid" : "04:18:D6:FA:58:0C",
                                                                    "radacctid" : "2532410",
                                                                    "acctinputoctets_display" : "2.5 GB",
                                                                    "username" : "USERNAME",
                                                                    "acctstarttime" : "2018-01-11 02:11:11+00",
                                                                    "acctsessionid_display" : "81304cb3",
                                                                    "customerid" : "1791",
                                                                    "acctstoptime_display" : "2018-02-22 03:21:01",
                                                                    "acctoutputoctets_display" : "46.5 GB"
                                                                 },
                                                                 {
                                                                    "acctoutputoctets" : "3619460",
                                                                    "acctsessiontime" : "35099",
                                                                    "acctstarttime_display" : "2018-01-11 02:11:10",
                                                                    "acctinputoctets" : "2953407",
                                                                    "acctsessionid" : "81304cb3",
                                                                    "nasipaddress" : "37.48.225.24",
                                                                    "acctsessiontime_display" : "09h 44m 59s ",
                                                                    "acctstoptime" : "2018-01-11 11:56:09+00",
                                                                    "framedipaddress" : "37.48.226.202",
                                                                    "framedipv6prefix" : null,
                                                                    "current" : 1,
                                                                    "callingstationid" : "04:18:D6:FA:58:0C",
                                                                    "radacctid" : "2529598",
                                                                    "acctinputoctets_display" : "2.8 MB",
                                                                    "username" : "USERNAME",
                                                                    "acctstarttime" : "2018-01-11 02:11:10+00",
                                                                    "acctsessionid_display" : "81304cb3",
                                                                    "customerid" : "1791",
                                                                    "acctstoptime_display" : "2018-01-11 11:56:09",
                                                                    "acctoutputoctets_display" : "3.5 MB"
                                                                 },
                                                              ]
                                                           }
                                                        }



                                                        • checkEUPLogin - this is used to check if the given username / password are valid End User Portal login details. If so the corresponding customer ID will be returned. 
                                                          • Attributes - any set constructed from below can be used as long as the required set is provided
                                                        api_username       => TEXT (required)
                                                        api_password       => TEXT (required)
                                                        operator           => TEXT (optional): to specify the database in case an operator has multiple database

                                                        eup_username       => TEXT (required) The username to check.
                                                        eup_password       => TEXT (required) The password to check. 

                                                        • Result - the SOAP reply will either - note if the username / password do not match "ERROR: invalid username/password" will be returned. 
                                                          • "ERROR: Error message"
                                                          • "OK: nnn" - Where nnn is the customer ID of the matching customer. 
                                                        • Result - the JSON reply will contain the above reply in the "result" attribute. For example:
                                                        {
                                                           "ip" : "92.235.33.179",
                                                           "result" : "OK: 15"
                                                        }



                                                        NOTE: Nickname rules - there should not be ANY special signs (only "_" sign is allowed), no SPACES are allowed, i.e.: "NewCustomer"  or "New_Customer. 

                                                         
                                                        Azotel | River House | Blackpool Park | Cork | Ireland
                                                        US +1-312-239-0680 | IE +353-21-234-8100 | UK +44-207-193-4170 | SA +27-11-083-6900