MOR API

From Kolmisoft Wiki
Revision as of 14:14, 14 March 2008 by Admin (talk | contribs)
Jump to navigationJump to search

MOR API lets other software interact to MOR without knowing internal structure of DB and other logic.

MOR accepts requests by HTML POST and returns result in XML.


Functions

Login

  • login - Logs in user into MOR
  • logout - Logs out user from MOR

Callback

Accounting

  • invoices - Retrieves list of invoices in selected time period.


HTML POST

All requests are in similar format:

HTML POST: http://<SERVER_IP>/mor/api/<function>?u=username&p=password
  • username/password - of the user who is asking for the data.

If user has 'admin' rights - he will get more results and he can perform more actions compared to the user who does not have such rights.


This functionality WILL BE implemented IN THE FUTURE

XML API

API by pages

All pages are requested by POST or GET methods.

Login page

a. Show Login Form
Method: GET (link: /callc/login)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Login page</pagename>
     <language>en</language>
     <error_msg></error_msg>
     <aval_languages>
       <language>en</language>
       <language>ru</language>
     </aval_languages>
   </page>

b. Login
Method: POST (link: /api/login?u=username&p=password)
Params: 2
Returns:
If already OK

   <?xml version="1.0" encoding="utf-8">
    <action>
      <name>login</name>
      <status>ok</status>
      <status_message>Succesfully logged in</status_message> 
    </action>

If something wrong

   <?xml version="1.0" encoding="utf-8">
    <action>
      <name>login</name>
      <status>failed</status>
      <status_message>Error description</status_message> 
    </action>

Main Page

a. Show welcome page
Method: GET (link: /callc/main)
Params: 0
Returns:

 <?xml version="1.0" encoding="UTF-8"?>
 <page>
   <pagename>Main page</pagename>
   <username>Very Important User</username>
   <userid>1</userid>
   <language>en</language>
   <stats>
     <missed_calls>
     <-- in process -->  
     </missed_calls>
     <call_history>
       <calls>
         <call_counts>5</call_counts>
         <period>Month</period>
         <call_duration>00:20:35</call_duration>
       </calls>
       <calls>
         <call_counts>1</call_counts>
         <period>Day</period>
         <call_duration>00:01:35</call_duration>
       </calls>
     </call_history>
     <finances>
       <account>Postpaid</account>
       <balance>100 USD</balance>
       <credit>No Limit</credit>     
     </finances>    
   </stats>
  </page>

Details

a. Show personal details
Method: GET (link: /users/personal_details)
Params: 0
Returns:

 <?xml version="1.0" encoding="UTF-8"?>
 <page>
   <pagename>Personal details</pagename>
   <language>en</language>
   <userid>1</userid>
   <details>
     <main_details>
         <alias>101</alias>
         <account>Postpaid</account>
         <balance>100 USD</balance>
         <credit>No Limit</credit> 
     </main_details>
     <other_details>
         <username>Andrey</username>
         <surname>Mazunin</surname>
         <personalid></personalid>
         <agreement_number></agreement_number>
         <agreement_date>2008-03-11</agreement_date>
         <taxation_country>Uzbekistan</taxation_country>
         <vat_reg_number></vat_reg_number>
         <vat_percent>18.0</vat_percent>
     </other_details>
     <registration>
         <reg_address>Address</reg_address>
         <reg_postcode>700100</reg_postcode>
         <reg_city>Tashkent</reg_city>
         <reg_country>Uzbekistan</reg_country>
         <reg_state></reg_state>
         <reg_direction>Uzbekistan</reg_direction>
         <reg_phone>998975551234</reg_phone>
         <reg_mobile>998975551234</reg_mobile>
         <reg_fax>998975551234</reg_fax>
         <reg_email>admin@voip.com</reg_email>
     </registration>   
 </details>
 </page>

b. Edit personal details Desc: User edit personal details and push "Change" button
Method: POST (link: /users/update_personal_details/%userid%)
Params: 17
Params List: Personal details.png

Returns:
If already OK

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>edit_personal</name>
      <status>ok</status>
      <status_message>Personal details changed</status_message>
    </action>

If something wrong

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>edit_personal</name>
      <status>failed</status>
      <status_message>Error description</status_message>
    </action>

Devices

a. Show user devices
Method: GET (link: /devices/user_devices)
Params: 0
Returns:

 <?xml version="1.0" encoding="UTF-8"?>
 <page>
   <pagename>Devices</pagename>
   <language>en</language>
   <userid>1</userid>
   <devices>
     <device>
         <acc>1</acc>    
         <description>Test device 1</description>
         <type>IAX2</type>
         <extension>101</extension>
         <username>101</username>
         <password>101</password>
         <cid>& quot;101& quot; & lt;101& gt; </cid>
         <last_time_registered>2007-04-06 13:51:07</last_time_registered>
     </device>
     <device>
         <acc>2</acc>    
         <description>Test FAX device</description>
         <type>FAX</type>
         <extension>102</extension>
         <username>102</username>
         <password>102</password>
         <cid>& quot;102& quot; & lt;102& gt; </cid>
         <last_time_registered>2007-04-06 13:51:07</last_time_registered>
     </device>
   </devices>
 </page>

Call Flow

a. Show callflow for selected device
Method: GET (link: /devices/callflow/%device_id%)
Params: 1
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Call Flow</pagename>
     <language>en</language>
     <userid>1</userid>
     <device>
       <device_id>1</device_id>
       <device_description>IAX2/101</device_description>
       <device_icon>phone.png</device_icon>
       <callflows>
           <callflow>
               <call_state>Before call</call_state>
               <callflow_action>-</callflow_action>
           </callflow>
           <callflow>
               <call_state>Call</call_state>
               <callflow_action>Dial(IAX2/101)</callflow_action>
           </callflow>
           <callflow>
               <call_state>Answered</call_state>
               <callflow_action>Hangup</callflow_action>
           </callflow>
           <callflow>
               <call_state>No answer</call_state>
               <callflow_action>-</callflow_action>
           </callflow>
           <callflow>
               <call_state>Busy</call_state>
               <callflow_action>Voicemail</callflow_action>
           </callflow>
           <callflow>
               <call_state>Failed</call_state>
               <callflow_action>-</callflow_action>
           </callflow>
         </callflows>
     </device> 
   </page>

b. Edit callflow
Method: GET (link: /devices/callflow_edit/%device_id%?cft=%cf_type%)
Params: 2

<-- in process -->

Rates

a. Show all rates
Method: GET (link: /tariffs/user_rates)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Payments</pagename>
     <language>en</language>
     <userid>1</userid>
     <currency>USD</currency>
     <vat_percent>15</vat_percent>
     <aval_currencies>
       <currency>USD</currency>
       <currency>EUR</currency>
     </aval_currencies>
     <rates>
           <rate>
               <ratename>Afghanistan</ratename>
               <rateicon>afg.png</rateicon>
               <ratetype>FIX</ratetype>
               <ratecost>0.02</ratecost>
               <rate_vat_cost>0.03</rate_vat_cost>
           </rate>
           <rate>
               <ratename>Afghanistan</ratename>
               <rateicon>afg.png</rateicon>
               <ratetype>MOB</ratetype>
               <ratecost>0.04</ratecost>
               <rate_vat_cost>0.05</rate_vat_cost>
           </rate>
           .......
       </rates>
   </page>

b.Destinations
Method: GET (link: /directions/dg_list_user_destinations/%dest_id%)
Params: 1
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Destinations</pagename>
     <language>en</language>
     <groupname>Australia</groupname>
     <groupicon>aust.png</groupicon>
           <directions>
               <direction>
               <details>Australia Canberra</details>
               <prefix>61261</prefix>
               <dir_code>FIX</dir_code>
               </direction>
               <direction>
               <details>Australia Canberra</details>
               <prefix>61262</prefix>
               <dir_code>FIX</dir_code>
               </direction>
           </directions>
   </page>

External links

a. Export personal rates
Method: GET
Params: 1
Export to PDF: /tariffs/generate_personal_rates_pdf/%userid%
Export to CSV: /tariffs/generate_personal_rates_csv/%userid%

b. Change currency
Method: GET (link: /tariffs/user_rates?currency=%cur_code%)
Params: 1

Payments

a. Show Payments Method: GET (link: /payments/personal_payments)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Payments</pagename>
     <language>en</language>
     <userid>1</userid>
     <payments>
       <payment>
       <payment_date>2008-03-10 05:41:31</payment_date>
       <confirmed_date>2008-03-10 08:42:00</confirmed_date>
       <payment_type>Manual</payment_type>
       <amount>10</amount>
       <vat>15.0</vat>
       <amount_vat>11.5</amount_vat>
       <currency>USD</currency>
       <completed>Yes</completed>
       </payment>
       <payment>
       <payment_date>2008-03-10 05:41:31</payment_date>
       <confirmed_date>2008-03-10 08:42:00</confirmed_date>
       <payment_type>Manual</payment_type>
       <amount>20</amount>
       <vat>15.0</vat>
       <amount_vat>22.5</amount_vat>
       <currency>EUR</currency>
       <completed>Yes</completed>
       </payment>
     </payments>
   </page>

Invoices

a. Show Invoices Method: GET (link: /accounting/user_invoices)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Invoices</pagename>
     <language>en</language>
     <userid>1</userid>
     <invoices>
       <invoice>
           <user>user</user>
           <inv_number></inv_number>
           <period_start>2008-03-10 05:41:31</period_start>
           <period_end>2008-03-10 08:42:00</period_end>
           <issue_date>2008-03-10 08:42:00</issue_date>
           <paid></paid>
           <paid_date>2008-03-10 08:42:00</paid_date>
           <price>10</price>
           <vat>15.0</vat>
           <price_vat>11.5</price_vat>
       </invoice>
     .....
     </invoices>
   </page>

Subscriptions

a. Show Subscriptions
Method: GET (link: /services/user_subscriptions)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>User subscriptions</pagename>
     <language>en</language>
     <userid>1</userid>
     <subscriptions>
       <subscription>
       <service>Some useful service</service>
       <date_added>2008-03-10 08:42:00</date_added>
       <acivation_start>2008-03-10 08:42:00</acivation_start>
       <acivation_end>2008-03-10 08:42:00</acivation_end>
       <price>10 USD</price>
       </subscription>
       <subscription>
       <service>Some useful service</service>
       <date_added>2008-03-10 08:42:00</date_added>
       <acivation_start>2008-03-10 08:42:00</acivation_start>
       <acivation_end>2008-03-10 08:42:00</acivation_end>
       <price>10 USD</price>
       </subscription>
       ...... 
     </subscriptions>
   </page>

Calls

New calls

Graphs (Detailed Statistics)

a. Show detailed statistics page
Method: GET (link: /stats/user_stats)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Detailed statistics</pagename>
     <language>en</language>
     <userid>1</userid>
     <start_date>2008-03-10</start_date>
     <end_date>2008-03-11</end_date>
     <details>
       <main_details>
           <todays_normative>0</todays_normative>
           <months_normative>0</months_normative>
           <new_calls>0</new_calls>
       </main_details>
       <calls>
           <incoming>
               <answered>0</answered>
               <no_answer>1</no_answer>
               <busy>0</busy>
               <failed>0</failed>
           </incoming>
           <outgoing>
               <answered>0</answered>
               <no_answer>1</no_answer>
               <busy>0</busy>
               <failed>0</failed>
           </outgoing>
       </calls>
       <detailed_by_date>
           <call_by_date>
               <date>2008-03-11</date>
               <calls_count>1</calls_count>
               <duration>1.5</duration>
               <avg_time>1.5</avg_time>
               <calls_normative>100</calls_normative>
           </call_by_date>
           <call_by_date>
               <date>2008-03-10</date>
               <calls_count>1</calls_count>
               <duration>1.5</duration>
               <avg_time>1.5</avg_time>
               <calls_normative>100</calls_normative>
           </call_by_date>
        </detailed_by_date>
       </details>
   </page>

b. Change dates
Method: POST (link: /billing/stats/user_stats)
Params: 7
image here

Returns: See a.

CLIs

a. Show all CallerIDs
Method: GET (link: /devices/user_device_clis)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>CallerIDs</pagename>
     <language>en</language>
     <userid>1</userid>
     <aval_devices>
        <device id="1">IAX2/101</device> 
        <device id="2">FAX/102</device> 
     </aval_devices>
     <clis>
       <cli>
           <cli_id>3</cli_id>
           <device>IAX2/101</device>
           <device_icon>phone.png</device_icon>
           <cli_name>5555555</cli_name>
           <cli_desc>Linus</cli_desc>
           <added_at>2007-04-06 13:51:07</added_at>
       </cli>
     ..... 
     </clis>
   </page>

b. Add new cli Method: POST(link: /devices/cli_add)
Params: 3
image here

Returns:

If already OK

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>add_cli</name>
      <status>ok</status>
      <status_message>CLI created</status_message>
    </action>

If something wrong

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>add_cli</name>
      <status>failed</status>
      <status_message>CLI not created</status_message>
    </action>

Phonebook

Faxes

Callback