API specification to be implemented in the future

From Kolmisoft Wiki
Jump to navigationJump to search

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>
     <missed_today>2</missed_today>
     <missed_total>8</missed_total>
     </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 <* pasdasbr /> 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>

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>



need correction
a. Show Calls
Method: GET (link: /stats/call_list)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Calls</pagename>
     <language>en</language>
     <error_msg></error_msg>
     <userid>1</userid>
     <show_device>all</show_device>
     <status>all</status>
     <direction>all</direction>
     <total_calls>144</total_calls>      
     <username>Very important user</username>
     <currency>USD</currency>
     <aval_languages>
       <language>en</language>
       <language>ru</language>
     </aval_languages>
     <calls_stat>
        <period>
           <period_start>2008-03-10 05:41:31</period_start>
           <period_end>2008-03-10 08:42:00</period_end>
        </period>
        <calls>
          <call>
           <date>2008-03-10 05:45:31</date>
           <called_from>12129989282</called_from>
           <called_to>12129989282</called_to>
           <destination>United States FIX USA 212 New York</destination>
           <duration>00:00:36</duration>
           <hangup_cause>Answered</hangup_cause>
           <price>0.049</price>
         </call>
        ........... 
        </calls>
      </calls_stat>
   </page>

b. Change period
Method: POST (link: /stats/call_list)
Params: 7
%userid% - Current UserId
%search_on% (always 1?)
%period_start%
%period_end%
%direction%
%calltype% (outgoing - incoming - all)
%device% (show_device = all or device_id)

Returns: See a.

External links

a. Export calls
Method: GET
Params: 4
Export to PDF: /stats/call_list_to_pdf/%userid%?call_type=%calltype%&date_from=%period_start%&date_till=%period_end%
Export to CSV: /stats/call_list_to_csv/%userid%?call_type=%calltype%&date_from=%period_start%&date_till=%period_end%

New calls

a. Show new Calls
Method: GET (link: /stats/new_calls_list)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Calls</pagename>
     <language>en</language>
     <error_msg></error_msg>
     <userid>1</userid>
     <calls_stat>
        <total_calls>2</total_calls>
        <calls>
          <call>
           <date>2008-03-10 05:45:31</date>
           <called_from>12129989282</called_from>
           <called_to>12129989282</called_to>
           <duration>00:00:36</duration>
           <hangup_cause>Answered</hangup_cause>
         </call>
        ........... 
        </calls>
      </calls_stat>
   </page>

Missed calls

a. Show missed Calls
Method: GET (link: /stats/missed_calls)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Missed calls</pagename>
     <language>en</language>
     <error_msg></error_msg>
     <userid>1</userid>
     <missed_total>9</missed_total>      
     <username>Very important user</username>
     <aval_languages>
       <language>en</language>
       <language>ru</language>
     </aval_languages>
     <calls_stat>
        <period>
           <period_start>2008-03-10 05:41:31</period_start>
           <period_end>2008-03-10 08:42:00</period_end>
        </period>
        <calls>
          <call>
           <call_id>855</call_id>
           <date>2008-03-10 05:45:31</date>
           <called_from>12129989282</called_from>
           <called_to>12129989282</called_to>
           <duration>00:00:36</duration>
           <hangup_cause>No Answer</hangup_cause>
           <<processed>0</processed>
          </call>
        ........... 
        </calls>
      </calls_stat>
   </page>

b. Change period
Method: POST (link: /stats/missed_calls)
Params: 7
%userid% - Current UserId
%search_on% (always 1?)
%period_start%
%period_end%

Returns: See a.

c. Process call
Method: POST (link: /stats/missed_calls)
Params: 1
%processed%

Returns: See a.

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: 2
%period_start%
%period_end%

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
%device_id%
%cli%
%description%

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

a. Show phonebook
Method: GET (link: /phonebooks/list/%userid%)
Params: 1
Returns:

<?xml version="1.0" encoding="UTF-8"?>
<page>
  <pagename>Phonebook</pagename>
  <language>en</language>
  <userid>1</userid>
  <entries>
     <entry>
        <entry_number>12015551234</entry_number>
        <entry_name>ExGirlfriend</entry_name>
        <entry_added>2008-03-01 15:44:05</entry_added>
     </entry>
  ...........
  </entries>
</page>

b. Add new entry
Method: POST (/phonebooks/add_new/%userid%)
Params: 3
%userid%
%number%
%name%

Returns:
If already OK

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>add_phonebook_entry</name>
      <status>ok</status>
      <status_message>Record added</status_message>
    </action>

If something wrong

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>add_phonebook_entry</name>
      <status>failed</status>
      <status_message>Please fill all fields</status_message>
    </action>

b. Delete entry
Method: POST (/phonebooks/destroy/%entryid%)
Params: 1
%entryid%

Returns:
If already OK

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>delete_phonebook_entry</name>
      <status>ok</status>
      <status_message>Record deleted</status_message>
    </action>

If something wrong

   <?xml version="1.0" encoding="UTF-8"?>
   <action>
      <name>delete_phonebook_entry</name>
      <status>failed</status>
      <status_message>We're sorry, but something went wrong</status_message>
    </action>

Faxes

need correction
a. Show Faxes page
Method: GET (link: /stats/faxes_list/%userid%)
Params: 0
Returns:

   <?xml version="1.0" encoding="UTF-8"?>
   <page>
     <pagename>Faxes</pagename>
     <language>en</language>
     <error_msg></error_msg>
     <userid>1</userid>
     <show_device>all</show_device>
     <username>Very important user</username>
     <aval_languages>
       <language>en</language>
       <language>ru</language>
     </aval_languages>
     <faxes>
        <period>
           <period_start>2008-03-10 05:41:31</period_start>
           <period_end>2008-03-10 08:42:00</period_end>
        </period>
        <fax>
           <device>FAX/102</device>
           <filename></filename>
           <receive_time>2008-03-10 05:45:31</receive_time>
           <sender></sender>
           <status>Received</status>
        </fax>
        ........... 
    </faxes>
   </page>

b. Change period
Method: POST (link: /stats/faxes_list/%userid%)
Params: 6
%userid% - Current UserId
%search_on%
%period_start%
%period_end%
%fax_status%
%device_id%

Returns: See a.

Callback

a. Execute Callback
Method: POST (link: /functions/activate_callback?src=%source%&dst=%destination%&acc=%device%)
Params: 3
Returns:
If already OK

   <?xml version="1.0" encoding="utf-8">
    <action>
      <name>callback</name>
      <status>ok</status>
      <status_message>Callback activated</status_message> 
    </action>

If something wrong

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