<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.kolmisoft.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Edvardas</id>
	<title>Kolmisoft Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kolmisoft.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Edvardas"/>
	<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php/Special:Contributions/Edvardas"/>
	<updated>2026-06-03T07:34:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=31565</id>
		<title>Warning balance</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=31565"/>
		<updated>2026-05-26T12:20:00Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* From Admin Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description=&lt;br /&gt;
&lt;br /&gt;
This function allows a number of actions to be taken when a user's balance drops lower than the set value.&lt;br /&gt;
&lt;br /&gt;
You can edit '''Warning Balance''' in [[User Details]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== From Admin Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning balance user edit.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&amp;lt;!---Admin and Accountant are able to get warning emails from MOR X5---&amp;gt;&lt;br /&gt;
Upon activation, the User, Admin, and Responsible Accountant will receive an email when the User balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – an email will be sent every day at a selected time (in user's time zone) while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
'''Play when balance drops lower than''' lets to set the balance limit for the above option.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
* '''Admin Webhook''' – together with the Warning Balance email, a request is sent to the specified URL with data according to the URL config. Webhook URL: '''http://''' or '''https://''' required. Webhook is not tied to email. It can work without email. Just enable &amp;quot;Active&amp;quot;, specify values ​​and Webhook URL.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== From Reseller Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning_balance_user_edit_from_reseller.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&lt;br /&gt;
Upon activation, the User and Reseller will receive an email when the User's balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – email will be sent every day at a selected time (in user's time zone),  while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Other notes=&lt;br /&gt;
&lt;br /&gt;
*Emails are sent hourly that means that it might take some time for you to receive an email after the balance drops.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[User Details]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Configuration_from_GUI&amp;diff=31564</id>
		<title>Configuration from GUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Configuration_from_GUI&amp;diff=31564"/>
		<updated>2026-05-25T15:27:58Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Where I can find this settings menu?=&lt;br /&gt;
&lt;br /&gt;
You can find this menu in '''SETTINGS –&amp;gt; Setup –&amp;gt; Settings'''&lt;br /&gt;
&lt;br /&gt;
[[File:Settings_path.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Global ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; [[Global_Settings | Global]]'''&lt;br /&gt;
&lt;br /&gt;
* '''Company''' – name of the company.&lt;br /&gt;
* '''Company email''' – email address of the company.&lt;br /&gt;
* '''Version''' – version number.&lt;br /&gt;
* '''Copyright Title''' – copyright title supports html text format.&lt;br /&gt;
* '''Browser Title''' – browser title for MOR GUI.&lt;br /&gt;
* '''Front Page Text''' – some text to place on front page.&lt;br /&gt;
* '''Login Page Text''' – some text to place on login page&lt;br /&gt;
* '''Show logo on first page''' - untick to hide logo on the start page&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
* '''Show Calls statistics to User for last''' – number of Calls statistics to show in days. For example, if you enter 5 days, users will only see 5 days old calls, they will not be able to check older calls.&lt;br /&gt;
* '''Show user_billsec for Users instead of billsec''' – shows user_billsec instead of billsec in Users invoices and last calls. Notice that Billsec shows real Call duration, user_billsec shows Call duration after minimal time or increment applied. For example, if user tariff has 60 sec minimal time and user made a Call for 20 sec, then billsec will show 20 sec and user_billsec will show 60 sec (minimal time is applied).&lt;br /&gt;
* '''Hide device passwords for users''' – do not display device passwords for users.&lt;br /&gt;
* ''' Hide Device username for Users'''  – do not display device username for users.&lt;br /&gt;
* '''Hide payment options for postpaid users''' - will hide the payment option for all postpaid users (including Resellers if they are postpaid).&lt;br /&gt;
* '''Hide non-completed payments for user''' – hides non-completed payments (the ones which are started in MOR, but are not completed in a payment gateway website).&lt;br /&gt;
* '''Hide Recordings for all users''' – hides recordings for all system users from menu and device settings.&lt;br /&gt;
* '''Allow User to assign DID to Device''' – lets User to assign DID to Device.&lt;br /&gt;
* '''Allow User to assign DID to Trunk''' – lets User to Assign DID to Trunk.&lt;br /&gt;
* '''Do not allow users to change their email addresses'''&lt;br /&gt;
* '''Do not allow users to change their Personal Details'''&lt;br /&gt;
* '''Change ANSWER to FAILED if HGC not equal to 16 for Users''' – changes the Hangupcause for users in call reports from Answered to Failed if Hangupcause is not 16.&lt;br /&gt;
* '''Do not allow PREPAID User balance drop below zero (block them instead)'''&lt;br /&gt;
* '''Do not block POSTPAID User when balance goes bellow zero on subscription count'''&lt;br /&gt;
* '''Allow identical email addresses to different Users''' – allows creating Users or registering users with identical email addresses. After checking this setting you will be not able to check.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Devices ==&lt;br /&gt;
&lt;br /&gt;
* '''Device PIN length''' – length for automatically generated PIN codes for devices.&lt;br /&gt;
* '''Device range MIN''' – from which extension automatic extension assigning starts.&lt;br /&gt;
* '''Device range MAX''' – till which extension automatic extension assigning goes.&lt;br /&gt;
** For example, from this interval: [Device range MIN, Device range MAX] MOR will select extensions for newly created Devices.&lt;br /&gt;
* '''Random Device Extension''' – when creating device, random number from '''Device Range''' will be taken.&lt;br /&gt;
* '''Enable &amp;quot;Allowed addresses&amp;quot; option for Devices:'''  – allows [[Device_settings#Allowed_Addresses | Allowed Addresses]] functionality in Devices settings.&lt;br /&gt;
* '''Do not allow duplicate device user names'''&lt;br /&gt;
* '''Inform when Devices are created or updated''' – check to get an email about every newly created or updated Device.&lt;br /&gt;
* '''Allow same IP and Port combinations in multiple Devices''' – allows creating Devices with the same IP and Port combination.&lt;br /&gt;
* '''Show Hostname/IP in Device list'''&lt;br /&gt;
* '''Change dahdi''' – Sometimes this is used to change &amp;quot;Zap&amp;quot; to something else in GUI, e.g. to &amp;quot;PSTN&amp;quot;, mainly because not everybody knows what Zap stands for. PSTN is more common.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Registration ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Registration'''&lt;br /&gt;
&lt;br /&gt;
* '''Enabled?''' – do we want to let users [[Online registration | register online]] automatically?&lt;br /&gt;
* '''Hide registration link in Login page?''' – tick this option if you do not want users to be able to register online.&lt;br /&gt;
* '''Default country'''&lt;br /&gt;
* '''Asterisk server IP''' – what IP should user connect his softphone/server to?&lt;br /&gt;
* '''Send Email to User after registration''' – just yes or no.&lt;br /&gt;
* '''Send Email to Admin after registration''' – just yes or no.&lt;br /&gt;
* '''Send Email To User after User was created''' – just yes or no.&lt;br /&gt;
* '''Send Email To Admin after User was created''' – just yes or no.&lt;br /&gt;
* '''[[ReCAPTCHA]] configuration'''&lt;br /&gt;
* '''[[User_Agreement|Terms and conditions]]'''&lt;br /&gt;
* '''Allow to create user and device with matching username and password''' – just yes or no. If this setting is not enabled - username and password from MOR GUI will have to be different than device's username and password.&lt;br /&gt;
* '''Enable VAT checking for EU companies''' – you can choose whether to check '''TAX Registration Number:''' during the [[Online registration]] or not. Done over [http://ec.europa.eu/taxation_customs/vies/?locale=lt EU page].&lt;br /&gt;
* '''Allow blank VAT for EU companies''' – allows to leave blank '''TAX Registration Number:''' field during the [[Online registration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
* [[Default user]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Invoices ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Invoices'''&lt;br /&gt;
&lt;br /&gt;
Invoice configuration is divided into '''Prepaid''' and '''Postpaid'''. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Settings ===&lt;br /&gt;
&lt;br /&gt;
* '''Number start''' – how the invoice number should start.&lt;br /&gt;
* '''Number length''' – the length in digits AFTER Number Start – e.g. Number Start is not counted into this length. This value is active only for first number type.&lt;br /&gt;
* '''Number type''' – select more appropriate number format.&lt;br /&gt;
* '''Invoice period start''' – when invoices are issued, default is first day of the month.&lt;br /&gt;
* '''Show calls in detailed invoice''' – yes or no.&lt;br /&gt;
* '''[[Outstanding balance(Debt) | Show balance line]]''' – shows balance line in Invoice PDF files when Invoice is generated from first day of month till last one. &lt;br /&gt;
* '''Round finals to 2 decimals''' – round or not total in Invoices to 2 decimals.&lt;br /&gt;
* '''Use short file name'''&lt;br /&gt;
* '''Group Subscriptions''' - User's subscriptions will be grouped by service (only applies to PDF and XLSX invoice).&lt;br /&gt;
* '''Show Quantity''' - Show quantity of each service (only applies to PDF invoice).&lt;br /&gt;
* '''Invoice Page Limit:''' – invoice will be generated till this page limit. Additional page is added with an explanation that page limit was reached. &lt;br /&gt;
* ''' Rename 'DID owner cost' label in detailed PDF invoice:''' – text which will be used instead of '''DID owner cost''' in detailed PDF invoice.&lt;br /&gt;
* ''' Hide 'DID owner cost' line in detailed PDF invoice:''' – checkbox, which control whether or not DID owner cost should be shown in detailed PDF invoice.&lt;br /&gt;
* ''' Show Destination with Prefix in Detailed Invoice:''' - checkbox, if enabled, destination will be shown as '''Destination Name (prefix)'''.&lt;br /&gt;
* ''' Rename red 'INVOICE' label in Simplified PDF Invoice:''' &lt;br /&gt;
* ''' Rename red 'INVOICE' label in Detailed PDF Invoice:'''&lt;br /&gt;
* ''' Rename red 'INVOICE' label in PDF Invoice by CallerID:'''&lt;br /&gt;
* ''' Use rounded Invoice Details Prices to calculate Totals''' - use rounded sub-totals to calculate Invoice Total price. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Details ===&lt;br /&gt;
&lt;br /&gt;
* '''Address format''' – changes field positioning in the invoice for the address. You must select it in order to show address in the invoice. &lt;br /&gt;
* '''Address line 1-4''' – address info.&lt;br /&gt;
* '''Bank details line 1-5''' – bank details info.&lt;br /&gt;
* '''Invoice balance line''' – line for balance (e.g. &amp;quot;Your current balance is&amp;quot;)&lt;br /&gt;
* '''Invoice to pay Line'''&lt;br /&gt;
* '''End title''' – a title for the end of your invoice.&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 12---&amp;gt;&lt;br /&gt;
* '''Add Average rate in detailed invoice''' – adds average rate in detailed invoice.&lt;br /&gt;
* '''Show Time in Minute''' – shows time in mm:ss instead of hh:mm:ss, for example, not 02:13:42 but 133:42.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Additional ===&lt;br /&gt;
&lt;br /&gt;
* '''Show additional details on separate page''' – enables additional custom page at the end of the invoice.&lt;br /&gt;
* '''Additional details''' – the information to be displayed in a custom page at the end of the invoice.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Functionality ===&lt;br /&gt;
&lt;br /&gt;
* '''Invoice allow recalculate after send''' – allows recalculating invoices after being sent. This setting also allows to delete sent invoices.&lt;br /&gt;
* '''Do not generate Invoices for blocked Users''' - if enabled Invoices will not be generated for blocked Users.&lt;br /&gt;
* '''Rename &amp;quot;Calls&amp;quot; label''' - changes 'Calls' name for Simplified Invoices and new Invoice XLSX. If you want to apply new 'Calls' name for old XLSX, you should go to Settings &amp;gt; Invoices &amp;gt; XLSX and mark 'New XLSX template apply for old Invoices'&lt;br /&gt;
* '''Start value for Invoice numbers''' - defines number from which Invoices numeration should start.&lt;br /&gt;
* '''Duration Format:''' - time format in invoice. This setting applies for XLSX type invoices (and PDF invoices generated from XLSX invoice) and Invoice Details page. Available options - 'H:M:S', 'H:M', 'M'. When option 'M' is used, sub option Decimal places appear, where you can select precision.&lt;br /&gt;
* '''Invoice Group By: Prefix / Destination'''&lt;br /&gt;
* '''Show Rates:No / Yes'''&lt;br /&gt;
* '''Show Calls in CID Invoice (CSV)''' - if enabled, then CSV Invoice by CallerID will show a list of calls.&lt;br /&gt;
* '''Show Subscriptions total Selfcost in Invoices List CSV''' - enables additional columns at the Invoice List, when using Export to CSV: Agreement Number, Issue date, Subscriptions total Selfcost. Columns are enabled for Admin and Resellers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XLSX ===&lt;br /&gt;
* '''XLSX Template''' - choose XLSX Template for Invoices.&lt;br /&gt;
* '''Send XLSX Invoices converted to PDF''' – If enabled XLSX invoices will be converted to PDF before sending over [[Invoices#Send_invoices_by_email_.28manual.29|Email]] or [[Cron_actions#Generate_Invoices_and_send_by_Email|using cron action]]&lt;br /&gt;
* '''Group regular Calls by Destination''' - Groups regular Calls be destination&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
* [[Invoices]]&lt;br /&gt;
* [[Invoice configuration]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Emails ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Emails'''&lt;br /&gt;
&lt;br /&gt;
* ''' 	Sending globally enabled''' – if this is checked, you will be able to use Mass Mailing and the system will send emails upon user registration.&lt;br /&gt;
* ''' 	Add recipient first name and last name''' – if this is checked, it will show the user's first name and last name if they are entered in the User Settings.&lt;br /&gt;
* '''SMTP server''' – hostname of the server.&lt;br /&gt;
* '''Port''' – port of SMTP server.&lt;br /&gt;
* '''Login''' – username to your SMTP server.&lt;br /&gt;
* '''Password''' – password to your SMTP server.&lt;br /&gt;
* '''Batch size''' – value for Mass Mailing, or how many emails to send at once.&lt;br /&gt;
* '''From''' – email address to put into From: field in email. Acceptable formats are: '''example@email.com''' or '''John Smith &amp;lt;example@email.com&amp;gt;'''.&lt;br /&gt;
* '''Test email sending''' – save settings and press this to test email sending. Do not forget to save settings first!&lt;br /&gt;
* '''TLS''' – '''Auto''', '''Yes''' or '''No'''. Default '''Auto'''.&lt;br /&gt;
&lt;br /&gt;
'''P.S. Remember to set admin's e-mail in admin's personal settings. Without this test email sending will not work!'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
* [[Emails|Mass Emails]]&lt;br /&gt;
* [[Email variables]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Various ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Various'''&lt;br /&gt;
&lt;br /&gt;
* '''Allow login by email''' - allow users to log in by email instead of a username.&lt;br /&gt;
* '''Logout link''' – a user will be redirected to this link after pressing &amp;quot;Logout&amp;quot;&lt;br /&gt;
* '''Agreement number length''' – number length in digits.&lt;br /&gt;
* '''Google Maps API key''' - the setting is necessary for using the Google Maps functionality. For more on how to configure this key please check [[Get Google Maps key]].&lt;br /&gt;
* '''Chanspy is disabled globally'''&lt;br /&gt;
*'''Send Recordings space warning Email''' - sends Email to Admin once a day if recordings exceed space limit.&lt;br /&gt;
*'''Delete Tariff Jobs older than''' - deletes tariff jobs older than set days.&lt;br /&gt;
*'''Delete Automatic Tariff Import Inbox Messages older than''' - deletes automatic tariff import inbox messages older than set days.&lt;br /&gt;
* '''Server free space limit''' – indicator when system should inform admin about low [[Multi_Server_support|Server]] space. By default 20%. Notice will appear in [[Integrity Check]] and every hour will send an email &amp;quot;Low Disk Space Alert&amp;quot;. Which template can be found and edited on [[Emails]] page. Information about the Server and the remaining free space will be provided.&lt;br /&gt;
* '''Days for DID to close''' – how long to keep DID closed before making it free.&lt;br /&gt;
* '''DID for Unassigned DID''' - this feature is used for calls coming from providers to system DIDs. Allows redirecting call to specific DID if client dials nonexistent DID. If empty, then this feature is disabled and a call will be terminated with [http://wiki.kolmisoft.com/index.php/207_Not_clear_who_should_receive_call 207 Not clear who should receive call] hangup code.&lt;br /&gt;
* '''Play IVR for unauthenticated call'''&lt;br /&gt;
* '''Banned CLIs default IVR''' – default IVR to route banned numbers.&lt;br /&gt;
* '''Default Music On Hold''' - allows to select Default Music On Hold.&lt;br /&gt;
* '''Use Extension in CallerID for Local Calls''' - overwrites original CallerID with Device Extension when making local calls. Outside calls are not affected by this setting.&lt;br /&gt;
* '''Call Forwarding CallerID (via call)''' - allows to manage CallerID when [http://wiki.kolmisoft.com/index.php/Call_Flow#Change_Forward_action_by_Call forwarding is set by call].&lt;br /&gt;
* '''Force Users to use forwarding CallerID (via GUI)''' – possible options: '''Empty''' (the user will have all options available), '''From Device, Same as comes, Sames as comes - with Diversion'''.&lt;br /&gt;
** When forwarding with Diversion, Diversion header can be customized by changing the value in the input field. For example value '''${MOR_SIP_TO};reason=unconditional''' will result in Diversion header with an additional parameter ''';reason=unconditional''' (here '''${MOR_SIP_TO}''' will be expanded to initial SIP To URI &amp;lt;nowiki&amp;gt;&amp;lt;sip:xxxxxx&amp;gt;&amp;lt;/nowiki&amp;gt;). If no value is set, then the default value '''${MOR_SIP_TO}''' (initial SIP To URI) will be used. Other Asterisk/MOR core variables can be used here as well..&lt;br /&gt;
* '''Enable &amp;quot;Allowed addresses&amp;quot; option for Providers:''' – allows Allowed Addresses functionality in Providers settings.&lt;br /&gt;
*'''Allow forward from Resellers''' - enables advanced device option: Allow forward from Resellers. More information about option in [https://wiki.kolmisoft.com/index.php/Device_settings#Advanced device settings].&lt;br /&gt;
&lt;br /&gt;
== Tax ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Tax'''&lt;br /&gt;
&lt;br /&gt;
Settings are explained here: [[Multi-Tax system]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Backups ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Backups'''&lt;br /&gt;
&lt;br /&gt;
Configuration is explained here: [[Backup system]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; API'''&lt;br /&gt;
&lt;br /&gt;
* '''Allow API''' – enable/disable API.&lt;br /&gt;
* '''Allow GET API''' – enable/disable GET in API - use only for testing!&lt;br /&gt;
* '''API Secret Key''' – secret key for API. This will be used as a password for signing queries to MOR API, check [[MOR_API | MOR API documentation]] for more information&lt;br /&gt;
* '''XML API Extension''' – .NET does not follow standards (surprise!); enable this setting if you are using it to get XML starting with HTTP tags.&lt;br /&gt;
* '''Allow API Login Redirect''' – enable/disable&lt;br /&gt;
* '''API allow registration''' – enable/disable registration through API&lt;br /&gt;
* '''API allow Payments''' – enable/disable payments through API&lt;br /&gt;
* '''API Payment confirmation''' – enable/disable payments confirmation through API&lt;br /&gt;
* '''[[Balance_in_phone|Allow devices to check balance over HTTP]]''' – enable/disable device balance checking&lt;br /&gt;
* '''[[MOR_API_rate_get|Allow devices to check rate over HTTP]]''' – enable/disable device rate checking&lt;br /&gt;
* '''Disable hash checking''' – lets you skip hash parameter using API&lt;br /&gt;
* '''Uniquehash''' – shows your uniquehash &lt;br /&gt;
* '''Send Email To Admin after API/Manual Payment''' - sends Email  to Admin after API/Manual payment. Email Template name:  manual_payment_email &lt;br /&gt;
* '''Send Email to User after API/Manual Payment''' - sends Email to User after API/Manual payment. Email Template name:  manual_payment_email_for_user &lt;br /&gt;
* '''Send Email To Admin after API/Balance Update''' - sends Email to Admin after API/Balance Update. Email Template name:  balance_update_email &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===See also===&lt;br /&gt;
&lt;br /&gt;
[[MOR API]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Functionality ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Functionality'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===FAX===&lt;br /&gt;
&lt;br /&gt;
* '''Fax device enabled''' – enable/disable Fax device in MOR. When admin enables FAX, Functionality tab appears in Reseller's GUI configuration. He can then enable or disabled fax for his own users himself. &lt;br /&gt;
* '''Fax2Email From Sender''' – there is a field &amp;quot;From:&amp;quot; in an email form. When MOR sends Fax to Email, &amp;quot;Fax2Email From Sender&amp;quot; value is displayed in &amp;quot;From:&amp;quot; field.&lt;br /&gt;
* '''Allow Users to change FAX email''' - allow simple Users to add/remove/edit FAX emails in FAX Devices.&lt;br /&gt;
* '''Fax2Email Email Template''' - [[Emails|email template]] to be used for Fax2Email emails. &amp;quot;None&amp;quot; means the default Asterisk template.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CSV===&lt;br /&gt;
&lt;br /&gt;
* '''CSV Column Separator''' – how columns are separated in imported/exported CSV files.&lt;br /&gt;
* '''CSV Decimal Separator''' – how decimal parts in numbers are separated in imported/exported CSV files.&lt;br /&gt;
* ''' Archive CSV file when size reaches''' – if CSV file reaches a certain size, the system will archive it to save time to download it (0 means to archive always)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Active Calls===&lt;br /&gt;
&lt;br /&gt;
* '''How many maximum [[Active_Calls|Active Calls]] to show in GUI''' – how many [[Active_Calls| Active Calls]] to show in GUI&lt;br /&gt;
* '''[[Active_Calls| Active Calls]] refresh interval''' – [[Active_Calls|Active Calls]] refresh interval in seconds&lt;br /&gt;
* '''Show [[Active_Calls|Active Calls]] for Users''' – tick if you want to allow users to see [[Active_Calls|Active Calls]]&lt;br /&gt;
* '''Show Servers in [[Active_Calls|Active Calls]]'''&lt;br /&gt;
* '''Show DIDs in [[Active_Calls|Active Calls]]'''&lt;br /&gt;
* '''Show localized Source in [[Active_Calls|Active Calls]]''' - if set, [[Active_Calls|Active Calls]] will show callerid number after localisations (if any) have been applied.&lt;br /&gt;
* '''Show Originators' Device IP in [[Active_Calls|Active Calls]]'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Last Calls===&lt;br /&gt;
&lt;br /&gt;
* '''Limit PDF size in Last Calls to''' - limits how many pages can be exported from Last Calls to PDF. It takes a lot of system resources to generate PDF files therefore this limit should be low enough to prevent high load on system.&lt;br /&gt;
* '''Show Device and its CallerID in Last Calls'''  – shows additional column in [[Last Calls]] page with Device and its CallerID information. Click to reach that Device settings page.&lt;br /&gt;
* '''Show DID User instead of DID Device User in Last Calls''' - if enabled, shows DID User in Last Calls User/Name column instead of DID Device User. This option is relevant when incoming Provider calls DID that belongs to User A and is assigned to User's B Trunk. If option is enabled, User A will be shown. If option is disabled, User B will be shown.&lt;br /&gt;
* '''Show Terminated by in Last Calls''' - show Terminated  By column in [[Last Calls]], calls CSV/PDF export, and adds the possibility to select this column in [[CDR Export Templates]].&lt;br /&gt;
* '''Show Usernames on PDF/CSV Export Files in Last Calls''' – if checked, when a particular User in the Last Calls page search is selected, the Last Calls PDF/CSV file name will be composed also of the Name of selected User. If you are looking for All Users, no User Name will be used. (Name of the User will be shown in Name of the CSV/PDF file).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tariffs/Rates===&lt;br /&gt;
&lt;br /&gt;
* '''Show rates for users''' – allows users to see rates&lt;br /&gt;
* '''Show rates without Tax''' – shows rates without TAX&lt;br /&gt;
* '''Show [[Advanced_Rates|Advanced Rates]] for users''' – allows users to see [[Advanced_Rates|Advanced Rates]]&lt;br /&gt;
* '''Show zero rates in LCR tariff export:''' – shows zero rates in LCR tariff exported file.&lt;br /&gt;
* '''Delete outdated Rates after''' - Delete outdated Rates after some dates.&lt;br /&gt;
* '''Show Ghost percent column in Tariffs:''' – if enabled, the Ghost percent column will be shown in the tariff. Default disabled.&lt;br /&gt;
NOTE: if [[Custom Rates]] and/or Tariff Rates are set for the user, only the custom rates will be shown in the details of destination rates. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Statement of Account===&lt;br /&gt;
* ''' PDF Settings ''' - allows to put Address lines of PDF file for Statement of Account.&lt;br /&gt;
*Address line 1: Street Address&lt;br /&gt;
*Address line 2: City, Country&lt;br /&gt;
*Address line 3: Phone, fax&lt;br /&gt;
*Address line 4: Web, email&lt;br /&gt;
*Bank details line 1&lt;br /&gt;
*Bank details line 2&lt;br /&gt;
*Bank details line 3&lt;br /&gt;
*Bank details line 4&lt;br /&gt;
*Bank details line 5&lt;br /&gt;
*Bank details line 6&lt;br /&gt;
*Bank details line 7&lt;br /&gt;
*Bank details line 8&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Privacy==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Privacy'''&lt;br /&gt;
&lt;br /&gt;
* '''[[Privacy_to_hide_Destination_ends|Privacy to hide Destination ends]]'''&lt;br /&gt;
* '''[[GDPR]] Activated''' – hides User data with notification &amp;quot;Data hidden due GDPR. Press to show data (action will be logged)&amp;quot;. Valid for Admin, Accountant, Reseller and Partner.&lt;br /&gt;
&lt;br /&gt;
== Visual ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Visual'''&lt;br /&gt;
&lt;br /&gt;
* '''Items per page (Setting high value can cause performance issues)''' – the number of items to display per one page&lt;br /&gt;
* '''[[Global_date_format| Default date format]]''' – System default date format&lt;br /&gt;
* '''Default Time Format''' – System default time format&lt;br /&gt;
* '''Default Hour Format''' - System default hour format&lt;br /&gt;
* '''Default Number Decimal''' – with this option you can set default number decimal for all GUI&lt;br /&gt;
* '''Number digits''' – how many digits to display after a comma&lt;br /&gt;
* '''Hide Quick Stats in Start page''' – hide Quick stats from start page&lt;br /&gt;
* '''Hide &amp;quot;Information about this page&amp;quot; link''' – hide HELP banner in GUI&lt;br /&gt;
* '''Hide &amp;quot;I want to&amp;quot; help links'''&lt;br /&gt;
* '''[[Remove_Manual_link_from_admin_GUI|Hide &amp;quot;Manual&amp;quot; link]]''' – hides &amp;quot;Manual&amp;quot; link&lt;br /&gt;
*'''Hide Provider Payments from User Payment List''' - default off.&lt;br /&gt;
* '''Show Full Source (CallerID Name and Number)'''&lt;br /&gt;
* '''Use &amp;lt;&amp;gt; brackets in CDR export''' - changes brackets in CDR export&lt;br /&gt;
* '''Show only main page''' – this is a very advanced feature for those who want to hide default MOR menu tree on the left so that they could build their own menu using advanced techniques without modifying MOR GUI sources.&lt;br /&gt;
* '''Show forgot password''', because this functionality requires a unique email in the system. The setting can be unchecked if all emails are unique in the system. &lt;br /&gt;
** '''From Device''' - puts CallerID for the Device that is forwarding the call. If Device CallerID is empty, then the originator's CallerID will be used.&lt;br /&gt;
** '''Same as comes - unchanged''' - leaves the CallerID as it comes from the originator.&lt;br /&gt;
** '''Same as comes - with Diversion''' - leaves the CallerID as it comes from the original caller and additionally adds SIP header Diversion with CallerID from the Device that is forwarding the call (header will not be added if Device does not have CallerID set).&lt;br /&gt;
* '''Show forgot password''' – turns on '''[[MOR_forgot_user_password | Forgot password]]''' functionality.&lt;br /&gt;
* '''Show detailed Quick Stats''' - shows modified quick stats of first page.&lt;br /&gt;
* '''Show Replication Broken warning only for Admin''' - if enabled, shows Replication Broken warning message only for Admin account.&lt;br /&gt;
* '''Change LCR priority by using drag and drop'''&lt;br /&gt;
* '''New Menu Active''' - if enabled, changes main menu to the new structure.&lt;br /&gt;
* '''Dropdown field in User's subscriptions''' - enables old style Service selection in Subscription form.&lt;br /&gt;
* '''Show entered Destination only for Users''' - show the Destination numbers for Users that were entered by them and not Destination numbers after Localization.&lt;br /&gt;
* '''Show Company Name column in Users page''' - show &amp;quot;Company Name&amp;quot; column in Users list page.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Server load ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Server load'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Settings for GUI Server and Database Server&lt;br /&gt;
&lt;br /&gt;
* '''HDD utilisation higher than''' – Percentage of CPU time during which I/O requests were issued to the device (bandwidth utilization for the device).&lt;br /&gt;
* '''CPU General Load higher than''' – CPU General load higher than – Percentage of the CPU for user processes.&lt;br /&gt;
* '''CPU Load Stats 1 higher than''' – average load per one minute on the system&lt;br /&gt;
* '''CPU MySQL process higher than''' –  Percentage of the CPU for MySQL process&lt;br /&gt;
* '''CPU Ruby process higher than''' –  Percentage of the CPU for Ruby process&lt;br /&gt;
* '''CPU Asterisk process (if present) higher than''' – Percentage of the CPU for Asterisk process&lt;br /&gt;
* '''Delete Server Load Stats older than''' – deletes internal servers load statistics older than defined number of days.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Calls ==&lt;br /&gt;
&lt;br /&gt;
'''SETTINGS –&amp;gt; Setup –&amp;gt; Settings –&amp;gt; Calls'''&lt;br /&gt;
* '''Retrieve PCAP files from the Proxy Server''' – default off. Works only when CCL module is activated.&lt;br /&gt;
&amp;lt;!--- from X18---&amp;gt;&lt;br /&gt;
* '''SQL Max Execution Time''' - max execution time in seconds for SQL query. The default time is 300 seconds (5 minutes). Used in Statistics pages (Calls List export and similar).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archived calls]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FTP ==&lt;br /&gt;
Please fill up FTP server details if you want to store Archived calls or/and Backups to FTP server.&lt;br /&gt;
&lt;br /&gt;
* '''IP''' - Enter FTP server IP.&lt;br /&gt;
* '''Port''' - Enter FTP server Port.&lt;br /&gt;
* '''Username''' - Enter FTP server Username.&lt;br /&gt;
* '''Password''' - Enter FTP server Password.&lt;br /&gt;
* '''Path for Archived Calls''' - Enter Path for Archived Calls.&lt;br /&gt;
* '''Path for Backups''' - Enter path for Backups.&lt;br /&gt;
* '''Path for CDR Export''' - Enter path where to export CDRs.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SFTP ==&lt;br /&gt;
Please fill up SFTP server details if you want to use SFTP for [[Automatic CDR Export]].&lt;br /&gt;
&lt;br /&gt;
* '''IP''' - IP of the SFTP server.&lt;br /&gt;
* '''Port''' - Port of the SFTP server.&lt;br /&gt;
* '''Username''' - Username to connect to SFTP server.&lt;br /&gt;
* '''Password''' - Password to connect to SFTP server. &lt;br /&gt;
* '''Use SSH key''' - Use SSH key configured as described [[Configure SSH connection between servers|here]].&lt;br /&gt;
* '''Path for CDR Export''' - Path in SFTP server where to export CDRs.&lt;br /&gt;
* '''Skip CA verification''' - skips SFPT servers CA verification. Try to enable it if the test passes, but if the upload fails. Adds the --insecure option as described here https://curl.se/docs/sslcerts.html&lt;br /&gt;
* '''Path to CA Certificate''' - optional. Allows specifying a custom CA store. Adds the --cacert [file] option as described here https://curl.se/docs/sslcerts.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
* '''Allow short passwords in devices''' - by default, device passwords are expected to be longer than 7 characters. If enabled, MOR will permit shorter device passwords.&lt;br /&gt;
* '''Use strong passwords for users'''&lt;br /&gt;
* '''Admin login with approved IP only''' - security measure which allows to approve IP's that try to [[MOR_Login_with_approved_IP%27s|login with Admin Account]].&lt;br /&gt;
* '''Enable IP report warning on login failure''' - show [[MOR_Login_Failure_Report|warning]] on unsuccessful login attempts.&lt;br /&gt;
* '''Logout after password change''' - terminates all sessions of the User whose password is changed.&lt;br /&gt;
* '''Logout after closing browser window''' - terminates all sessions of the User after closing browser window.&lt;br /&gt;
* '''Do not logout on session IP change''' - do not logout from MOR GUI if IP is changed.&lt;br /&gt;
* '''2FA Enabled''' - Enables two factors authentication. Two factors authentication requires to enter emailed code during login to user account. '''2FA Enabled must be also enable on individual [[User_Details|User settings]] to make it work for that User.'''&lt;br /&gt;
** '''Email Template''' - [[Emails|email template]] used to send the code.&lt;br /&gt;
** '''Code length (digits)''' - code length.&lt;br /&gt;
** '''Code Enter Attempts Allowed''' - number of attempts to enter the code correctly. Code expires after this number of failed attempts.&lt;br /&gt;
** '''Code Enter Time Allowed''' - code is valid for this amount of time.&lt;br /&gt;
** '''Send Notification Email to Admin on Login''' - allows admin to get email notification on login.&lt;br /&gt;
*** '''Email Template''' - [[Emails|email template]] used to notify admin.&lt;br /&gt;
*** '''On Admin Login''' - get notification on login to Admin's account.&lt;br /&gt;
*** '''On User Login''' - get notification on login to User's accounts.&lt;br /&gt;
** '''Send Notification Email on Login''' - allows this mailbox to get email notification on login.&lt;br /&gt;
*** '''Email Template''' - [[Emails|email template]] used to notify.&lt;br /&gt;
*** '''On Admin Login''' - get notification on login to Admin's account.&lt;br /&gt;
*** '''On User Login''' - get notification on login to User's accounts.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[Server is overloaded]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_DIDs_Bulk_Update_from_CSV&amp;diff=31562</id>
		<title>M4 DIDs Bulk Update from CSV</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_DIDs_Bulk_Update_from_CSV&amp;diff=31562"/>
		<updated>2026-05-14T11:56:34Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Delete */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
''M4 DIDs Bulk Update from CSV'' functionality applies to CHANGE, DELETE, and CLOSE SUBSCRIPTION actions.&lt;br /&gt;
&lt;br /&gt;
=CSV file structure=&lt;br /&gt;
The CSV file consists of DID numbers separated by a new line. An example file is provided below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_file_structure.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Workflow =&lt;br /&gt;
Select the Bulk Action you want to apply. Possible actions: '''CHANGE''', '''DELETE''', and '''CLOSE SUBSCRIPTION'''.&lt;br /&gt;
&lt;br /&gt;
Uploading the CSV file takes place on the DIDs inventory page. Select '''BULK EDIT''', in the opened Bulk Edit menu press the browse button next to the file upload box.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_select_file.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After selecting the file, press '''Apply Changes'''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In case of success, the analysis page opens.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The analysis results can be filtered according to the DID, Status, and Reason.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis_refine_reults.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To make bulk changes, press the '''UPDATE''' button. The process can be canceled using the '''CANCEL''' button.&amp;lt;br&amp;gt;&lt;br /&gt;
Pressing one of the buttons opens a confirmation window.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_confirmation_window.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After the system has made the changes, the DIDs Inventory page opens.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
==Change==&lt;br /&gt;
[[File:M4_dids_bulk_examples_change1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_examples_change3.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Delete==&lt;br /&gt;
[[File:M4_dids_bulk_examples_delete1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_examples_delete3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' it is only possible to delete those DIDs where the DID status is '''Free''' or '''Archived'''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Close Subscription==&lt;br /&gt;
[[File:M4_dids_bulk_close1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
New parameters are added:&lt;br /&gt;
* '''Clear Forward''' - clears forward configuration from the DID settings.&lt;br /&gt;
* '''Clear Failover1''' - clears Failover1 configuration from the DID settings.&lt;br /&gt;
* '''Clear Failover2''' - clears Failover2 configuration from the DID settings.&lt;br /&gt;
* '''Clear Customer''' - clears customer from the DID settings.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_close3.png]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_DIDs_Bulk_Update_from_CSV&amp;diff=31561</id>
		<title>M4 DIDs Bulk Update from CSV</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_DIDs_Bulk_Update_from_CSV&amp;diff=31561"/>
		<updated>2026-05-14T11:55:59Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Delete */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
''M4 DIDs Bulk Update from CSV'' functionality applies to CHANGE, DELETE, and CLOSE SUBSCRIPTION actions.&lt;br /&gt;
&lt;br /&gt;
=CSV file structure=&lt;br /&gt;
The CSV file consists of DID numbers separated by a new line. An example file is provided below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_file_structure.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Workflow =&lt;br /&gt;
Select the Bulk Action you want to apply. Possible actions: '''CHANGE''', '''DELETE''', and '''CLOSE SUBSCRIPTION'''.&lt;br /&gt;
&lt;br /&gt;
Uploading the CSV file takes place on the DIDs inventory page. Select '''BULK EDIT''', in the opened Bulk Edit menu press the browse button next to the file upload box.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_select_file.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After selecting the file, press '''Apply Changes'''.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In case of success, the analysis page opens.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The analysis results can be filtered according to the DID, Status, and Reason.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis_refine_reults.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To make bulk changes, press the '''UPDATE''' button. The process can be canceled using the '''CANCEL''' button.&amp;lt;br&amp;gt;&lt;br /&gt;
Pressing one of the buttons opens a confirmation window.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_confirmation_window.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After the system has made the changes, the DIDs Inventory page opens.&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
==Change==&lt;br /&gt;
[[File:M4_dids_bulk_examples_change1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_examples_change3.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Delete==&lt;br /&gt;
[[File:M4_dids_bulk_examples_delete1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_examples_delete3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' it is only possible to delete those DIDs where the status is '''Free''' or '''Archived'''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Close Subscription==&lt;br /&gt;
[[File:M4_dids_bulk_close1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
New parameters are added:&lt;br /&gt;
* '''Clear Forward''' - clears forward configuration from the DID settings.&lt;br /&gt;
* '''Clear Failover1''' - clears Failover1 configuration from the DID settings.&lt;br /&gt;
* '''Clear Failover2''' - clears Failover2 configuration from the DID settings.&lt;br /&gt;
* '''Clear Customer''' - clears customer from the DID settings.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_update_analysis.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk_close3.png]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=User_Details&amp;diff=31528</id>
		<title>User Details</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=User_Details&amp;diff=31528"/>
		<updated>2026-04-17T11:39:52Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Where to find user details?=&lt;br /&gt;
&lt;br /&gt;
Go to '''SETTINGS –&amp;gt; Users'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[File:Users_path.png]] &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
Here you can see list of all users. In brackets by the Accountant or Reseller you are able to see to which Permissions Group([[Reseller Permissions]] or [[Accountant permissions]]) they belong. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[File:Users_path_2.png]] &amp;lt;!---From MOR X4 some of cells are empty because reseller/accountant does not make calls anymore---&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
Select the [[image:icon_edit.png]] icon in a window above beside the user and you will reach personal user settings page. In this window you will see a lot of options grouped into sections like General, Blocking, Warning Balance Email, Invoices, Payments, Details, Taxes, Registration Address, Recordings and Blacklists.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X4---&amp;gt;&lt;br /&gt;
'''NOTE''' that admin is not shown in Users list. To see your own details go to '''PERSONAL MENU –&amp;gt; Details'''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
Select the [[image:icon_edit.png]] Bulk management icon in a window above to access bulk management options.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[File:MOR_Users_path_bulk_management.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Details update = &lt;br /&gt;
Every User can update his own details in '''PERSONAL MENU –&amp;gt; Details'''.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To disallow users to change their details Admin/Reseller has to check setting &amp;quot;Do not allow users to change their Personal Details&amp;quot; in '''SETTINGS -&amp;gt; Setup -&amp;gt; Settings -&amp;gt; Various'''. After this User Details can only be updated by user's owner.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''NOTE''' that even if User is not allowed to update his own details, he still can see it in '''PERSONAL MENU –&amp;gt; Details''' as form with not editable options.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= General =&lt;br /&gt;
&lt;br /&gt;
* Username – username for user to login to MOR GUI.&lt;br /&gt;
* Password – password for user to login to MOR GUI. Password must contain at least one numeric value, capital and lowercase symbol. '''Note''': To use simple passwords turn off setting in Security section called '''Use strong passwords for users'''.&lt;br /&gt;
* Suggest strong password - secure password will be generated and filled in the password field.&lt;br /&gt;
* 2FA Enabled - enables two factors authentication for this User. Only visible if 2FA is enabled in [[Configuration_from_GUI|system settings]].&lt;br /&gt;
* [[Users#User_types | User type]] – by default it is &amp;quot;user&amp;quot;.&lt;br /&gt;
* [[LCR]] – LCR indicating which of the user's devices will be used to dial out.&lt;br /&gt;
* [[Tariffs | Tariff]] – prices for the user.  &lt;br /&gt;
* Show Tariff name for User – if enabled, shows Tariff name for User in this Personal details or Quick stats.&lt;br /&gt;
* [[Balance and Credit | Balance]] – the user's balance.&lt;br /&gt;
* [[Balance and Credit | Credit]] – the user's credit, showing how low the user's balance can go.&lt;br /&gt;
* [[Minimum contract billing | Minimal Charge for Calls]] - minimum charge user pays for voice calls.&lt;br /&gt;
* [[Minimum contract billing | Minimal Charge for Calls Date]] - date since when the previous option is valid.&lt;br /&gt;
* Postpaid/Prepaid – type of user.&lt;br /&gt;
* [[Hide Users | Not Hidden/Hidden]] – is this user hidden?&lt;br /&gt;
* Primary device – the primary device for this user.&lt;br /&gt;
* [[Allow loss calls]] – should loss calls be allowed for this user?&lt;br /&gt;
* Max Call rate - set maximum allowed rate (price per min) when making calls (0 - unlimited)&lt;br /&gt;
* Default [[Currencies | Currency]] – currency which will be used to show balance, rates and prices in Users' GUI and exported files. Notice that balance (also other values) will be saved in [[Currencies |default system currency]] in DB and converted on the fly using current exchange rate - e.g. balance can change when [[Currencies#Automatic_Currency_Update |exchange rate changes]]. So your user can be surprised when he does not make calls but balance fluctuates.&lt;br /&gt;
* [[GUI_time_zone | Time Zone]] – time zone which will be used to show dates and time in Users' GUI and exported files&lt;br /&gt;
* Responsible accountant – dropdown to choose accountant responsible for user's profit. (only Admin can set Responsible accountant) &lt;br /&gt;
* Hide Non-Answered calls – with this option enabled simple user sees only answered calls in [[Last Calls]] and in Detailed Statistics page. &amp;lt;!-- veikia su x5_functionality_15 --&amp;gt; &lt;br /&gt;
* Allow to change CallerID – with this option enabled simple user can change his devices custom CallerID.&lt;br /&gt;
* Ignore Global Alerts – check and User will be ignored on checking for [[Alerts]] &amp;lt;!---from x5---&amp;gt;&lt;br /&gt;
* Show Stats from User perspective – hide intermediate Call attempts for User in Last Calls. For example, if LCR contains two Providers and first one is unreachable, then MOR tries to call second Provider. If this setting is checked, User will see only single Call attempt (through second Provider). If settings is unchecked, User will see both attempts in his Last Calls.&lt;br /&gt;
* Show only own traffic in Last Calls - show only own traffic for reseller in last calls. If setting on, Reseller will not see calls which made by his user with calling card that belongs to another reseller. (setting available only if User Type - reseller)&lt;br /&gt;
* Disable Subscriptions if not enough money - User is not being blocked due low balance, but [[Flat-Rates]] and [[Dynamic Flat-Rates]] subscriptions are deactivated. Works only with subscriptions [[Flat-Rates]] and [[Dynamic Flat-Rates]]. Option depends on global settings '''Do not allow PREPAID User balance drop below zero (block them instead)''' and '''Do not block POSTPAID User when balance goes bellow zero on subscription count'''. For prepaid users, only those subscriptions will be canceled, for which user will not be able to pay. For postpaid users, all subscriptions will be canceled, because user balance is negative.&lt;br /&gt;
* Show Price in Last Calls - if unchecked, simple User cannot see Price column in [[Last Calls]]. Price column also not exported.&lt;br /&gt;
* Show DID Incoming Price in Last Calls - show this price in the User's Last Calls.&lt;br /&gt;
* Show DID Owner Price in Last Calls - show this price in User's Last Calls.&lt;br /&gt;
* Hide financial data in Quick Stats - if enabled, financial data in Quick Stats will be hidden.&lt;br /&gt;
* Allow to see PCAPs - allows to see PCAP data in [[Call Info]] page. Only for Resellers.&lt;br /&gt;
* Show Calls Statistics for last - allows to set a day amount limit on shown calls statistics.&lt;br /&gt;
* Show HGC of Failed Calls in Last Calls - Possible options are: Do not show, Show code, Show code with description.&lt;br /&gt;
* Allow User to use Random CallerID - if enabled, User could change Random Number from Number Pool option in his device settings.&lt;br /&gt;
* Hide SIPCHANINFO - allows to hide SIPCHANINFO in [[Call Info]] page. Only for Resellers.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Limits =&lt;br /&gt;
* Separate concurrent Call Limits - Allows to set how many simultaneous inbound and outbound calls the user can make.&lt;br /&gt;
Outbound concurrent Call Limit - sets concurrent [[Simultaneous call limitation | Call Limit]] for outbound calls. &amp;lt;br&amp;gt;&lt;br /&gt;
Inbound concurrent Call Limit - sets concurrent [[Simultaneous call limitation | Call Limit]] for inbound calls.&lt;br /&gt;
* One concurrent Call Limit (Outbound + Inbound) - Allows to set total simultaneous calls the user can make.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Blocking =&lt;br /&gt;
&lt;br /&gt;
Various options for [[User Blocking]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Warning Balance Email =&lt;br /&gt;
&lt;br /&gt;
If you want to send an email notification to a user (or take another action) when his balance drops lower than a certain amount, check this setting and enter the desired amount.&lt;br /&gt;
&lt;br /&gt;
More details: [[Warning balance]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Daily Balance Limit =&lt;br /&gt;
More details: [[Daily Balance Limit]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Invoices =&lt;br /&gt;
&lt;br /&gt;
[[Image:user_invoice_details.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Generate Invoice''' – should we include this User when we generate Invoices for multiple Users (for example when we select to generate Invoice for postpaid/prepaid Users or when we automatically generate Invouice for all Users)?&lt;br /&gt;
* '''Show zero Calls''' - should we include calls that have 0 price?&lt;br /&gt;
* '''Generate empty Invoice''' - should we generate Invoice even if it is empty (no subscriptions, no calls, nothing to pay for)?&lt;br /&gt;
* '''Invoice types''' -  select which Invoice types are available to end Users. Also only selected types will be sent to User via Email.&lt;br /&gt;
&lt;br /&gt;
= Payments =&lt;br /&gt;
&lt;br /&gt;
* Cyberplat - check this option if you want to allow the user to use this payment gateway.&lt;br /&gt;
* Stripe - check this option if you want to allow the user to use this payment gateway.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Statement of Account =&lt;br /&gt;
&lt;br /&gt;
[[Image:user_details_soa.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Use custom Opening Balance Settings''' - should we enable custom Balance Settings?&lt;br /&gt;
* '''Opening Balance:''' - set custom value for Opening Balance&lt;br /&gt;
* '''Beginning from:''' - set custom Beginning from: date&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Details =&lt;br /&gt;
&lt;br /&gt;
Self-explanatory.&lt;br /&gt;
&lt;br /&gt;
If Country of Taxation is in the EU, validation of TAX Registration Number will be checked from this website: http://ec.europa.eu/taxation_customs/vies/&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Taxes =&lt;br /&gt;
&lt;br /&gt;
Here tax parameters are entered for the user.&lt;br /&gt;
&lt;br /&gt;
The tax system is explained [[Multi-Tax system | here]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Registration Address =&lt;br /&gt;
&lt;br /&gt;
Self-explanatory.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Email''' - There can be only one email or emails separated by semicolon, for example: '''test@kolmisoft.com; test2@kolmisoft.com.''' In this case email will be sent for two emails.&lt;br /&gt;
&lt;br /&gt;
= Recordings = &lt;br /&gt;
&lt;br /&gt;
This section is available when the [[Recordings Addon]] is installed in the system.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Blacklists / Whitelists=&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:user_blacklists_details.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!---FROM MOR X7---&amp;gt;&lt;br /&gt;
'''Enable static Source''' - enables static Blacklist or Whitelist&amp;lt;br&amp;gt;&lt;br /&gt;
* '''No''' - do not use any Blacklist or Whitelist&lt;br /&gt;
* '''Blacklist''' - choose [[Number Pool]] which will be used to block User from receiving and sending specific Source numbers. If User receives or sends number which is in selected [[Number Pool]] then call will be hangup with hangupcause ''262 - Source number is in blacklist''&lt;br /&gt;
* '''Whitelist''' - choose [[Number Pool]] which will be used to allow User to receive only specific Source numbers. If User receives number which is NOT in selected [[Number Pool]] then call will be hangup with hangupcause ''263 - Source number is not in whitelist''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---FROM MOR X5---&amp;gt;&lt;br /&gt;
'''Enable static Destination''' - enables static Blacklist or Whitelist&amp;lt;br&amp;gt;&lt;br /&gt;
* '''No''' - do not use any Blacklist or Whitelist&lt;br /&gt;
* '''Blacklist''' - choose [[Number Pool]] which will be used to block User from calling specific Destination numbers. If User calls number which is in selected [[Number Pool]] then call will be hangup with hangupcause ''255 - Destination is in blacklist''&lt;br /&gt;
* '''Whitelist''' - choose [[Number Pool]] which will be used to allow User to call only specific Destination numbers. If User calls number which is NOT in selected [[Number Pool]] then call will be hangup with hangupcause ''256 - Destination is not in whitelist''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Note:''' when using Number Pools for Blacklist/Whitelist, it is possible to upload prefixes. To do so, just import prefixes with percent sign at the end (example: '''370%''' will act as prefix for 370xxxxxxxx number).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Also you can manage '''[[Dynamic Blacklist Functionality]]''' settings for Single User. You are able to manage:&lt;br /&gt;
&lt;br /&gt;
'''Enable Dynamic Blacklist''' – enables dynamic Blacklist functionality for this user.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Blacklist LCR''' – [[LCR]] with Blacklist Providers.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Routing Threshold''' – sum of SRC, DST and RTP IP limit. If SRC, DST or RTP IP scores sum received during the call is bigger than Defaullt Threshold, call will be routed through selected Blacklist LCR. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose option '''Global''' if you want to apply [[ Monitorings_Addon#Monitorings_Settings | global settingas]] for this user.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flash Calls=&lt;br /&gt;
&lt;br /&gt;
Flash Call - a short call that is cancelled once the Ringing (Progress) signal is received. Often used for authentication to bypass SMS authentication fees. Options bellow allow to bill these calls.&lt;br /&gt;
&lt;br /&gt;
[[File:M4_flash_calls_billing.png]]&lt;br /&gt;
&lt;br /&gt;
* '''Flash Calls billing enabled''' - enables Flash Calls detection and billing.&lt;br /&gt;
* '''Flash Calls price''' - price for Flash Calls.&lt;br /&gt;
* '''Flash Calls ringing duration''' - Flash Calls detection duration in milliseconds. Cancelled calls with ringing/progress duration lower than this setting will be considered as Flash Calls. For example, if the value is set to 200ms and the originator cancelled the call in 100ms after the ringing signal, then the call will be considered as Flash Call and will be billed by the '''Flash Calls price''' setting.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Purge User data=&lt;br /&gt;
* Purge User data - the admin can completely delete a user with all his data. After clicking the button, an additional confirmation form appears to confirm the purge. You are asked to enter the username of the user to be deleted (as confirmation) and click the '''Confirm User Purge''' button.&lt;br /&gt;
'''IMPORTANT:''' This action will delete the user and all related data. Please back up your data before proceeding.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Comment = &lt;br /&gt;
&lt;br /&gt;
Here you are able to write private comment about user.&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:AccountantPermissions.png&amp;diff=31527</id>
		<title>File:AccountantPermissions.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:AccountantPermissions.png&amp;diff=31527"/>
		<updated>2026-04-17T08:04:26Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:AccountantPermissions.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Whitelisted_IPs&amp;diff=31524</id>
		<title>Whitelisted IPs</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Whitelisted_IPs&amp;diff=31524"/>
		<updated>2026-04-15T05:31:32Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Whitelisted IPs''' can be used from '''Admin''' account and from '''Accountant''' account with Monitoring permissions enabled.&lt;br /&gt;
&lt;br /&gt;
From the Admin account, go to '''SETTINGS -&amp;gt; Security -&amp;gt; Whitelisted IPs''' to manage Whitelisted IPs.&lt;br /&gt;
&lt;br /&gt;
An IP can be whitelisted by entering valid input values and by clicking the '''Whitelist''' icon.&lt;br /&gt;
&lt;br /&gt;
'''The range of IPs''' can be added in a format like '''192.168.0.1-5''', which would result in multiple entries being created (192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4 and 192.168.0.5).&lt;br /&gt;
&lt;br /&gt;
All the Whitelisted changes will be active in '''one minute after they have been applied.''' Country information (flag) can take up to one hour to appear.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:mor_whitelist_ips_list.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Comment can be added to the Reason field. If the Reason is not specified, then it will be set to &amp;quot;MOR-WHITELIST-GUI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the country, to which IP belongs, is blocked in [[Blocked Countries]], but IP is added to '''Whitelisted IPs''', it means that the whole country is blocked except that whitelisted IP.&lt;br /&gt;
&lt;br /&gt;
'''Search''' functionality allows to check if the entered IP exists in the list.&lt;br /&gt;
&lt;br /&gt;
Wildcard '''%''' is available to use in the search.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Whitelisted IP format =&lt;br /&gt;
It is possible to block IPs in such format:&lt;br /&gt;
* Single IP, for example, '''2.2.2.2'''&lt;br /&gt;
* Subnet in CIDR notation, for example, '''2.2.2.0/24'''. Please note that CIDR notation will be converted into the canonical format automatically. For example, if you enter 2.2.2.1/24, it will be converted to 2.2.2.0/24. This is because 2.2.2.0/24 denotes the range 2.2.2.1 - 2.2.2.254, so any subnet from 2.2.2.1/24 to 2.2.2.254/24 means exactly the same range, and a canonical way to represent this is range is with 2.2.2.0/24&lt;br /&gt;
* IP range in format x.x.x.x-xx, for example '''2.2.2.1-125'''. Please note that all IPs in the range will be whitelisted as separate IPs, so entering 2.2.2.1-125 would create 125 single IP entries. For this reason, we strongly recommend using subnets if possible.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
* [[Blocked IPs]]&lt;br /&gt;
* [[How to block someone's IP]]&lt;br /&gt;
* [[How to block country IP]]&lt;br /&gt;
* [[How to add Fail2ban exception for my IP]]&lt;br /&gt;
* [[Monitorings Addon]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:Mor_whitelist_ips_list.png&amp;diff=31523</id>
		<title>File:Mor whitelist ips list.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:Mor_whitelist_ips_list.png&amp;diff=31523"/>
		<updated>2026-04-15T05:28:21Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:Mor whitelist ips list.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_user_calls_get&amp;diff=31517</id>
		<title>MOR API user calls get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_user_calls_get&amp;diff=31517"/>
		<updated>2026-04-10T12:09:38Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Returns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from MOR 8---&amp;gt;&lt;br /&gt;
=Description=&lt;br /&gt;
Retrieves list of calls in selected time period for specified User/Device.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Admin''' - can get any user calls&lt;br /&gt;
&lt;br /&gt;
'''Reseller''' - can get his and his users calls.&lt;br /&gt;
&lt;br /&gt;
'''User''' - can get his own calls.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X4''' call: '''/api/user_calls_get'''&lt;br /&gt;
* For Backwards-compatibility old name 'user_calls' is also usable. Call: '''/api/user_calls'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parameters===  &lt;br /&gt;
&lt;br /&gt;
Parameters which are '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* period_start - Unix timestamp of calls period starting date. (Default: Today at 00:00). &amp;lt;!---Nuo MOR 8---&amp;gt;&lt;br /&gt;
* period_end - Unix timestamp of calls period end date. (Default: Today at 23:59). &amp;lt;!---Nuo MOR 8---&amp;gt; &lt;br /&gt;
* s_user - User's ID in MOR database. '''Required, if s_reseller is not used'''. &amp;lt;!---Nuo MOR 8. Nuo mor 9 iš user_id tapo s_user---&amp;gt;&lt;br /&gt;
* s_call_type - Call type. Possible values [all, answered, no answer, failed, busy]. (Default: all) &amp;lt;!---Nuo MOR 8. Nuo mor 9 s_call_type---&amp;gt;&lt;br /&gt;
* s_device - Device ID in MOR database. Possible values [all, numeric value of device_id]. (Default: all). &amp;lt;!---Nuo MOR 8. Nuo mor 9 s_device---&amp;gt;&lt;br /&gt;
* s_provider - Provider ID in MOR database. Possible values [all, numeric value of provider_id]. (Default: all).Only for Admin and Reseller PRO.  &amp;lt;!---Nuo MOR 9. From mor 10 works with reseller if has own_providers---&amp;gt;&lt;br /&gt;
* s_hgc - Hangup cause code ID in MOR database. Possible values [all, numeric value of hangup_cause_code_id]. (Default: all). Only for Admin and Reseller if Show HGC for Resellers is ON.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* s_did - show calls made through specific DID. Possible values [all, calls.did_id]. (Default: all). Only for Admin.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* s_destination - prefix.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* order_by - Possible values [time, src, dst, prefix, nice_billsec, hgc, server, p_name, p_rate, p_price, reseller, r_rate, r_price, user, u_rate, u_price, number, d_provider, d_inc, d_owner]. (Default: time).  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* order_desc - Possible values [0,1]. (Default: 0).  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* only_did - show calls that only went through did. Possible values [0,1]. (Default: 0).   &amp;lt;!---Nuo MOR 11---&amp;gt;&lt;br /&gt;
* s_uniqueid - returns specific Call by uniqueid. Date parameters are ignored in this case.&lt;br /&gt;
* s_callback_uniqueid - returns Call(s) by callback uniqueid. Date parameters are ignored in this case. Only works when '''use_callback_uniqueid''' setting is enabled in [[Mor.conf|mor.conf]].&lt;br /&gt;
&lt;br /&gt;
'''Note that parameters are shown in the same order as they have to be when generating the hash. Last parameter in a row is API_Secret_Key'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Parameters which are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using parameters above and API_Secret_Key ([[MOR API hash construction | More described in Constructing hash]]). '''Required''' (if setting '''Disable hash checking''' is not checked). &lt;br /&gt;
* u - username  for authentication. '''Required'''. &amp;lt;!---NUO x4 password nereikalaujamas---&amp;gt;&lt;br /&gt;
* &amp;lt;!---Nuo MOR X6---&amp;gt; s_reseller - Reseller type User ID in MOR database.  (Default: all).&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;!---Nuo MOR 8 buvo, o nuo MOR 9 nebėra direction---&amp;gt; &amp;lt;!---Iki nuo 11 buvo s_did_pattern, s_reseller_did, vėliau nebeliko---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
If you want find s_call_type=all calls for s_user = 5, through s_device=7 in period from 2011-11-01 23:59:59 till 2011-11-30 23:59:59, and your API Secret Key = 456789&lt;br /&gt;
&lt;br /&gt;
You send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/user_calls_get?u=username&amp;amp;s_user=5&amp;amp;period_start=1320191999&amp;amp;period_end=1322697599&amp;amp;s_device=7&amp;amp;s_call_type=all&amp;amp;hash=df2983700ffecb52e6649f0cb3981b66537083a4 &lt;br /&gt;
&lt;br /&gt;
'''* Note that username is not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success:''' Everything is ok. You get the list of calls if there is any:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;pagename&amp;gt;Calls&amp;lt;/pagename&amp;gt;&lt;br /&gt;
  &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt;&lt;br /&gt;
  &amp;lt;error_msg&amp;gt;&amp;lt;/error_msg&amp;gt;&lt;br /&gt;
  &amp;lt;userid&amp;gt;0&amp;lt;/userid&amp;gt;&lt;br /&gt;
  &amp;lt;username&amp;gt;admin&amp;lt;/username&amp;gt;&lt;br /&gt;
  &amp;lt;total_calls&amp;gt;1&amp;lt;/total_calls&amp;gt;&lt;br /&gt;
  &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
  &amp;lt;calls_stat&amp;gt;&lt;br /&gt;
    &amp;lt;period&amp;gt;&lt;br /&gt;
      &amp;lt;period_start&amp;gt;2008-03-07 11:48:18&amp;lt;/period_start&amp;gt;&lt;br /&gt;
      &amp;lt;period_end&amp;gt;2012-03-07 11:46:01&amp;lt;/period_end&amp;gt;&lt;br /&gt;
    &amp;lt;/period&amp;gt;&lt;br /&gt;
    &amp;lt;show_user&amp;gt;all&amp;lt;/show_user&amp;gt;&lt;br /&gt;
    &amp;lt;show_device&amp;gt;all&amp;lt;/show_device&amp;gt;&lt;br /&gt;
    &amp;lt;show_status&amp;gt;all&amp;lt;/show_status&amp;gt;&lt;br /&gt;
    &amp;lt;show_provider&amp;gt;4&amp;lt;/show_provider&amp;gt;&lt;br /&gt;
    &amp;lt;show_hgc&amp;gt;all&amp;lt;/show_hgc&amp;gt;&lt;br /&gt;
    &amp;lt;show_did&amp;gt;1&amp;lt;/show_did&amp;gt;&lt;br /&gt;
    &amp;lt;calls&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;&lt;br /&gt;
        &amp;lt;calldate2&amp;gt;2009-01-02 00:00:01&amp;lt;/calldate2&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR x3---&amp;gt;        &amp;lt;timezone&amp;gt;GMT+02:00&amp;lt;/timezone&amp;gt;&lt;br /&gt;
        &amp;lt;clid&amp;gt;37046246362&amp;lt;/clid&amp;gt;&lt;br /&gt;
        &amp;lt;destination&amp;gt;Lithuania MOB Lithuania mobile&amp;lt;/destination&amp;gt;&lt;br /&gt;
        &amp;lt;did&amp;gt;37063042438&amp;lt;/did&amp;gt;&lt;br /&gt;
        &amp;lt;did_inc_price&amp;gt;1.0&amp;lt;/did_inc_price&amp;gt;&lt;br /&gt;
        &amp;lt;did_price&amp;gt;1.0&amp;lt;/did_price&amp;gt;&lt;br /&gt;
        &amp;lt;did_prov_price&amp;gt;1.0&amp;lt;/did_prov_price&amp;gt;&lt;br /&gt;
        &amp;lt;dispod&amp;gt;ANSWERED(16)&amp;lt;/dispod&amp;gt;&lt;br /&gt;
        &amp;lt;dst&amp;gt;37063042438&amp;lt;/dst&amp;gt;&lt;br /&gt;
        &amp;lt;nice_billsec&amp;gt;20.0&amp;lt;/nice_billsec&amp;gt;&lt;br /&gt;
        &amp;lt;nice_reseller&amp;gt; &amp;lt;/nice_reseller&amp;gt;&lt;br /&gt;
        &amp;lt;prefix&amp;gt;3706&amp;lt;/prefix&amp;gt;&lt;br /&gt;
        &amp;lt;profit&amp;gt;4&amp;lt;/profit&amp;gt;&lt;br /&gt;
        &amp;lt;provider_name&amp;gt;Test Provider&amp;lt;/provider_name&amp;gt;&lt;br /&gt;
        &amp;lt;provider_price&amp;gt;1.0&amp;lt;/provider_price&amp;gt;&lt;br /&gt;
        &amp;lt;provider_rate&amp;gt;0.0&amp;lt;/provider_rate&amp;gt;&lt;br /&gt;
        &amp;lt;reseller_price&amp;gt;0.0&amp;lt;/reseller_price&amp;gt;&lt;br /&gt;
        &amp;lt;reseller_rate&amp;gt;0.0&amp;lt;/reseller_rate&amp;gt;&lt;br /&gt;
        &amp;lt;server_id&amp;gt;1&amp;lt;/server_id&amp;gt;&lt;br /&gt;
        &amp;lt;src&amp;gt;37046246362&amp;lt;/src&amp;gt;&lt;br /&gt;
        &amp;lt;user&amp;gt;test_user&amp;lt;/user&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X11---&amp;gt;        &amp;lt;user_currency&amp;gt;EUR&amp;lt;/user_currency&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X11---&amp;gt;        &amp;lt;user_exchange_rate&amp;gt;0.744100000000000&amp;lt;/user_exchange_rate&amp;gt;&lt;br /&gt;
        &amp;lt;user_id&amp;gt;5&amp;lt;/user_id&amp;gt;&lt;br /&gt;
        &amp;lt;user_price&amp;gt;2.0&amp;lt;/user_price&amp;gt;&lt;br /&gt;
        &amp;lt;user_rate&amp;gt;0.0&amp;lt;/user_rate&amp;gt;&lt;br /&gt;
        &amp;lt;dst_user_id&amp;gt;7&amp;lt;/dst_user_id&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR x19---&amp;gt;        &amp;lt;userfield&amp;gt;&amp;lt;/userfield&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR x4---&amp;gt;        &amp;lt;uniqueid&amp;gt;1232113379.3&amp;lt;/uniqueid&amp;gt;&lt;br /&gt;
      &amp;lt;/call&amp;gt;&lt;br /&gt;
    &amp;lt;/calls&amp;gt;&lt;br /&gt;
  &amp;lt;/calls_stat&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' that calldate is in system(server) Time Zone.&lt;br /&gt;
&lt;br /&gt;
'''Errors:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt; – '''Allow API globally''' setting is unchecked.&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt; – Such username does not exist in the database or it was not specified.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
* &amp;lt;error&amp;gt;User was not found&amp;lt;/error&amp;gt; – User was not found using user_id. Use correct user_id.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31504</id>
		<title>MOR API users get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31504"/>
		<updated>2026-03-31T08:25:20Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from [[MOR 8| MOR 8]]---&amp;gt;&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[MOR API]] for getting list of users&lt;br /&gt;
&lt;br /&gt;
*'''Admin or Accountant with permissions''' can get all users list&lt;br /&gt;
*'''Reseller''' can get his own users list&lt;br /&gt;
*'''Partner''' can get his resellers and users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X8''' call: /api/users_get&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameters===  &lt;br /&gt;
&lt;br /&gt;
Parameters that are '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* u - username to log in. '''Required'''.&lt;br /&gt;
* p - password to log in. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameters that are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* uniquehash - user's uniquehash. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
*[[MOR API hash construction | hash]] – SHA1 hash constructed using '''API Secret Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''note''': if using the browser's URL bar, then you should encode special symbols (these symbols usually appear in the p parameter). Example:&lt;br /&gt;
* for % use %25&lt;br /&gt;
* for # use %23&lt;br /&gt;
* for + use %2B&lt;br /&gt;
* for &amp;amp; use %26&lt;br /&gt;
* for * use %2A&lt;br /&gt;
* for ? use %3F&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
If API Secret Key = secret&lt;br /&gt;
&lt;br /&gt;
You send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/users_get?u=admin&amp;amp;p=admin1&amp;amp;test=1&amp;amp;hash=c420ef706a02e6449994b7575b25ef5f74cc722b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
   &amp;lt;users&amp;gt;&lt;br /&gt;
    &amp;lt;user&amp;gt;&lt;br /&gt;
     &amp;lt;id&amp;gt; ... &amp;lt;/id&amp;gt;&lt;br /&gt;
     &amp;lt;username&amp;gt; ... &amp;lt;/username&amp;gt;&lt;br /&gt;
     &amp;lt;first_name&amp;gt; ... &amp;lt;/first_nam&amp;gt;&lt;br /&gt;
     &amp;lt;last_name&amp;gt; ... &amp;lt;/last_name&amp;gt;&lt;br /&gt;
     &amp;lt;balance&amp;gt; ... &amp;lt;/balance&amp;gt;&lt;br /&gt;
     &amp;lt;blocked&amp;gt; ... &amp;lt;/blocked&amp;gt;&lt;br /&gt;
     &amp;lt;lcr_id&amp;gt; ... &amp;lt;/lcr_id&amp;gt;&lt;br /&gt;
     &amp;lt;tariff_id&amp;gt; ... &amp;lt;/tariff_id&amp;gt;&lt;br /&gt;
     &amp;lt;owner_id&amp;gt; ... &amp;lt;/owner_id&amp;gt;&lt;br /&gt;
     &amp;lt;usertype&amp;gt; ... &amp;lt;/usertype&amp;gt;&lt;br /&gt;
     &amp;lt;hidden&amp;gt; ... &amp;lt;/hidden&amp;gt;&lt;br /&gt;
    &amp;lt;/user&amp;gt;&lt;br /&gt;
   &amp;lt;/users&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Errors:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt; – '''Allow API globally''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;GET Requests are disabled&amp;lt;/error&amp;gt; – '''Allow GET API''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt;  – User is not allowed to to get users list or username and password are not correct.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order of parameters while concatenating the hash_string&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to view this page&amp;lt;/error&amp;gt; – User is not authorized to get users list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31503</id>
		<title>MOR API users get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31503"/>
		<updated>2026-03-31T08:25:01Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from [[MOR 8| MOR 8]]---&amp;gt;&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[MOR API]] for getting list of users&lt;br /&gt;
&lt;br /&gt;
*'''Admin or Accountant with permissions''' can get all users list&lt;br /&gt;
*'''Reseller''' can get his own users list&lt;br /&gt;
*'''Partner''' can get his resellers and users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X8''' call: /api/users_get&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameters===  &lt;br /&gt;
&lt;br /&gt;
Parameters that are '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* u - username to log in. '''Required'''.&lt;br /&gt;
* p - password to log in. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameters that are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* uniquehash - user's uniquehash. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
*[[MOR API hash construction | hash]] – SHA1 hash constructed using '''API Secret Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''note''': if using the browser's URL bar, then you should encode special symbols (these symbols usually appear in the p parameter). Example:&lt;br /&gt;
* for % use %25.&lt;br /&gt;
* for # use %23.&lt;br /&gt;
* for + use %2B.&lt;br /&gt;
* for &amp;amp; use %26.&lt;br /&gt;
* for * use %2A.&lt;br /&gt;
* for ? use %3F.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
If API Secret Key = secret&lt;br /&gt;
&lt;br /&gt;
You send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/users_get?u=admin&amp;amp;p=admin1&amp;amp;test=1&amp;amp;hash=c420ef706a02e6449994b7575b25ef5f74cc722b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
   &amp;lt;users&amp;gt;&lt;br /&gt;
    &amp;lt;user&amp;gt;&lt;br /&gt;
     &amp;lt;id&amp;gt; ... &amp;lt;/id&amp;gt;&lt;br /&gt;
     &amp;lt;username&amp;gt; ... &amp;lt;/username&amp;gt;&lt;br /&gt;
     &amp;lt;first_name&amp;gt; ... &amp;lt;/first_nam&amp;gt;&lt;br /&gt;
     &amp;lt;last_name&amp;gt; ... &amp;lt;/last_name&amp;gt;&lt;br /&gt;
     &amp;lt;balance&amp;gt; ... &amp;lt;/balance&amp;gt;&lt;br /&gt;
     &amp;lt;blocked&amp;gt; ... &amp;lt;/blocked&amp;gt;&lt;br /&gt;
     &amp;lt;lcr_id&amp;gt; ... &amp;lt;/lcr_id&amp;gt;&lt;br /&gt;
     &amp;lt;tariff_id&amp;gt; ... &amp;lt;/tariff_id&amp;gt;&lt;br /&gt;
     &amp;lt;owner_id&amp;gt; ... &amp;lt;/owner_id&amp;gt;&lt;br /&gt;
     &amp;lt;usertype&amp;gt; ... &amp;lt;/usertype&amp;gt;&lt;br /&gt;
     &amp;lt;hidden&amp;gt; ... &amp;lt;/hidden&amp;gt;&lt;br /&gt;
    &amp;lt;/user&amp;gt;&lt;br /&gt;
   &amp;lt;/users&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Errors:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt; – '''Allow API globally''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;GET Requests are disabled&amp;lt;/error&amp;gt; – '''Allow GET API''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt;  – User is not allowed to to get users list or username and password are not correct.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order of parameters while concatenating the hash_string&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to view this page&amp;lt;/error&amp;gt; – User is not authorized to get users list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Spy_real-time_calls&amp;diff=31496</id>
		<title>Spy real-time calls</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Spy_real-time_calls&amp;diff=31496"/>
		<updated>2026-03-26T15:34:22Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* How this functionality works? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=About=&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 11---&amp;gt;&lt;br /&gt;
This functionality is a part of [[Monitorings Addon]] addon and is used to spy user's real-time calls. &lt;br /&gt;
&lt;br /&gt;
MOR user's which are allowed to use this functionality:&lt;br /&gt;
&lt;br /&gt;
* Admin&lt;br /&gt;
* Accountant (with Allow Spy Calls (Monitoring) permission)&lt;br /&gt;
* Reseller (active calls must be enabled for resellers)&lt;br /&gt;
* User (with Active Calls permission)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''Technical Troubleshooting''' – Service providers and engineers can monitor test calls in real time to identify issues like echo, packet loss, or one-way audio.  &lt;br /&gt;
* '''Enterprise Quality Assurance''' – Companies can monitor staff calls for quality assurance or regulatory compliance.  &lt;br /&gt;
* '''Call Center Supervision''' – Supervisors can listen to agents’ calls in real time to evaluate service quality, check compliance, and ensure scripts are followed.  &lt;br /&gt;
* '''Training &amp;amp; Onboarding''' – Trainers can silently monitor calls of new employees. In &amp;quot;whisper mode,&amp;quot; they can coach the agent without the customer hearing.  &lt;br /&gt;
* '''Live Support Escalation''' – Managers can &amp;quot;barge in&amp;quot; during critical calls to assist agents with difficult situations, ensuring better customer satisfaction.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==How this functionality works?==&lt;br /&gt;
&lt;br /&gt;
1. The manager selects a device where he will receive calls from the system when he wants to spy his user (this has to be done only once).&lt;br /&gt;
&lt;br /&gt;
2. Manager configures his phone to be able to answer it.&lt;br /&gt;
&lt;br /&gt;
3. Manager goes to active calls and presses a Spy icon on a desired call:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Active_calls_spy.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
4. MOR system sends a call to a device set in step 1.&lt;br /&gt;
&lt;br /&gt;
5. Manager answer's the call from the system and is able to listen.&lt;br /&gt;
&lt;br /&gt;
6. By default, in the Active Calls page Spy device from the user settings is shown. The manager can also select another Spy device in the Active Calls page.&lt;br /&gt;
&lt;br /&gt;
Manager can also switch between different SPY modes by pressing:&lt;br /&gt;
&lt;br /&gt;
digit 4 - spy mode (listen only);&lt;br /&gt;
&lt;br /&gt;
digit 5 - whisper mode (spying channel can talk to the spied-on channel);&lt;br /&gt;
&lt;br /&gt;
digit 6 - barge mode (talk to both channels involved in the call).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please note that it is not possible to spy calls if their Server IDs do not match Spy Device Server ID of the user (admin/reseller) who is viewing the calls. Icons for such calls are fainted:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Activecalls spy.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enable/disable this functionality==&lt;br /&gt;
&lt;br /&gt;
===Enable===&lt;br /&gt;
&lt;br /&gt;
1. For administrator select Spy device in Personal Menu -&amp;gt; Details. &lt;br /&gt;
&lt;br /&gt;
2. For Resellers login as Reseller and go to PERSONAL MENU -&amp;gt; Personal Details.&lt;br /&gt;
&lt;br /&gt;
Select a desired device where you want the system to send a call being spied:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Select_chan_spy_device.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Disable===&lt;br /&gt;
&lt;br /&gt;
You can also globally disable ChanSpy. Go to '''Setup''' -&amp;gt; '''Settings''' -&amp;gt; '''Variuos'''. You will see this setting:&lt;br /&gt;
&lt;br /&gt;
[[File:Chanspy.jpg]]&lt;br /&gt;
&lt;br /&gt;
Tick &amp;quot;Chanspy is disabled globaly:&amp;quot; and click &amp;quot;Save changes&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What is needed to use this feature?==&lt;br /&gt;
&lt;br /&gt;
* '''Admin''': System must have [[Monitorings Addon]]&lt;br /&gt;
* '''Reseller''': System must have [[Monitorings Addon]] and [[Active_Calls|active calls must be enabled]] for resellers.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other setttings==&lt;br /&gt;
&lt;br /&gt;
When spying you '''can press #''' to increase/decrease sound volume.&lt;br /&gt;
&lt;br /&gt;
Available sound levels:&lt;br /&gt;
&lt;br /&gt;
1 2 3 4 -4 -3 -2 -1 '''0'''(default)&lt;br /&gt;
&lt;br /&gt;
'''Here''':&lt;br /&gt;
&lt;br /&gt;
'''-4''' - is the quietest&lt;br /&gt;
&lt;br /&gt;
'''4''' - is the loudest&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
If you have 2 Asterisk servers in your system, both devices for the &amp;quot;Spy action&amp;quot; have to registered to the same Asterisk server.&lt;br /&gt;
&lt;br /&gt;
If source of few calls is same Device/Provider it is possible to SPY on one of those calls only.&lt;br /&gt;
&lt;br /&gt;
If you have a system with a proxy, Spy functionality will not work.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Monitorings_Addon|Monitorings addon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:Active_calls_spy.png&amp;diff=31495</id>
		<title>File:Active calls spy.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:Active_calls_spy.png&amp;diff=31495"/>
		<updated>2026-03-26T15:21:21Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:Active calls spy.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31494</id>
		<title>MOR API users get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31494"/>
		<updated>2026-03-25T13:37:37Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from [[MOR 8| MOR 8]]---&amp;gt;&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[MOR API]] for getting list of users&lt;br /&gt;
&lt;br /&gt;
*'''Admin or Accountant with permissions''' can get all users list&lt;br /&gt;
*'''Reseller''' can get his own users list&lt;br /&gt;
*'''Partner''' can get his resellers and users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X8''' call: /api/users_get&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameters===  &lt;br /&gt;
&lt;br /&gt;
Parameters that are '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* u - username to log in. '''Required'''.&lt;br /&gt;
* p - password to log in. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameters that are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* uniquehash - user's uniquehash. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
*[[MOR API hash construction | hash]] – SHA1 hash constructed using '''API Secret Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''note''': if using the browser's URL bar, then you should encode special symbols (these symbols usually appear in the p parameter). Example:&lt;br /&gt;
* for % use %25.&lt;br /&gt;
* for # use %23.&lt;br /&gt;
* for + use %2B.&lt;br /&gt;
* for &amp;amp; use %26.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
If API Secret Key = secret&lt;br /&gt;
&lt;br /&gt;
You send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/users_get?u=admin&amp;amp;p=admin1&amp;amp;test=1&amp;amp;hash=c420ef706a02e6449994b7575b25ef5f74cc722b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
   &amp;lt;users&amp;gt;&lt;br /&gt;
    &amp;lt;user&amp;gt;&lt;br /&gt;
     &amp;lt;id&amp;gt; ... &amp;lt;/id&amp;gt;&lt;br /&gt;
     &amp;lt;username&amp;gt; ... &amp;lt;/username&amp;gt;&lt;br /&gt;
     &amp;lt;first_name&amp;gt; ... &amp;lt;/first_nam&amp;gt;&lt;br /&gt;
     &amp;lt;last_name&amp;gt; ... &amp;lt;/last_name&amp;gt;&lt;br /&gt;
     &amp;lt;balance&amp;gt; ... &amp;lt;/balance&amp;gt;&lt;br /&gt;
     &amp;lt;blocked&amp;gt; ... &amp;lt;/blocked&amp;gt;&lt;br /&gt;
     &amp;lt;lcr_id&amp;gt; ... &amp;lt;/lcr_id&amp;gt;&lt;br /&gt;
     &amp;lt;tariff_id&amp;gt; ... &amp;lt;/tariff_id&amp;gt;&lt;br /&gt;
     &amp;lt;owner_id&amp;gt; ... &amp;lt;/owner_id&amp;gt;&lt;br /&gt;
     &amp;lt;usertype&amp;gt; ... &amp;lt;/usertype&amp;gt;&lt;br /&gt;
     &amp;lt;hidden&amp;gt; ... &amp;lt;/hidden&amp;gt;&lt;br /&gt;
    &amp;lt;/user&amp;gt;&lt;br /&gt;
   &amp;lt;/users&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Errors:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt; – '''Allow API globally''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;GET Requests are disabled&amp;lt;/error&amp;gt; – '''Allow GET API''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt;  – User is not allowed to to get users list or username and password are not correct.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order of parameters while concatenating the hash_string&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to view this page&amp;lt;/error&amp;gt; – User is not authorized to get users list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_Subscriptions_get&amp;diff=31493</id>
		<title>MOR API Subscriptions get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_Subscriptions_get&amp;diff=31493"/>
		<updated>2026-03-25T13:37:31Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parametres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: Available from MOR X5 =&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
[[MOR API]] Subscriptions get&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X5''' Call: '''/api/subscriptions_get'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u - username for authentication. '''Required'''.&lt;br /&gt;
* service_id - Subscription's Service id.&lt;br /&gt;
* subscription_activation_start - Subscription's Activation Start timestamp in System Time Zone (if defined - only time equal to it or after it).&lt;br /&gt;
* subscription_activation_end - Subscription's Activation End timestamp in System Time Zone (if defined - only time equal to it or before it).&lt;br /&gt;
* subscription_memo - Subscription's memo.&lt;br /&gt;
* subscription_until_canceled - defines if Subscription can be Until canceled - can not to have Activation End (0 - off, 1 - on, default - off). &lt;br /&gt;
* user_id - Subscription's User id&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have: API Secret Key = secret&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/subscriptions_get?&amp;amp;u=admin&amp;amp;service_id=2&amp;amp;subscription_activation_start=1307167264&amp;amp;subscription_activation_end=1307167265&lt;br /&gt;
 &amp;amp;subscription_memo=Subscriptions memo&amp;amp;subscription_until_canceled=1&amp;amp;user_id=2&amp;amp;hash=e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 &lt;br /&gt;
'''NOTE that username, from, and max_result are not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;subscriptions&amp;gt;&lt;br /&gt;
      &amp;lt;subscription&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;231&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;user&amp;gt;Test User #1&amp;lt;/user&amp;gt;&lt;br /&gt;
        &amp;lt;device&amp;gt;&amp;lt;/device&amp;gt;&lt;br /&gt;
        &amp;lt;service&amp;gt;Service Name&amp;lt;/service&amp;gt;&lt;br /&gt;
        &amp;lt;from&amp;gt;2011-06-04 06:01:04 +0200&amp;lt;/from&amp;gt;&lt;br /&gt;
        &amp;lt;till&amp;gt;&amp;lt;/till&amp;gt;&lt;br /&gt;
        &amp;lt;time_left&amp;gt;&amp;lt;/time_left&amp;gt;&lt;br /&gt;
        &amp;lt;memo&amp;gt;Subscriptions memo&amp;lt;/memo&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;Subscription type&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;price&amp;gt;&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;user_id&amp;gt;&amp;lt;/user_id&amp;gt;&lt;br /&gt;
      &amp;lt;/subscription&amp;gt;&lt;br /&gt;
    &amp;lt;/subscriptions&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;No Subscriptions found&amp;lt;/error&amp;gt; - Subscription was not found using specified params. Use correct params.&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to manage Subscriptions&amp;lt;/error&amp;gt; - Such username does not exist in the database or User does not have rights to manage Subscriptions.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; - Hash was not correct. Check API_Secret_Key while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;br /&gt;
* [[MOR API subscription delete]]&lt;br /&gt;
* [[MOR API subscription create]]&lt;br /&gt;
* [[MOR API subscription update]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_devices_get&amp;diff=31492</id>
		<title>MOR API devices get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_devices_get&amp;diff=31492"/>
		<updated>2026-03-25T13:37:24Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parametres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X3---&amp;gt;&lt;br /&gt;
[[MOR API]] Device list&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X4''' call: '''/api/devices_get'''&lt;br /&gt;
* For Backwards-compatibility old name 'device_list' is also usable. Call: '''/api/device_list'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u – username for authentication. This is owner of User (admin or reseller) '''Required'''.&lt;br /&gt;
* user_id – this specifies user id whose device list to show. '''Required'''.&lt;br /&gt;
* [[MOR API hash construction | hash]] – SHA1 hash constructed using '''user_id''' and '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* show_hidden_devices – by default it is 1. When show_hidden_devices=0, then Blocked/Hidden devices will not be shown.&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Returning XML is put in file. That file is gziped and returned as a response content.&lt;br /&gt;
&lt;br /&gt;
Please note that only admin/reseller can retrieve Device list and only for their own Users.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have API Secret Key = 456789, user_id = 100&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/devices_get?u=admin&amp;amp;user_id=100&amp;amp;hash=71516eea4850f7e0300ac86adf9fb64bca845aa7&lt;br /&gt;
&lt;br /&gt;
'''* Note that username, password, from, and max_result are not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
   &amp;lt;devices&amp;gt;&lt;br /&gt;
     &amp;lt;device&amp;gt;&lt;br /&gt;
        &amp;lt;device_id&amp;gt;device_id&amp;lt;/device_id&amp;gt;&lt;br /&gt;
        &amp;lt;device_type&amp;gt;device_type&amp;lt;/device_type&amp;gt;&lt;br /&gt;
        &amp;lt;devicegroup_id&amp;gt;devicegroup_id&amp;lt;/devicegroup_id&amp;gt;&lt;br /&gt;
        &amp;lt;primary_device&amp;gt;yes|no&amp;lt;/primary_device&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;device_username&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;secret&amp;gt;device_password&amp;lt;/secret&amp;gt;&lt;br /&gt;
        &amp;lt;ipaddr&amp;gt;device_ipaddr&amp;lt;/ipaddr&amp;gt;&lt;br /&gt;
        &amp;lt;port&amp;gt;device_port&amp;lt;/port&amp;gt;&lt;br /&gt;
      &amp;lt;/device&amp;gt;&lt;br /&gt;
      &amp;lt;device&amp;gt;&lt;br /&gt;
        &amp;lt;device_id&amp;gt;second_device_id&amp;lt;/device_id&amp;gt;&lt;br /&gt;
        &amp;lt;device_type&amp;gt;second_device_type&amp;lt;/device_type&amp;gt;&lt;br /&gt;
        &amp;lt;devicegroup_id&amp;gt;second_devicegroup_id&amp;lt;/devicegroup_id&amp;gt;&lt;br /&gt;
        &amp;lt;primary_device&amp;gt;yes|no&amp;lt;/primary_device&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;second_device_username&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;secret&amp;gt;second_device_password&amp;lt;/secret&amp;gt;&lt;br /&gt;
        &amp;lt;ipaddr&amp;gt;second_device_ipaddr&amp;lt;/ipaddr&amp;gt;&lt;br /&gt;
        &amp;lt;port&amp;gt;second_device_port&amp;lt;/port&amp;gt;&lt;br /&gt;
        &amp;lt;callerid&amp;gt;device_callerid&amp;lt;/callerid&amp;gt;&lt;br /&gt;
        &amp;lt;location_id&amp;gt;id&amp;lt;/location_id&amp;gt;&lt;br /&gt;
        &amp;lt;nat&amp;gt;nat_option&amp;lt;/nat&amp;gt;&lt;br /&gt;
      &amp;lt;/device&amp;gt;&lt;br /&gt;
    &amp;lt;/devices&amp;gt;&lt;br /&gt;
  &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;User not found&amp;lt;/error&amp;gt; – User was not found.&lt;br /&gt;
* &amp;lt;error&amp;gt;user_id is empty&amp;lt;/error&amp;gt; – user_id was not sent.&lt;br /&gt;
* &amp;lt;error&amp;gt;Bad login&amp;lt;/error&amp;gt; – User was not found by username and password. Use correct username and password. Make sure that username (u) and password (p) are specified.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_user_calls_get&amp;diff=31491</id>
		<title>MOR API user calls get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_user_calls_get&amp;diff=31491"/>
		<updated>2026-03-25T13:37:10Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from MOR 8---&amp;gt;&lt;br /&gt;
=Description=&lt;br /&gt;
Retrieves list of calls in selected time period for specified User/Device.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Admin''' - can get any user calls&lt;br /&gt;
&lt;br /&gt;
'''Reseller''' - can get his and his users calls.&lt;br /&gt;
&lt;br /&gt;
'''User''' - can get his own calls.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X4''' call: '''/api/user_calls_get'''&lt;br /&gt;
* For Backwards-compatibility old name 'user_calls' is also usable. Call: '''/api/user_calls'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parameters===  &lt;br /&gt;
&lt;br /&gt;
Parameters which are '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* period_start - Unix timestamp of calls period starting date. (Default: Today at 00:00). &amp;lt;!---Nuo MOR 8---&amp;gt;&lt;br /&gt;
* period_end - Unix timestamp of calls period end date. (Default: Today at 23:59). &amp;lt;!---Nuo MOR 8---&amp;gt; &lt;br /&gt;
* s_user - User's ID in MOR database. '''Required, if s_reseller is not used'''. &amp;lt;!---Nuo MOR 8. Nuo mor 9 iš user_id tapo s_user---&amp;gt;&lt;br /&gt;
* s_call_type - Call type. Possible values [all, answered, no answer, failed, busy]. (Default: all) &amp;lt;!---Nuo MOR 8. Nuo mor 9 s_call_type---&amp;gt;&lt;br /&gt;
* s_device - Device ID in MOR database. Possible values [all, numeric value of device_id]. (Default: all). &amp;lt;!---Nuo MOR 8. Nuo mor 9 s_device---&amp;gt;&lt;br /&gt;
* s_provider - Provider ID in MOR database. Possible values [all, numeric value of provider_id]. (Default: all).Only for Admin and Reseller PRO.  &amp;lt;!---Nuo MOR 9. From mor 10 works with reseller if has own_providers---&amp;gt;&lt;br /&gt;
* s_hgc - Hangup cause code ID in MOR database. Possible values [all, numeric value of hangup_cause_code_id]. (Default: all). Only for Admin and Reseller if Show HGC for Resellers is ON.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* s_did - show calls made through specific DID. Possible values [all, calls.did_id]. (Default: all). Only for Admin.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* s_destination - prefix.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* order_by - Possible values [time, src, dst, prefix, nice_billsec, hgc, server, p_name, p_rate, p_price, reseller, r_rate, r_price, user, u_rate, u_price, number, d_provider, d_inc, d_owner]. (Default: time).  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* order_desc - Possible values [0,1]. (Default: 0).  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* only_did - show calls that only went through did. Possible values [0,1]. (Default: 0).   &amp;lt;!---Nuo MOR 11---&amp;gt;&lt;br /&gt;
* s_uniqueid - returns specific Call by uniqueid. Date parameters are ignored in this case.&lt;br /&gt;
* s_callback_uniqueid - returns Call(s) by callback uniqueid. Date parameters are ignored in this case. Only works when '''use_callback_uniqueid''' setting is enabled in [[Mor.conf|mor.conf]].&lt;br /&gt;
&lt;br /&gt;
'''Note that parameters are shown in the same order as they have to be when generating the hash. Last parameter in a row is API_Secret_Key'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Parameters which are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using parameters above and API_Secret_Key ([[MOR API hash construction | More described in Constructing hash]]). '''Required''' (if setting '''Disable hash checking''' is not checked). &lt;br /&gt;
* u - username  for authentication. '''Required'''. &amp;lt;!---NUO x4 password nereikalaujamas---&amp;gt;&lt;br /&gt;
* &amp;lt;!---Nuo MOR X6---&amp;gt; s_reseller - Reseller type User ID in MOR database.  (Default: all).&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;!---Nuo MOR 8 buvo, o nuo MOR 9 nebėra direction---&amp;gt; &amp;lt;!---Iki nuo 11 buvo s_did_pattern, s_reseller_did, vėliau nebeliko---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
If you want find s_call_type=all calls for s_user = 5, through s_device=7 in period from 2011-11-01 23:59:59 till 2011-11-30 23:59:59, and your API Secret Key = 456789&lt;br /&gt;
&lt;br /&gt;
You send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/user_calls_get?u=username&amp;amp;s_user=5&amp;amp;period_start=1320191999&amp;amp;period_end=1322697599&amp;amp;s_device=7&amp;amp;s_call_type=all&amp;amp;hash=df2983700ffecb52e6649f0cb3981b66537083a4 &lt;br /&gt;
&lt;br /&gt;
'''* Note that username is not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success:''' Everything is ok. You get the list of calls if there is any:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;pagename&amp;gt;Calls&amp;lt;/pagename&amp;gt;&lt;br /&gt;
  &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt;&lt;br /&gt;
  &amp;lt;error_msg&amp;gt;&amp;lt;/error_msg&amp;gt;&lt;br /&gt;
  &amp;lt;userid&amp;gt;0&amp;lt;/userid&amp;gt;&lt;br /&gt;
  &amp;lt;username&amp;gt;admin&amp;lt;/username&amp;gt;&lt;br /&gt;
  &amp;lt;total_calls&amp;gt;1&amp;lt;/total_calls&amp;gt;&lt;br /&gt;
  &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
  &amp;lt;calls_stat&amp;gt;&lt;br /&gt;
    &amp;lt;period&amp;gt;&lt;br /&gt;
      &amp;lt;period_start&amp;gt;2008-03-07 11:48:18&amp;lt;/period_start&amp;gt;&lt;br /&gt;
      &amp;lt;period_end&amp;gt;2012-03-07 11:46:01&amp;lt;/period_end&amp;gt;&lt;br /&gt;
    &amp;lt;/period&amp;gt;&lt;br /&gt;
    &amp;lt;show_user&amp;gt;all&amp;lt;/show_user&amp;gt;&lt;br /&gt;
    &amp;lt;show_device&amp;gt;all&amp;lt;/show_device&amp;gt;&lt;br /&gt;
    &amp;lt;show_status&amp;gt;all&amp;lt;/show_status&amp;gt;&lt;br /&gt;
    &amp;lt;show_provider&amp;gt;4&amp;lt;/show_provider&amp;gt;&lt;br /&gt;
    &amp;lt;show_hgc&amp;gt;all&amp;lt;/show_hgc&amp;gt;&lt;br /&gt;
    &amp;lt;show_did&amp;gt;1&amp;lt;/show_did&amp;gt;&lt;br /&gt;
    &amp;lt;calls&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;&lt;br /&gt;
        &amp;lt;calldate2&amp;gt;2009-01-02 00:00:01&amp;lt;/calldate2&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR x3---&amp;gt;        &amp;lt;timezone&amp;gt;GMT+02:00&amp;lt;/timezone&amp;gt;&lt;br /&gt;
        &amp;lt;clid&amp;gt;37046246362&amp;lt;/clid&amp;gt;&lt;br /&gt;
        &amp;lt;destination&amp;gt;Lithuania MOB Lithuania mobile&amp;lt;/destination&amp;gt;&lt;br /&gt;
        &amp;lt;did&amp;gt;37063042438&amp;lt;/did&amp;gt;&lt;br /&gt;
        &amp;lt;did_inc_price&amp;gt;1.0&amp;lt;/did_inc_price&amp;gt;&lt;br /&gt;
        &amp;lt;did_price&amp;gt;1.0&amp;lt;/did_price&amp;gt;&lt;br /&gt;
        &amp;lt;did_prov_price&amp;gt;1.0&amp;lt;/did_prov_price&amp;gt;&lt;br /&gt;
        &amp;lt;dispod&amp;gt;ANSWERED(16)&amp;lt;/dispod&amp;gt;&lt;br /&gt;
        &amp;lt;dst&amp;gt;37063042438&amp;lt;/dst&amp;gt;&lt;br /&gt;
        &amp;lt;nice_billsec&amp;gt;20.0&amp;lt;/nice_billsec&amp;gt;&lt;br /&gt;
        &amp;lt;nice_reseller&amp;gt; &amp;lt;/nice_reseller&amp;gt;&lt;br /&gt;
        &amp;lt;prefix&amp;gt;3706&amp;lt;/prefix&amp;gt;&lt;br /&gt;
        &amp;lt;profit&amp;gt;4&amp;lt;/profit&amp;gt;&lt;br /&gt;
        &amp;lt;provider_name&amp;gt;Test Provider&amp;lt;/provider_name&amp;gt;&lt;br /&gt;
        &amp;lt;provider_price&amp;gt;1.0&amp;lt;/provider_price&amp;gt;&lt;br /&gt;
        &amp;lt;provider_rate&amp;gt;0.0&amp;lt;/provider_rate&amp;gt;&lt;br /&gt;
        &amp;lt;reseller_price&amp;gt;0.0&amp;lt;/reseller_price&amp;gt;&lt;br /&gt;
        &amp;lt;reseller_rate&amp;gt;0.0&amp;lt;/reseller_rate&amp;gt;&lt;br /&gt;
        &amp;lt;server_id&amp;gt;1&amp;lt;/server_id&amp;gt;&lt;br /&gt;
        &amp;lt;src&amp;gt;37046246362&amp;lt;/src&amp;gt;&lt;br /&gt;
        &amp;lt;user&amp;gt;test_user&amp;lt;/user&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X11---&amp;gt;        &amp;lt;user_currency&amp;gt;EUR&amp;lt;/user_currency&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X11---&amp;gt;        &amp;lt;user_exchange_rate&amp;gt;0.744100000000000&amp;lt;/user_exchange_rate&amp;gt;&lt;br /&gt;
        &amp;lt;user_id&amp;gt;5&amp;lt;/user_id&amp;gt;&lt;br /&gt;
        &amp;lt;user_price&amp;gt;2.0&amp;lt;/user_price&amp;gt;&lt;br /&gt;
        &amp;lt;user_rate&amp;gt;0.0&amp;lt;/user_rate&amp;gt;&lt;br /&gt;
        &amp;lt;dst_user_id&amp;gt;7&amp;lt;/dst_user_id&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR x4---&amp;gt;        &amp;lt;uniqueid&amp;gt;1232113379.3&amp;lt;/uniqueid&amp;gt;&lt;br /&gt;
      &amp;lt;/call&amp;gt;&lt;br /&gt;
    &amp;lt;/calls&amp;gt;&lt;br /&gt;
  &amp;lt;/calls_stat&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' that calldate is in system(server) Time Zone.&lt;br /&gt;
&lt;br /&gt;
'''Errors:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt; – '''Allow API globally''' setting is unchecked.&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt; – Such username does not exist in the database or it was not specified.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
* &amp;lt;error&amp;gt;User was not found&amp;lt;/error&amp;gt; – User was not found using user_id. Use correct user_id.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_Services_get&amp;diff=31490</id>
		<title>MOR API Services get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_Services_get&amp;diff=31490"/>
		<updated>2026-03-25T13:36:53Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: Available from MOR X5 =&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
[[MOR API]] Services get&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X5''' Call: '''/api/services_get'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u - username for authentication. '''Required'''.&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* from - from which record to show results.&lt;br /&gt;
* max_results - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have: API Secret Key = 123456&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/services_get?u=admin&amp;amp;hash=7c4a8d09ca3762af61e59520943dc26494f8941b&lt;br /&gt;
'''* Note that all parameters are not included in the hash, but &amp;quot;u&amp;quot; and hash are required for the API.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;services&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_periodic_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;periodic_fee&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;month&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;10.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;0&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_one_time_fee_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment2&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;one_time_fee&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;12.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity/&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;0&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_flat_rate_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment3&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;flat_rate&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;1.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;1&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
  &amp;lt;/services&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;No Services found&amp;lt;/error&amp;gt; - Service was not found using specified ID. Use correct ID.&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to manage Services&amp;lt;/error&amp;gt; - Such username does not exist in the database or User does not have rights to manage Services.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; - Hash was not correct. Check API_Secret_Key while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_Subscriptions_get&amp;diff=31482</id>
		<title>MOR API Subscriptions get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_Subscriptions_get&amp;diff=31482"/>
		<updated>2026-03-24T11:22:14Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: Available from MOR X5 =&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
[[MOR API]] Subscriptions get&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X5''' Call: '''/api/subscriptions_get'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u - username for authentication. '''Required'''.&lt;br /&gt;
* service_id - Subscription's Service id.&lt;br /&gt;
* subscription_activation_start - Subscription's Activation Start timestamp in System Time Zone (if defined - only time equal to it or after it).&lt;br /&gt;
* subscription_activation_end - Subscription's Activation End timestamp in System Time Zone (if defined - only time equal to it or before it).&lt;br /&gt;
* subscription_memo - Subscription's memo.&lt;br /&gt;
* subscription_until_canceled - defines if Subscription can be Until canceled - can not to have Activation End (0 - off, 1 - on, default - off). &lt;br /&gt;
* user_id - Subscription's User id&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have: API Secret Key = secret&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/subscriptions_get?&amp;amp;u=admin&amp;amp;service_id=2&amp;amp;subscription_activation_start=1307167264&amp;amp;subscription_activation_end=1307167265&lt;br /&gt;
 &amp;amp;subscription_memo=Subscriptions memo&amp;amp;subscription_until_canceled=1&amp;amp;user_id=2&amp;amp;hash=e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 &lt;br /&gt;
'''NOTE that username, from, and max_result are not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;subscriptions&amp;gt;&lt;br /&gt;
      &amp;lt;subscription&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;231&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;user&amp;gt;Test User #1&amp;lt;/user&amp;gt;&lt;br /&gt;
        &amp;lt;device&amp;gt;&amp;lt;/device&amp;gt;&lt;br /&gt;
        &amp;lt;service&amp;gt;Service Name&amp;lt;/service&amp;gt;&lt;br /&gt;
        &amp;lt;from&amp;gt;2011-06-04 06:01:04 +0200&amp;lt;/from&amp;gt;&lt;br /&gt;
        &amp;lt;till&amp;gt;&amp;lt;/till&amp;gt;&lt;br /&gt;
        &amp;lt;time_left&amp;gt;&amp;lt;/time_left&amp;gt;&lt;br /&gt;
        &amp;lt;memo&amp;gt;Subscriptions memo&amp;lt;/memo&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;Subscription type&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;price&amp;gt;&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;user_id&amp;gt;&amp;lt;/user_id&amp;gt;&lt;br /&gt;
      &amp;lt;/subscription&amp;gt;&lt;br /&gt;
    &amp;lt;/subscriptions&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;No Subscriptions found&amp;lt;/error&amp;gt; - Subscription was not found using specified params. Use correct params.&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to manage Subscriptions&amp;lt;/error&amp;gt; - Such username does not exist in the database or User does not have rights to manage Subscriptions.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; - Hash was not correct. Check API_Secret_Key while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;br /&gt;
* [[MOR API subscription delete]]&lt;br /&gt;
* [[MOR API subscription create]]&lt;br /&gt;
* [[MOR API subscription update]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_devices_get&amp;diff=31481</id>
		<title>MOR API devices get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_devices_get&amp;diff=31481"/>
		<updated>2026-03-24T11:21:29Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X3---&amp;gt;&lt;br /&gt;
[[MOR API]] Device list&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X4''' call: '''/api/devices_get'''&lt;br /&gt;
* For Backwards-compatibility old name 'device_list' is also usable. Call: '''/api/device_list'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u – username for authentication. This is owner of User (admin or reseller) '''Required'''.&lt;br /&gt;
* user_id – this specifies user id whose device list to show. '''Required'''.&lt;br /&gt;
* [[MOR API hash construction | hash]] – SHA1 hash constructed using '''user_id''' and '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* show_hidden_devices – by default it is 1. When show_hidden_devices=0, then Blocked/Hidden devices will not be shown.&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Returning XML is put in file. That file is gziped and returned as a response content.&lt;br /&gt;
&lt;br /&gt;
Please note that only admin/reseller can retrieve Device list and only for their own Users.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have API Secret Key = 456789, user_id = 100&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/devices_get?u=admin&amp;amp;user_id=100&amp;amp;hash=71516eea4850f7e0300ac86adf9fb64bca845aa7&lt;br /&gt;
&lt;br /&gt;
'''* Note that username, password, from, and max_result are not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
   &amp;lt;devices&amp;gt;&lt;br /&gt;
     &amp;lt;device&amp;gt;&lt;br /&gt;
        &amp;lt;device_id&amp;gt;device_id&amp;lt;/device_id&amp;gt;&lt;br /&gt;
        &amp;lt;device_type&amp;gt;device_type&amp;lt;/device_type&amp;gt;&lt;br /&gt;
        &amp;lt;devicegroup_id&amp;gt;devicegroup_id&amp;lt;/devicegroup_id&amp;gt;&lt;br /&gt;
        &amp;lt;primary_device&amp;gt;yes|no&amp;lt;/primary_device&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;device_username&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;secret&amp;gt;device_password&amp;lt;/secret&amp;gt;&lt;br /&gt;
        &amp;lt;ipaddr&amp;gt;device_ipaddr&amp;lt;/ipaddr&amp;gt;&lt;br /&gt;
        &amp;lt;port&amp;gt;device_port&amp;lt;/port&amp;gt;&lt;br /&gt;
      &amp;lt;/device&amp;gt;&lt;br /&gt;
      &amp;lt;device&amp;gt;&lt;br /&gt;
        &amp;lt;device_id&amp;gt;second_device_id&amp;lt;/device_id&amp;gt;&lt;br /&gt;
        &amp;lt;device_type&amp;gt;second_device_type&amp;lt;/device_type&amp;gt;&lt;br /&gt;
        &amp;lt;devicegroup_id&amp;gt;second_devicegroup_id&amp;lt;/devicegroup_id&amp;gt;&lt;br /&gt;
        &amp;lt;primary_device&amp;gt;yes|no&amp;lt;/primary_device&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;second_device_username&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;secret&amp;gt;second_device_password&amp;lt;/secret&amp;gt;&lt;br /&gt;
        &amp;lt;ipaddr&amp;gt;second_device_ipaddr&amp;lt;/ipaddr&amp;gt;&lt;br /&gt;
        &amp;lt;port&amp;gt;second_device_port&amp;lt;/port&amp;gt;&lt;br /&gt;
        &amp;lt;callerid&amp;gt;device_callerid&amp;lt;/callerid&amp;gt;&lt;br /&gt;
        &amp;lt;location_id&amp;gt;id&amp;lt;/location_id&amp;gt;&lt;br /&gt;
        &amp;lt;nat&amp;gt;nat_option&amp;lt;/nat&amp;gt;&lt;br /&gt;
      &amp;lt;/device&amp;gt;&lt;br /&gt;
    &amp;lt;/devices&amp;gt;&lt;br /&gt;
  &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;User not found&amp;lt;/error&amp;gt; – User was not found.&lt;br /&gt;
* &amp;lt;error&amp;gt;user_id is empty&amp;lt;/error&amp;gt; – user_id was not sent.&lt;br /&gt;
* &amp;lt;error&amp;gt;Bad login&amp;lt;/error&amp;gt; – User was not found by username and password. Use correct username and password. Make sure that username (u) and password (p) are specified.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_Services_get&amp;diff=31480</id>
		<title>MOR API Services get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_Services_get&amp;diff=31480"/>
		<updated>2026-03-24T11:19:03Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Request */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: Available from MOR X5 =&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
[[MOR API]] Services get&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X5''' Call: '''/api/services_get'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u - username for authentication. '''Required'''.&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have: API Secret Key = 123456&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/services_get?u=admin&amp;amp;hash=7c4a8d09ca3762af61e59520943dc26494f8941b&lt;br /&gt;
'''* Note that all parameters are not included in the hash, but &amp;quot;u&amp;quot; and hash are required for the API.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;services&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_periodic_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;periodic_fee&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;month&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;10.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;0&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_one_time_fee_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment2&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;one_time_fee&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;12.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity/&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;0&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_flat_rate_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment3&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;flat_rate&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;1.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;1&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
  &amp;lt;/services&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;No Services found&amp;lt;/error&amp;gt; - Service was not found using specified ID. Use correct ID.&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to manage Services&amp;lt;/error&amp;gt; - Such username does not exist in the database or User does not have rights to manage Services.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; - Hash was not correct. Check API_Secret_Key while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_Services_get&amp;diff=31479</id>
		<title>MOR API Services get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_Services_get&amp;diff=31479"/>
		<updated>2026-03-24T11:17:37Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parametres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: Available from MOR X5 =&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
[[MOR API]] Services get&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X5''' Call: '''/api/services_get'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u - username for authentication. '''Required'''.&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have: API Secret Key = 123456&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/services_get?u=admin&amp;amp;hash=7c4a8d09ca3762af61e59520943dc26494f8941b&lt;br /&gt;
'''NOTE that username is not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;services&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_periodic_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;periodic_fee&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;month&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;10.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;0&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_one_time_fee_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment2&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;one_time_fee&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;12.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity/&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;0&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
    &amp;lt;service&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;Test_flat_rate_service&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;memo&amp;gt;Comment3&amp;lt;/memo&amp;gt;&lt;br /&gt;
      &amp;lt;type&amp;gt;flat_rate&amp;lt;/type&amp;gt;&lt;br /&gt;
      &amp;lt;period&amp;gt;&amp;lt;/period&amp;gt;&lt;br /&gt;
      &amp;lt;price&amp;gt;1.0&amp;lt;/price&amp;gt;&lt;br /&gt;
      &amp;lt;self_cost&amp;gt;0.0&amp;lt;/self_cost&amp;gt;&lt;br /&gt;
      &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
      &amp;lt;quantity&amp;gt;1&amp;lt;/quantity&amp;gt;&lt;br /&gt;
      &amp;lt;continue_call&amp;gt;1&amp;lt;/continue_call&amp;gt;&lt;br /&gt;
    &amp;lt;/service&amp;gt;&lt;br /&gt;
  &amp;lt;/services&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;No Services found&amp;lt;/error&amp;gt; - Service was not found using specified ID. Use correct ID.&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to manage Services&amp;lt;/error&amp;gt; - Such username does not exist in the database or User does not have rights to manage Services.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; - Hash was not correct. Check API_Secret_Key while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_user_calls_get&amp;diff=31478</id>
		<title>MOR API user calls get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_user_calls_get&amp;diff=31478"/>
		<updated>2026-03-24T11:16:22Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from MOR 8---&amp;gt;&lt;br /&gt;
=Description=&lt;br /&gt;
Retrieves list of calls in selected time period for specified User/Device.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Admin''' - can get any user calls&lt;br /&gt;
&lt;br /&gt;
'''Reseller''' - can get his and his users calls.&lt;br /&gt;
&lt;br /&gt;
'''User''' - can get his own calls.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X4''' call: '''/api/user_calls_get'''&lt;br /&gt;
* For Backwards-compatibility old name 'user_calls' is also usable. Call: '''/api/user_calls'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parameters===  &lt;br /&gt;
&lt;br /&gt;
Parameters which are '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* period_start - Unix timestamp of calls period starting date. (Default: Today at 00:00). &amp;lt;!---Nuo MOR 8---&amp;gt;&lt;br /&gt;
* period_end - Unix timestamp of calls period end date. (Default: Today at 23:59). &amp;lt;!---Nuo MOR 8---&amp;gt; &lt;br /&gt;
* s_user - User's ID in MOR database. '''Required, if s_reseller is not used'''. &amp;lt;!---Nuo MOR 8. Nuo mor 9 iš user_id tapo s_user---&amp;gt;&lt;br /&gt;
* s_call_type - Call type. Possible values [all, answered, no answer, failed, busy]. (Default: all) &amp;lt;!---Nuo MOR 8. Nuo mor 9 s_call_type---&amp;gt;&lt;br /&gt;
* s_device - Device ID in MOR database. Possible values [all, numeric value of device_id]. (Default: all). &amp;lt;!---Nuo MOR 8. Nuo mor 9 s_device---&amp;gt;&lt;br /&gt;
* s_provider - Provider ID in MOR database. Possible values [all, numeric value of provider_id]. (Default: all).Only for Admin and Reseller PRO.  &amp;lt;!---Nuo MOR 9. From mor 10 works with reseller if has own_providers---&amp;gt;&lt;br /&gt;
* s_hgc - Hangup cause code ID in MOR database. Possible values [all, numeric value of hangup_cause_code_id]. (Default: all). Only for Admin and Reseller if Show HGC for Resellers is ON.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* s_did - show calls made through specific DID. Possible values [all, calls.did_id]. (Default: all). Only for Admin.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* s_destination - prefix.  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* order_by - Possible values [time, src, dst, prefix, nice_billsec, hgc, server, p_name, p_rate, p_price, reseller, r_rate, r_price, user, u_rate, u_price, number, d_provider, d_inc, d_owner]. (Default: time).  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* order_desc - Possible values [0,1]. (Default: 0).  &amp;lt;!---Nuo MOR 9---&amp;gt;&lt;br /&gt;
* only_did - show calls that only went through did. Possible values [0,1]. (Default: 0).   &amp;lt;!---Nuo MOR 11---&amp;gt;&lt;br /&gt;
* s_uniqueid - returns specific Call by uniqueid. Date parameters are ignored in this case.&lt;br /&gt;
* s_callback_uniqueid - returns Call(s) by callback uniqueid. Date parameters are ignored in this case. Only works when '''use_callback_uniqueid''' setting is enabled in [[Mor.conf|mor.conf]].&lt;br /&gt;
&lt;br /&gt;
'''Note that parameters are shown in the same order as they have to be when generating the hash. Last parameter in a row is API_Secret_Key'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Parameters which are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using parameters above and API_Secret_Key ([[MOR API hash construction | More described in Constructing hash]]). '''Required''' (if setting '''Disable hash checking''' is not checked). &lt;br /&gt;
* u - username  for authentication. '''Required'''. &amp;lt;!---NUO x4 password nereikalaujamas---&amp;gt;&lt;br /&gt;
* &amp;lt;!---Nuo MOR X6---&amp;gt; s_reseller - Reseller type User ID in MOR database.  (Default: all).&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;!---Nuo MOR 8 buvo, o nuo MOR 9 nebėra direction---&amp;gt; &amp;lt;!---Iki nuo 11 buvo s_did_pattern, s_reseller_did, vėliau nebeliko---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
If you want find s_call_type=all calls for s_user = 5, through s_device=7 in period from 2011-11-01 23:59:59 till 2011-11-30 23:59:59, and your API Secret Key = 456789&lt;br /&gt;
&lt;br /&gt;
You send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/user_calls_get?u=username&amp;amp;s_user=5&amp;amp;period_start=1320191999&amp;amp;period_end=1322697599&amp;amp;s_device=7&amp;amp;s_call_type=all&amp;amp;hash=df2983700ffecb52e6649f0cb3981b66537083a4 &lt;br /&gt;
&lt;br /&gt;
'''* Note that username is not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success:''' Everything is ok. You get the list of calls if there is any:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;pagename&amp;gt;Calls&amp;lt;/pagename&amp;gt;&lt;br /&gt;
  &amp;lt;language&amp;gt;en&amp;lt;/language&amp;gt;&lt;br /&gt;
  &amp;lt;error_msg&amp;gt;&amp;lt;/error_msg&amp;gt;&lt;br /&gt;
  &amp;lt;userid&amp;gt;0&amp;lt;/userid&amp;gt;&lt;br /&gt;
  &amp;lt;username&amp;gt;admin&amp;lt;/username&amp;gt;&lt;br /&gt;
  &amp;lt;total_calls&amp;gt;1&amp;lt;/total_calls&amp;gt;&lt;br /&gt;
  &amp;lt;currency&amp;gt;USD&amp;lt;/currency&amp;gt;&lt;br /&gt;
  &amp;lt;calls_stat&amp;gt;&lt;br /&gt;
    &amp;lt;period&amp;gt;&lt;br /&gt;
      &amp;lt;period_start&amp;gt;2008-03-07 11:48:18&amp;lt;/period_start&amp;gt;&lt;br /&gt;
      &amp;lt;period_end&amp;gt;2012-03-07 11:46:01&amp;lt;/period_end&amp;gt;&lt;br /&gt;
    &amp;lt;/period&amp;gt;&lt;br /&gt;
    &amp;lt;show_user&amp;gt;all&amp;lt;/show_user&amp;gt;&lt;br /&gt;
    &amp;lt;show_device&amp;gt;all&amp;lt;/show_device&amp;gt;&lt;br /&gt;
    &amp;lt;show_status&amp;gt;all&amp;lt;/show_status&amp;gt;&lt;br /&gt;
    &amp;lt;show_provider&amp;gt;4&amp;lt;/show_provider&amp;gt;&lt;br /&gt;
    &amp;lt;show_hgc&amp;gt;all&amp;lt;/show_hgc&amp;gt;&lt;br /&gt;
    &amp;lt;show_did&amp;gt;1&amp;lt;/show_did&amp;gt;&lt;br /&gt;
    &amp;lt;calls&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;&lt;br /&gt;
        &amp;lt;calldate2&amp;gt;2009-01-02 00:00:01&amp;lt;/calldate2&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR x3---&amp;gt;        &amp;lt;timezone&amp;gt;GMT+02:00&amp;lt;/timezone&amp;gt;&lt;br /&gt;
        &amp;lt;clid&amp;gt;37046246362&amp;lt;/clid&amp;gt;&lt;br /&gt;
        &amp;lt;destination&amp;gt;Lithuania MOB Lithuania mobile&amp;lt;/destination&amp;gt;&lt;br /&gt;
        &amp;lt;did&amp;gt;37063042438&amp;lt;/did&amp;gt;&lt;br /&gt;
        &amp;lt;did_inc_price&amp;gt;1.0&amp;lt;/did_inc_price&amp;gt;&lt;br /&gt;
        &amp;lt;did_price&amp;gt;1.0&amp;lt;/did_price&amp;gt;&lt;br /&gt;
        &amp;lt;did_prov_price&amp;gt;1.0&amp;lt;/did_prov_price&amp;gt;&lt;br /&gt;
        &amp;lt;dispod&amp;gt;ANSWERED(16)&amp;lt;/dispod&amp;gt;&lt;br /&gt;
        &amp;lt;dst&amp;gt;37063042438&amp;lt;/dst&amp;gt;&lt;br /&gt;
        &amp;lt;nice_billsec&amp;gt;20.0&amp;lt;/nice_billsec&amp;gt;&lt;br /&gt;
        &amp;lt;nice_reseller&amp;gt; &amp;lt;/nice_reseller&amp;gt;&lt;br /&gt;
        &amp;lt;prefix&amp;gt;3706&amp;lt;/prefix&amp;gt;&lt;br /&gt;
        &amp;lt;profit&amp;gt;4&amp;lt;/profit&amp;gt;&lt;br /&gt;
        &amp;lt;provider_name&amp;gt;Test Provider&amp;lt;/provider_name&amp;gt;&lt;br /&gt;
        &amp;lt;provider_price&amp;gt;1.0&amp;lt;/provider_price&amp;gt;&lt;br /&gt;
        &amp;lt;provider_rate&amp;gt;0.0&amp;lt;/provider_rate&amp;gt;&lt;br /&gt;
        &amp;lt;reseller_price&amp;gt;0.0&amp;lt;/reseller_price&amp;gt;&lt;br /&gt;
        &amp;lt;reseller_rate&amp;gt;0.0&amp;lt;/reseller_rate&amp;gt;&lt;br /&gt;
        &amp;lt;server_id&amp;gt;1&amp;lt;/server_id&amp;gt;&lt;br /&gt;
        &amp;lt;src&amp;gt;37046246362&amp;lt;/src&amp;gt;&lt;br /&gt;
        &amp;lt;user&amp;gt;test_user&amp;lt;/user&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X11---&amp;gt;        &amp;lt;user_currency&amp;gt;EUR&amp;lt;/user_currency&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X11---&amp;gt;        &amp;lt;user_exchange_rate&amp;gt;0.744100000000000&amp;lt;/user_exchange_rate&amp;gt;&lt;br /&gt;
        &amp;lt;user_id&amp;gt;5&amp;lt;/user_id&amp;gt;&lt;br /&gt;
        &amp;lt;user_price&amp;gt;2.0&amp;lt;/user_price&amp;gt;&lt;br /&gt;
        &amp;lt;user_rate&amp;gt;0.0&amp;lt;/user_rate&amp;gt;&lt;br /&gt;
        &amp;lt;dst_user_id&amp;gt;7&amp;lt;/dst_user_id&amp;gt;&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR x4---&amp;gt;        &amp;lt;uniqueid&amp;gt;1232113379.3&amp;lt;/uniqueid&amp;gt;&lt;br /&gt;
      &amp;lt;/call&amp;gt;&lt;br /&gt;
    &amp;lt;/calls&amp;gt;&lt;br /&gt;
  &amp;lt;/calls_stat&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' that calldate is in system(server) Time Zone.&lt;br /&gt;
&lt;br /&gt;
'''Errors:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt; – '''Allow API globally''' setting is unchecked.&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt; – Such username does not exist in the database or it was not specified.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
* &amp;lt;error&amp;gt;User was not found&amp;lt;/error&amp;gt; – User was not found using user_id. Use correct user_id.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31477</id>
		<title>MOR API users get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_users_get&amp;diff=31477"/>
		<updated>2026-03-24T11:15:45Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from [[MOR 8| MOR 8]]---&amp;gt;&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
[[MOR API]] for getting list of users&lt;br /&gt;
&lt;br /&gt;
*'''Admin or Accountant with permissions''' can get all users list&lt;br /&gt;
*'''Reseller''' can get his own users list&lt;br /&gt;
*'''Partner''' can get his resellers and users&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X8''' call: /api/users_get&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameters===  &lt;br /&gt;
&lt;br /&gt;
Parameters that are '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* u - username to log in. '''Required'''.&lt;br /&gt;
* p - password to log in. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parameters that are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* uniquehash - user's uniquehash. '''note''': you can use either '''p''' or '''uniquehash''' to identify the user. One of them is required.&amp;lt;br&amp;gt;&lt;br /&gt;
*[[MOR API hash construction | hash]] – SHA1 hash constructed using '''API Secret Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''note''': if using the browser's URL bar, then you should encode special symbols (these symbols usually appear in the p parameter). Example:&lt;br /&gt;
* for % use %25.&lt;br /&gt;
* for # use %23.&lt;br /&gt;
* for + use %2B.&lt;br /&gt;
* for &amp;amp; use %26.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
If API Secret Key = secret&lt;br /&gt;
&lt;br /&gt;
You send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/users_get?u=admin&amp;amp;p=admin1&amp;amp;test=1&amp;amp;hash=c420ef706a02e6449994b7575b25ef5f74cc722b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
   &amp;lt;users&amp;gt;&lt;br /&gt;
    &amp;lt;user&amp;gt;&lt;br /&gt;
     &amp;lt;id&amp;gt; ... &amp;lt;/id&amp;gt;&lt;br /&gt;
     &amp;lt;username&amp;gt; ... &amp;lt;/username&amp;gt;&lt;br /&gt;
     &amp;lt;first_name&amp;gt; ... &amp;lt;/first_nam&amp;gt;&lt;br /&gt;
     &amp;lt;last_name&amp;gt; ... &amp;lt;/last_name&amp;gt;&lt;br /&gt;
     &amp;lt;balance&amp;gt; ... &amp;lt;/balance&amp;gt;&lt;br /&gt;
     &amp;lt;blocked&amp;gt; ... &amp;lt;/blocked&amp;gt;&lt;br /&gt;
     &amp;lt;lcr_id&amp;gt; ... &amp;lt;/lcr_id&amp;gt;&lt;br /&gt;
     &amp;lt;tariff_id&amp;gt; ... &amp;lt;/tariff_id&amp;gt;&lt;br /&gt;
     &amp;lt;owner_id&amp;gt; ... &amp;lt;/owner_id&amp;gt;&lt;br /&gt;
     &amp;lt;usertype&amp;gt; ... &amp;lt;/usertype&amp;gt;&lt;br /&gt;
     &amp;lt;hidden&amp;gt; ... &amp;lt;/hidden&amp;gt;&lt;br /&gt;
    &amp;lt;/user&amp;gt;&lt;br /&gt;
   &amp;lt;/users&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Errors:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt; – '''Allow API globally''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;GET Requests are disabled&amp;lt;/error&amp;gt; – '''Allow GET API''' setting is unchecked&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt;  – User is not allowed to to get users list or username and password are not correct.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order of parameters while concatenating the hash_string&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to view this page&amp;lt;/error&amp;gt; – User is not authorized to get users list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;error&amp;gt;API Requests are disabled&amp;lt;/error&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_Subscriptions_get&amp;diff=31476</id>
		<title>MOR API Subscriptions get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_Subscriptions_get&amp;diff=31476"/>
		<updated>2026-03-24T11:14:44Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parametres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: Available from MOR X5 =&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
[[MOR API]] Subscriptions get&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X5''' Call: '''/api/subscriptions_get'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u - username for authentication. '''Required'''.&lt;br /&gt;
* service_id - Subscription's Service id.&lt;br /&gt;
* subscription_activation_start - Subscription's Activation Start timestamp in System Time Zone (if defined - only time equal to it or after it).&lt;br /&gt;
* subscription_activation_end - Subscription's Activation End timestamp in System Time Zone (if defined - only time equal to it or before it).&lt;br /&gt;
* subscription_memo - Subscription's memo.&lt;br /&gt;
* subscription_until_canceled - defines if Subscription can be Until canceled - can not to have Activation End (0 - off, 1 - on, default - off). &lt;br /&gt;
* user_id - Subscription's User id&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have: API Secret Key = secret&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/subscriptions_get?&amp;amp;u=admin&amp;amp;service_id=2&amp;amp;subscription_activation_start=1307167264&amp;amp;subscription_activation_end=1307167265&lt;br /&gt;
 &amp;amp;subscription_memo=Subscriptions memo&amp;amp;subscription_until_canceled=1&amp;amp;user_id=2&amp;amp;hash=e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4 &lt;br /&gt;
'''NOTE that username is not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;subscriptions&amp;gt;&lt;br /&gt;
      &amp;lt;subscription&amp;gt;&lt;br /&gt;
        &amp;lt;id&amp;gt;231&amp;lt;/id&amp;gt;&lt;br /&gt;
        &amp;lt;user&amp;gt;Test User #1&amp;lt;/user&amp;gt;&lt;br /&gt;
        &amp;lt;device&amp;gt;&amp;lt;/device&amp;gt;&lt;br /&gt;
        &amp;lt;service&amp;gt;Service Name&amp;lt;/service&amp;gt;&lt;br /&gt;
        &amp;lt;from&amp;gt;2011-06-04 06:01:04 +0200&amp;lt;/from&amp;gt;&lt;br /&gt;
        &amp;lt;till&amp;gt;&amp;lt;/till&amp;gt;&lt;br /&gt;
        &amp;lt;time_left&amp;gt;&amp;lt;/time_left&amp;gt;&lt;br /&gt;
        &amp;lt;memo&amp;gt;Subscriptions memo&amp;lt;/memo&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;Subscription type&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;price&amp;gt;&amp;lt;/price&amp;gt;&lt;br /&gt;
        &amp;lt;user_id&amp;gt;&amp;lt;/user_id&amp;gt;&lt;br /&gt;
      &amp;lt;/subscription&amp;gt;&lt;br /&gt;
    &amp;lt;/subscriptions&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;No Subscriptions found&amp;lt;/error&amp;gt; - Subscription was not found using specified params. Use correct params.&lt;br /&gt;
* &amp;lt;error&amp;gt;You are not authorized to manage Subscriptions&amp;lt;/error&amp;gt; - Such username does not exist in the database or User does not have rights to manage Subscriptions.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; - Hash was not correct. Check API_Secret_Key while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;br /&gt;
* [[MOR API subscription delete]]&lt;br /&gt;
* [[MOR API subscription create]]&lt;br /&gt;
* [[MOR API subscription update]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_devices_get&amp;diff=31475</id>
		<title>MOR API devices get</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_devices_get&amp;diff=31475"/>
		<updated>2026-03-24T11:14:20Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Parametres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X3---&amp;gt;&lt;br /&gt;
[[MOR API]] Device list&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* From '''MOR X4''' call: '''/api/devices_get'''&lt;br /&gt;
* For Backwards-compatibility old name 'device_list' is also usable. Call: '''/api/device_list'''&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
* u – username for authentication. This is owner of User (admin or reseller) '''Required'''.&lt;br /&gt;
* user_id – this specifies user id whose device list to show. '''Required'''.&lt;br /&gt;
* [[MOR API hash construction | hash]] – SHA1 hash constructed using '''user_id''' and '''API_Secret_Key''' ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* show_hidden_devices – by default it is 1. When show_hidden_devices=0, then Blocked/Hidden devices will not be shown.&lt;br /&gt;
* '''from''' - from which record to show results.&lt;br /&gt;
* '''max_results''' - how many records to show. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Returning XML is put in file. That file is gziped and returned as a response content.&lt;br /&gt;
&lt;br /&gt;
Please note that only admin/reseller can retrieve Device list and only for their own Users.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have API Secret Key = 456789, user_id = 100&lt;br /&gt;
&lt;br /&gt;
We send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/devices_get?u=admin&amp;amp;user_id=100&amp;amp;hash=71516eea4850f7e0300ac86adf9fb64bca845aa7&lt;br /&gt;
&lt;br /&gt;
'''* Note that username and password are not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
   &amp;lt;devices&amp;gt;&lt;br /&gt;
     &amp;lt;device&amp;gt;&lt;br /&gt;
        &amp;lt;device_id&amp;gt;device_id&amp;lt;/device_id&amp;gt;&lt;br /&gt;
        &amp;lt;device_type&amp;gt;device_type&amp;lt;/device_type&amp;gt;&lt;br /&gt;
        &amp;lt;devicegroup_id&amp;gt;devicegroup_id&amp;lt;/devicegroup_id&amp;gt;&lt;br /&gt;
        &amp;lt;primary_device&amp;gt;yes|no&amp;lt;/primary_device&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;device_username&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;secret&amp;gt;device_password&amp;lt;/secret&amp;gt;&lt;br /&gt;
        &amp;lt;ipaddr&amp;gt;device_ipaddr&amp;lt;/ipaddr&amp;gt;&lt;br /&gt;
        &amp;lt;port&amp;gt;device_port&amp;lt;/port&amp;gt;&lt;br /&gt;
      &amp;lt;/device&amp;gt;&lt;br /&gt;
      &amp;lt;device&amp;gt;&lt;br /&gt;
        &amp;lt;device_id&amp;gt;second_device_id&amp;lt;/device_id&amp;gt;&lt;br /&gt;
        &amp;lt;device_type&amp;gt;second_device_type&amp;lt;/device_type&amp;gt;&lt;br /&gt;
        &amp;lt;devicegroup_id&amp;gt;second_devicegroup_id&amp;lt;/devicegroup_id&amp;gt;&lt;br /&gt;
        &amp;lt;primary_device&amp;gt;yes|no&amp;lt;/primary_device&amp;gt;&lt;br /&gt;
        &amp;lt;username&amp;gt;second_device_username&amp;lt;/username&amp;gt;&lt;br /&gt;
        &amp;lt;secret&amp;gt;second_device_password&amp;lt;/secret&amp;gt;&lt;br /&gt;
        &amp;lt;ipaddr&amp;gt;second_device_ipaddr&amp;lt;/ipaddr&amp;gt;&lt;br /&gt;
        &amp;lt;port&amp;gt;second_device_port&amp;lt;/port&amp;gt;&lt;br /&gt;
        &amp;lt;callerid&amp;gt;device_callerid&amp;lt;/callerid&amp;gt;&lt;br /&gt;
        &amp;lt;location_id&amp;gt;id&amp;lt;/location_id&amp;gt;&lt;br /&gt;
        &amp;lt;nat&amp;gt;nat_option&amp;lt;/nat&amp;gt;&lt;br /&gt;
      &amp;lt;/device&amp;gt;&lt;br /&gt;
    &amp;lt;/devices&amp;gt;&lt;br /&gt;
  &amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Errors'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;error&amp;gt;User not found&amp;lt;/error&amp;gt; – User was not found.&lt;br /&gt;
* &amp;lt;error&amp;gt;user_id is empty&amp;lt;/error&amp;gt; – user_id was not sent.&lt;br /&gt;
* &amp;lt;error&amp;gt;Bad login&amp;lt;/error&amp;gt; – User was not found by username and password. Use correct username and password. Make sure that username (u) and password (p) are specified.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_DID_Management&amp;diff=31474</id>
		<title>M4 DID Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_DID_Management&amp;diff=31474"/>
		<updated>2026-03-23T13:08:41Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* DIDs page for users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8W_Ck2nqQHE&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Supported Functionality =&lt;br /&gt;
&lt;br /&gt;
* DID inventory search/filtering&lt;br /&gt;
* Bulk upload tool&lt;br /&gt;
* DID Status and Assignment visibility&lt;br /&gt;
* Buying/Selling charges support&lt;br /&gt;
* Flexible Inbound routing&lt;br /&gt;
* Route to client PBXs by IP addresses – Trunking&lt;br /&gt;
* Follow me ( Call Forwarding ) style services where the inbound calls can be routed back out to the alternate destination&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Inventory =&lt;br /&gt;
&lt;br /&gt;
[[File:M4_dids_inventory.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page you can:&lt;br /&gt;
*Add new DID(s).&lt;br /&gt;
*Import DID(s).&lt;br /&gt;
*Export DID(s).&lt;br /&gt;
*Bulk edit DID(s).&lt;br /&gt;
*Search DID(s) using various parameters.&lt;br /&gt;
*Edit DID(s) subscription.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Buying Pricing Groups =&lt;br /&gt;
&lt;br /&gt;
Buying Pricing Groups unifies DIDs bought as a group for the same price from one DID Provider. It allows quickly setting buying prices for the DID or group of DIDs.&lt;br /&gt;
&lt;br /&gt;
In Buying Pricing Groups '''all charges would be paid by Admin to Provider'''&lt;br /&gt;
&lt;br /&gt;
DID Buying Pricing Groups can be accessed at '''Routing -&amp;gt; DIDs - Buying Pricing Groups'''&lt;br /&gt;
&lt;br /&gt;
To Add a new DID Buying Pricing Group, press '''NEW''' and fill in needed data: &amp;lt;br&amp;gt;&lt;br /&gt;
*'''Name'''&lt;br /&gt;
*'''Currency'''&lt;br /&gt;
*'''Activation Fee''' - One-time fee that will be charged when activating DID.&lt;br /&gt;
*'''Periodic Fee''' - Fee that will be charged every period set in '''Charge Plan'''.&lt;br /&gt;
*'''Tariff''' - Tariff which will be used for the call. The call will be charged by CallerID prefix by a tariff rate. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Buying Group create.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When data is filled, press '''CREATE'''&lt;br /&gt;
&lt;br /&gt;
[[File:Buying Group created.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to edit or delete a group by pressing the '''EDIT''' or '''DELETE''' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Selling Pricing Groups =&lt;br /&gt;
&lt;br /&gt;
Selling Pricing Groups unifies DIDs sold as a group for the same price. It allows quickly setting selling prices for the DID or group of DIDs.&lt;br /&gt;
&lt;br /&gt;
In Selling Pricing Groups '''all charges would be paid by User to Admin'''&lt;br /&gt;
&lt;br /&gt;
DID Selling Pricing Groups can be accessed at '''Routing -&amp;gt; DIDs - Selling Pricing Groups'''&lt;br /&gt;
&lt;br /&gt;
To Add a new DID Selling Pricing Group, press '''NEW''' and fill in needed data: &amp;lt;br&amp;gt;&lt;br /&gt;
*'''Name'''&lt;br /&gt;
*'''Currency'''&lt;br /&gt;
*'''Overwrite Activation Fee''' - NO / YES . If Yes is chosen, options '''Additional activation fee''' and '''Activation fee markup''' would be changed to '''Activation fee'''.&lt;br /&gt;
*'''Additional Activation Fee''' - Additional one-time fee that will be charged when activating DID. The value is added to '''Buying Activation fee'''.&lt;br /&gt;
*'''Activation Fee Markup''' - Activation Fee Markup is calculated as % from '''Buying Activation fee'''.&lt;br /&gt;
*'''Overwrite Periodic Fee''' - NO / YES . If Yes is chosen, options '''Additional Periodic fee''' and '''Periodic fee markup''' would be changed to '''Periodic fee'''.&lt;br /&gt;
*'''Additional Periodic Fee''' - Additional fee that will be charged every period set in '''Charge Plan'''. The value is added to '''Buying Periodic fee.'''&lt;br /&gt;
*'''Periodic Fee Markup''' - Periodic Fee Markup is calculated as % from '''Buying Periodic fee'''.&lt;br /&gt;
*'''Tariff''' - Tariff which will be used for the call. The call will be charged by CallerID prefix by a tariff rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Selling group create.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When data is filled, press '''CREATE'''&lt;br /&gt;
&lt;br /&gt;
[[File:Selling group created.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to edit or delete a group by pressing the '''EDIT''' or '''DELETE''' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Charge Plans =&lt;br /&gt;
Charge Plan is a template for the Subscription - defines what type of Subscription can be used for a service.&lt;br /&gt;
&lt;br /&gt;
More information can be found [[M4 Charge Plans|here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tags =&lt;br /&gt;
Tags are labels attached to DIDs for the purpose of identification or to give other useful information. Tags help manage groups of DIDs.&lt;br /&gt;
&lt;br /&gt;
DID Tags can be accessed at '''Routing -&amp;gt; DIDs - Tags''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To Add a new DID Tag, press '''NEW''' and fill in its Name and Comment if needed.&amp;lt;br&amp;gt;&lt;br /&gt;
Color gamma can be accessed when pressing on the Color field.&lt;br /&gt;
&lt;br /&gt;
[[File:DID Tags Create.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When data is filled, press '''CREATE'''&lt;br /&gt;
&lt;br /&gt;
[[File:DID Tag Created.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to edit or delete Tag by pressing the '''EDIT''' or '''DELETE''' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Add new DID(s) =&lt;br /&gt;
&lt;br /&gt;
[[File:M4_add_new_did.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''DID''' - enter DID number.&lt;br /&gt;
*'''Tags''' - select tag.&lt;br /&gt;
*'''Vendor''' - select a supplier.&lt;br /&gt;
*'''Buying''' Pricing Group - select Buying Pricing Group or create a Custom one.&lt;br /&gt;
*'''Comment''' - for notices.&lt;br /&gt;
*'''Customer''' - select a user.&lt;br /&gt;
*'''Selling''' Pricing Group - select Selling Pricing Group or create a Custom one.&lt;br /&gt;
*''' Header Transformation Group ''' - which [[M4 Header Transformation Rules Groups|Header Transformation Rules Group]] to use.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''NOTE.''' By pressing '''CREATE AND ACTIVATE FOR USER''' the DID should start working immediately and receive calls.&amp;lt;br&amp;gt;&lt;br /&gt;
The Subscription will be created according to the option set in  MAINTENANCE -&amp;gt; Settings -&amp;gt; SIP Trunking -&amp;gt; Default Billing Settings for DID Subscription.&amp;lt;br&amp;gt;&lt;br /&gt;
Two options are available: '''&amp;quot;DID Selling Pricing Group&amp;quot;''' or '''&amp;quot;Selected Charge Plan&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
'''NOTE.''' It is possible to fill Default DIDs settings for new DIDs at Maintenance - Settings - DIDs.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Add new DID(s) as Manager =&lt;br /&gt;
&lt;br /&gt;
[[M4 Managers | Managers]] needs DIDs [[M4_Managers#Manager_Groups | permission]] to manage DIDs.&lt;br /&gt;
&lt;br /&gt;
To simplify the manager's work, the admin can fill DIDs section in [[ M4 Settings#DIDs | settings]].&lt;br /&gt;
&lt;br /&gt;
[[File:M4_settings_DIDs_fill.png]]&lt;br /&gt;
&lt;br /&gt;
When the manager creates a new DID, all settings will already be filled in. &lt;br /&gt;
&lt;br /&gt;
[[File:M4_add_new_did_manager.png]]&lt;br /&gt;
&lt;br /&gt;
The manager will only need to enter the DID number and select the user. The system will select the first user's device (number 3 in the screenshot). The Manager can change the device if needed.&amp;lt;br&amp;gt;&lt;br /&gt;
If the settings are correct, then the Manager needs to press '''CREATE AND ACTIVATE FOR USER''' to create and activate the DID.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DID(s) edit =&lt;br /&gt;
[[File:M4_dids_edit.png]]&lt;br /&gt;
&lt;br /&gt;
'''Add Diversion Header''' - if enabled, a Diversion header is added calling this DID. The URI will be this DID.&lt;br /&gt;
&lt;br /&gt;
'''Add History-Info Header''' - if enabled, a History-Info header is added calling this DID. The URI will be this DID.&lt;br /&gt;
&lt;br /&gt;
Let's say the DID number is 37011111, and the external number is 37022222&lt;br /&gt;
&lt;br /&gt;
x.x.x.x - IP of the connection point where is DID is forwarded to&lt;br /&gt;
&lt;br /&gt;
y.y.y.y - IP of the TP that will terminate the forwarded external number&lt;br /&gt;
&lt;br /&gt;
z.z.z.z - IP of the M4&lt;br /&gt;
&lt;br /&gt;
If DID 37011111 is forwarded to the connection point, the headers will look like this:&lt;br /&gt;
&lt;br /&gt;
 INVITE sip:37011111@x.x.x.x SIP/2.0&lt;br /&gt;
 ...&lt;br /&gt;
 To: &amp;lt;sip:37011111@x.x.x.x&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 Diversion: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;reason=unconditional;screen=&amp;quot;yes&amp;quot;&lt;br /&gt;
 History-Info: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;index=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If DID 37011111 is forwarded to external number 37022222, the headers will look like this:&lt;br /&gt;
 INVITE sip:37022222@y.y.y.y SIP/2.0&lt;br /&gt;
 ...&lt;br /&gt;
 To: &amp;lt;sip:37022222@y.y.y.y&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 Diversion: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;reason=unconditional;screen=&amp;quot;yes&amp;quot;&lt;br /&gt;
 History-Info: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;index=1&lt;br /&gt;
 History-Info: &amp;lt;sip:37022222@z.z.z.z&amp;gt;;index=1.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Import =&lt;br /&gt;
&lt;br /&gt;
M4 DIDs can be imported from the CSV file. Import procedure [[M4 DIDs Import from CSV | described here]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Export =&lt;br /&gt;
&lt;br /&gt;
DIDs are exported to CSV. The system exports only visible DIDs in the Inventory that are filtered by search parameters.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= DID Search (Refine) =&lt;br /&gt;
&lt;br /&gt;
Filter DIDs by various options:&lt;br /&gt;
&lt;br /&gt;
[[File:Did refine.png]]&lt;br /&gt;
&lt;br /&gt;
When a filter is active, then Inventory stats will show green values for the filtered DIDs ([[M4_DID_Bulk_with_Refine_Example|example]]):&lt;br /&gt;
&lt;br /&gt;
[[File:Did_refine_colors.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DID bulk management =&lt;br /&gt;
&lt;br /&gt;
In the main DIDs window, click on '''BULK EDIT''' and you will be able to perform various actions.&lt;br /&gt;
&lt;br /&gt;
Bulk management works together with REFINE (Search). First, you find the DIDs you need, then you apply Bulk Action on them.&lt;br /&gt;
&lt;br /&gt;
Find necessary DIDS with REFINE section. Then mark (by pressing the rectangle at the left of the DID) all DIDs or just some of them to apply Bulk Action to them.&lt;br /&gt;
&lt;br /&gt;
Example how to do that [[M4_DID_Bulk_with_Refine_Example | here]]&lt;br /&gt;
&lt;br /&gt;
[[File:M4_dids_bulk1.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bulk Action''' - Change, Delete or Close Subscription.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tag Action''' - Add or Delete.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Status''' - Do not Change, Free, Reserved, Archived.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Vendor''' - Change Vendor.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Destination''' - Change Destination.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Buying Pricing Group''' - select and change Buying Pricing Group from the list.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tags''' - Change Tags.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Select DIDs to modify and apply the actions. '''Example before changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example after changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk3.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs Bulk Update from CSV =&lt;br /&gt;
DIDs can be updated from the CSV file. Update procedure [[M4 DIDs Bulk Update from CSV | described here]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Making DID Active =&lt;br /&gt;
&lt;br /&gt;
'''Important.''' In order to make DID active and call it, it must have an assigned subscription.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs page for users =&lt;br /&gt;
Users can see their DIDs in their account.&lt;br /&gt;
&lt;br /&gt;
[[File:M4_dids_user_account.png]]&lt;br /&gt;
&lt;br /&gt;
*'''Export''' - export a list of DIDs to CSV.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [[M4 Subscriptions|Subscriptions]]&lt;br /&gt;
** [[M4 Charge Plans|Charge Plans]]&lt;br /&gt;
* [[M4 Services|Services]]&lt;br /&gt;
** [[M4 DID Management|DIDs]]&lt;br /&gt;
*** [[M4 DIDs Import from CSV|DID Import from CSV]]&lt;br /&gt;
** [[M4 Flat-Rates|Flat-Rates]]&lt;br /&gt;
** [[M4 Custom Services|Custom Services]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:M4_dids_user_account.png&amp;diff=31473</id>
		<title>File:M4 dids user account.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:M4_dids_user_account.png&amp;diff=31473"/>
		<updated>2026-03-23T13:02:59Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_DID_Management&amp;diff=31472</id>
		<title>M4 DID Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_DID_Management&amp;diff=31472"/>
		<updated>2026-03-23T12:49:57Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/8W_Ck2nqQHE&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Supported Functionality =&lt;br /&gt;
&lt;br /&gt;
* DID inventory search/filtering&lt;br /&gt;
* Bulk upload tool&lt;br /&gt;
* DID Status and Assignment visibility&lt;br /&gt;
* Buying/Selling charges support&lt;br /&gt;
* Flexible Inbound routing&lt;br /&gt;
* Route to client PBXs by IP addresses – Trunking&lt;br /&gt;
* Follow me ( Call Forwarding ) style services where the inbound calls can be routed back out to the alternate destination&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Inventory =&lt;br /&gt;
&lt;br /&gt;
[[File:M4_dids_inventory.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On this page you can:&lt;br /&gt;
*Add new DID(s).&lt;br /&gt;
*Import DID(s).&lt;br /&gt;
*Export DID(s).&lt;br /&gt;
*Bulk edit DID(s).&lt;br /&gt;
*Search DID(s) using various parameters.&lt;br /&gt;
*Edit DID(s) subscription.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Buying Pricing Groups =&lt;br /&gt;
&lt;br /&gt;
Buying Pricing Groups unifies DIDs bought as a group for the same price from one DID Provider. It allows quickly setting buying prices for the DID or group of DIDs.&lt;br /&gt;
&lt;br /&gt;
In Buying Pricing Groups '''all charges would be paid by Admin to Provider'''&lt;br /&gt;
&lt;br /&gt;
DID Buying Pricing Groups can be accessed at '''Routing -&amp;gt; DIDs - Buying Pricing Groups'''&lt;br /&gt;
&lt;br /&gt;
To Add a new DID Buying Pricing Group, press '''NEW''' and fill in needed data: &amp;lt;br&amp;gt;&lt;br /&gt;
*'''Name'''&lt;br /&gt;
*'''Currency'''&lt;br /&gt;
*'''Activation Fee''' - One-time fee that will be charged when activating DID.&lt;br /&gt;
*'''Periodic Fee''' - Fee that will be charged every period set in '''Charge Plan'''.&lt;br /&gt;
*'''Tariff''' - Tariff which will be used for the call. The call will be charged by CallerID prefix by a tariff rate. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Buying Group create.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When data is filled, press '''CREATE'''&lt;br /&gt;
&lt;br /&gt;
[[File:Buying Group created.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to edit or delete a group by pressing the '''EDIT''' or '''DELETE''' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Selling Pricing Groups =&lt;br /&gt;
&lt;br /&gt;
Selling Pricing Groups unifies DIDs sold as a group for the same price. It allows quickly setting selling prices for the DID or group of DIDs.&lt;br /&gt;
&lt;br /&gt;
In Selling Pricing Groups '''all charges would be paid by User to Admin'''&lt;br /&gt;
&lt;br /&gt;
DID Selling Pricing Groups can be accessed at '''Routing -&amp;gt; DIDs - Selling Pricing Groups'''&lt;br /&gt;
&lt;br /&gt;
To Add a new DID Selling Pricing Group, press '''NEW''' and fill in needed data: &amp;lt;br&amp;gt;&lt;br /&gt;
*'''Name'''&lt;br /&gt;
*'''Currency'''&lt;br /&gt;
*'''Overwrite Activation Fee''' - NO / YES . If Yes is chosen, options '''Additional activation fee''' and '''Activation fee markup''' would be changed to '''Activation fee'''.&lt;br /&gt;
*'''Additional Activation Fee''' - Additional one-time fee that will be charged when activating DID. The value is added to '''Buying Activation fee'''.&lt;br /&gt;
*'''Activation Fee Markup''' - Activation Fee Markup is calculated as % from '''Buying Activation fee'''.&lt;br /&gt;
*'''Overwrite Periodic Fee''' - NO / YES . If Yes is chosen, options '''Additional Periodic fee''' and '''Periodic fee markup''' would be changed to '''Periodic fee'''.&lt;br /&gt;
*'''Additional Periodic Fee''' - Additional fee that will be charged every period set in '''Charge Plan'''. The value is added to '''Buying Periodic fee.'''&lt;br /&gt;
*'''Periodic Fee Markup''' - Periodic Fee Markup is calculated as % from '''Buying Periodic fee'''.&lt;br /&gt;
*'''Tariff''' - Tariff which will be used for the call. The call will be charged by CallerID prefix by a tariff rate.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Selling group create.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When data is filled, press '''CREATE'''&lt;br /&gt;
&lt;br /&gt;
[[File:Selling group created.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to edit or delete a group by pressing the '''EDIT''' or '''DELETE''' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Charge Plans =&lt;br /&gt;
Charge Plan is a template for the Subscription - defines what type of Subscription can be used for a service.&lt;br /&gt;
&lt;br /&gt;
More information can be found [[M4 Charge Plans|here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tags =&lt;br /&gt;
Tags are labels attached to DIDs for the purpose of identification or to give other useful information. Tags help manage groups of DIDs.&lt;br /&gt;
&lt;br /&gt;
DID Tags can be accessed at '''Routing -&amp;gt; DIDs - Tags''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To Add a new DID Tag, press '''NEW''' and fill in its Name and Comment if needed.&amp;lt;br&amp;gt;&lt;br /&gt;
Color gamma can be accessed when pressing on the Color field.&lt;br /&gt;
&lt;br /&gt;
[[File:DID Tags Create.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When data is filled, press '''CREATE'''&lt;br /&gt;
&lt;br /&gt;
[[File:DID Tag Created.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is possible to edit or delete Tag by pressing the '''EDIT''' or '''DELETE''' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Add new DID(s) =&lt;br /&gt;
&lt;br /&gt;
[[File:M4_add_new_did.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''DID''' - enter DID number.&lt;br /&gt;
*'''Tags''' - select tag.&lt;br /&gt;
*'''Vendor''' - select a supplier.&lt;br /&gt;
*'''Buying''' Pricing Group - select Buying Pricing Group or create a Custom one.&lt;br /&gt;
*'''Comment''' - for notices.&lt;br /&gt;
*'''Customer''' - select a user.&lt;br /&gt;
*'''Selling''' Pricing Group - select Selling Pricing Group or create a Custom one.&lt;br /&gt;
*''' Header Transformation Group ''' - which [[M4 Header Transformation Rules Groups|Header Transformation Rules Group]] to use.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''NOTE.''' By pressing '''CREATE AND ACTIVATE FOR USER''' the DID should start working immediately and receive calls.&amp;lt;br&amp;gt;&lt;br /&gt;
The Subscription will be created according to the option set in  MAINTENANCE -&amp;gt; Settings -&amp;gt; SIP Trunking -&amp;gt; Default Billing Settings for DID Subscription.&amp;lt;br&amp;gt;&lt;br /&gt;
Two options are available: '''&amp;quot;DID Selling Pricing Group&amp;quot;''' or '''&amp;quot;Selected Charge Plan&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
'''NOTE.''' It is possible to fill Default DIDs settings for new DIDs at Maintenance - Settings - DIDs.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Add new DID(s) as Manager =&lt;br /&gt;
&lt;br /&gt;
[[M4 Managers | Managers]] needs DIDs [[M4_Managers#Manager_Groups | permission]] to manage DIDs.&lt;br /&gt;
&lt;br /&gt;
To simplify the manager's work, the admin can fill DIDs section in [[ M4 Settings#DIDs | settings]].&lt;br /&gt;
&lt;br /&gt;
[[File:M4_settings_DIDs_fill.png]]&lt;br /&gt;
&lt;br /&gt;
When the manager creates a new DID, all settings will already be filled in. &lt;br /&gt;
&lt;br /&gt;
[[File:M4_add_new_did_manager.png]]&lt;br /&gt;
&lt;br /&gt;
The manager will only need to enter the DID number and select the user. The system will select the first user's device (number 3 in the screenshot). The Manager can change the device if needed.&amp;lt;br&amp;gt;&lt;br /&gt;
If the settings are correct, then the Manager needs to press '''CREATE AND ACTIVATE FOR USER''' to create and activate the DID.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DID(s) edit =&lt;br /&gt;
[[File:M4_dids_edit.png]]&lt;br /&gt;
&lt;br /&gt;
'''Add Diversion Header''' - if enabled, a Diversion header is added calling this DID. The URI will be this DID.&lt;br /&gt;
&lt;br /&gt;
'''Add History-Info Header''' - if enabled, a History-Info header is added calling this DID. The URI will be this DID.&lt;br /&gt;
&lt;br /&gt;
Let's say the DID number is 37011111, and the external number is 37022222&lt;br /&gt;
&lt;br /&gt;
x.x.x.x - IP of the connection point where is DID is forwarded to&lt;br /&gt;
&lt;br /&gt;
y.y.y.y - IP of the TP that will terminate the forwarded external number&lt;br /&gt;
&lt;br /&gt;
z.z.z.z - IP of the M4&lt;br /&gt;
&lt;br /&gt;
If DID 37011111 is forwarded to the connection point, the headers will look like this:&lt;br /&gt;
&lt;br /&gt;
 INVITE sip:37011111@x.x.x.x SIP/2.0&lt;br /&gt;
 ...&lt;br /&gt;
 To: &amp;lt;sip:37011111@x.x.x.x&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 Diversion: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;reason=unconditional;screen=&amp;quot;yes&amp;quot;&lt;br /&gt;
 History-Info: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;index=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If DID 37011111 is forwarded to external number 37022222, the headers will look like this:&lt;br /&gt;
 INVITE sip:37022222@y.y.y.y SIP/2.0&lt;br /&gt;
 ...&lt;br /&gt;
 To: &amp;lt;sip:37022222@y.y.y.y&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
 Diversion: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;reason=unconditional;screen=&amp;quot;yes&amp;quot;&lt;br /&gt;
 History-Info: &amp;lt;sip:37011111@z.z.z.z&amp;gt;;index=1&lt;br /&gt;
 History-Info: &amp;lt;sip:37022222@z.z.z.z&amp;gt;;index=1.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Import =&lt;br /&gt;
&lt;br /&gt;
M4 DIDs can be imported from the CSV file. Import procedure [[M4 DIDs Import from CSV | described here]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Export =&lt;br /&gt;
&lt;br /&gt;
DIDs are exported to CSV. The system exports only visible DIDs in the Inventory that are filtered by search parameters.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= DID Search (Refine) =&lt;br /&gt;
&lt;br /&gt;
Filter DIDs by various options:&lt;br /&gt;
&lt;br /&gt;
[[File:Did refine.png]]&lt;br /&gt;
&lt;br /&gt;
When a filter is active, then Inventory stats will show green values for the filtered DIDs ([[M4_DID_Bulk_with_Refine_Example|example]]):&lt;br /&gt;
&lt;br /&gt;
[[File:Did_refine_colors.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DID bulk management =&lt;br /&gt;
&lt;br /&gt;
In the main DIDs window, click on '''BULK EDIT''' and you will be able to perform various actions.&lt;br /&gt;
&lt;br /&gt;
Bulk management works together with REFINE (Search). First, you find the DIDs you need, then you apply Bulk Action on them.&lt;br /&gt;
&lt;br /&gt;
Find necessary DIDS with REFINE section. Then mark (by pressing the rectangle at the left of the DID) all DIDs or just some of them to apply Bulk Action to them.&lt;br /&gt;
&lt;br /&gt;
Example how to do that [[M4_DID_Bulk_with_Refine_Example | here]]&lt;br /&gt;
&lt;br /&gt;
[[File:M4_dids_bulk1.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Bulk Action''' - Change, Delete or Close Subscription.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tag Action''' - Add or Delete.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Status''' - Do not Change, Free, Reserved, Archived.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Vendor''' - Change Vendor.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Destination''' - Change Destination.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Buying Pricing Group''' - select and change Buying Pricing Group from the list.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tags''' - Change Tags.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Select DIDs to modify and apply the actions. '''Example before changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example after changes:'''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_dids_bulk3.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs Bulk Update from CSV =&lt;br /&gt;
DIDs can be updated from the CSV file. Update procedure [[M4 DIDs Bulk Update from CSV | described here]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Making DID Active =&lt;br /&gt;
&lt;br /&gt;
'''Important.''' In order to make DID active and call it, it must have an assigned subscription.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs page for users =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= See also =&lt;br /&gt;
* [[M4 Subscriptions|Subscriptions]]&lt;br /&gt;
** [[M4 Charge Plans|Charge Plans]]&lt;br /&gt;
* [[M4 Services|Services]]&lt;br /&gt;
** [[M4 DID Management|DIDs]]&lt;br /&gt;
*** [[M4 DIDs Import from CSV|DID Import from CSV]]&lt;br /&gt;
** [[M4 Flat-Rates|Flat-Rates]]&lt;br /&gt;
** [[M4 Custom Services|Custom Services]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:M2_calls_list.png&amp;diff=31471</id>
		<title>File:M2 calls list.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:M2_calls_list.png&amp;diff=31471"/>
		<updated>2026-03-23T12:40:13Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:M2 calls list.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Settings&amp;diff=31470</id>
		<title>M4 Settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Settings&amp;diff=31470"/>
		<updated>2026-03-23T12:31:31Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Calls List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To change M4 Settings, go to '''MAINTENANCE - Settings'''&lt;br /&gt;
&lt;br /&gt;
Just click on each point to expand.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Invoices=&lt;br /&gt;
[[File:Invoices.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Number start''' - how the invoice number should start.&lt;br /&gt;
*'''Number length''' - the length in digits AFTER Number Start – e.g. Number Start is not counted into this length. This value is active only for the first number type.&lt;br /&gt;
*'''Number type''' - select more appropriate number format. INV000001 means auto incremental number after &amp;quot;Number start&amp;quot; value. INV070601 means &amp;quot;Number start&amp;quot; + date + invoice max id.&lt;br /&gt;
*'''Duration format''' - time format in invoice. Available Options - 'H:M:S', 'H:M', 'M'. When option 'M' is used, the sub-option Decimal places appear, where you can select precision.&lt;br /&gt;
*'''Group Calls By''' - when &amp;quot;Destination&amp;quot; is selected, an additional option appears, that allows selecting grouping by &amp;quot;Destination Name&amp;quot; or &amp;quot;Destination Group&amp;quot;. &amp;quot;Destination Name&amp;quot; combines all destinations with the same name into one Invoice entry.&lt;br /&gt;
*'''Group DID Calls into single line''' - when &amp;quot;Yes&amp;quot; is selected, all DID calls will be grouped into a single Invoice Line. An additional option appears, that allows to set a name for the Invoice Line.&lt;br /&gt;
*'''Group Subscriptions by Charge Plan''' - when &amp;quot;Yes&amp;quot; is selected, all Subscriptions will be grouped by the Charge Plan assigned to those Subscriptions. The Invoice Line name will be taken from Charge Plan setting 'Name visible to end user'. If 'Name visible to end user' is not set on the Charge Plan, then a placeholder 'Subscriptions' will be used as Invoice Line.&lt;br /&gt;
*'''Show Rates''' - when &amp;quot;Yes&amp;quot; is selected, the Invoice will show Rate for each Destination. If the same Destination has multiple Rates then multiple Invoice Lines will be show for the same Destination but with different Rates.&lt;br /&gt;
*'''Manual Payment Line''' - changes the name of line: Prepaid VoIP Services in the invoice. Available in Manual Payment invoices.&lt;br /&gt;
&lt;br /&gt;
'''Consider the following before changing settings:'''&lt;br /&gt;
*if the Number type is changed from INV070601 to INV000001 AND the Number start is kept the same, the numbering continues from the last INV070601 format number.&lt;br /&gt;
*if the Number type is changed from INV070601 to INV000001 AND Number start is kept the same AND the Number length is set to some lower value than it is sufficient to fit the previous INV070601 numbering, then the Number length value will be disregarded and the lowest sufficient value to continue from last Invoice number will be used.&lt;br /&gt;
*if the Number type is changed from INV070601 to INV000001 AND Number start is kept the same AND the Number length is set to some higher value than it is sufficient to fit previous INV070601 numbering, then numbering will continue from the last INV070601 format number and new Number length will be applied, by placing additional zeros between Number start and last number (INV070601 &amp;gt; INV0000070602).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''XLSX'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
XLSX file to export an Invoice is made from your own XLSX format template and information from the Invoices main window.&lt;br /&gt;
An example of the template can be downloaded [https://packets.kolmisoft.com/packets/x6_invoice_template.xlsx here].&lt;br /&gt;
&lt;br /&gt;
When you already have a template for example with all data of your company, with drawn tables and so on, you need to define where should be shown the dynamic information of the invoice. To do that you just need to define the cell address in the correct format. &lt;br /&gt;
&lt;br /&gt;
Client Address Cell is different than other ones - once you will define this, all other Address Related Cells will be filled automatically and will not be editable. Also, no empty space will be left if any Address sub-cell is not defined. For example, if Client State is not defined in User's Settings, then this Cell will not be empty in Invoice - all Address Cells below will go up by one Cell. This allows nice Address formatting without leaving spaces if some Address data is not defined in the User's settings.&lt;br /&gt;
&lt;br /&gt;
*'''Comment''' - refers to the Comment available on the Invoice Details page. The Invoice needs to be recalculated after adding a comment, so that comment would be applied.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Emails=&lt;br /&gt;
[[File:M2 Invoices.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*'''Sending globally enable'''d – if this is checked, you will be able to use Mass Mailing and the system will send emails upon user registration.&lt;br /&gt;
*'''SMTP server''' – hostname of the server.&lt;br /&gt;
*'''Port''' – port of SMTP server.&lt;br /&gt;
*'''Login''' – username to your SMTP server.&lt;br /&gt;
*'''Password''' – password to your SMTP server.&lt;br /&gt;
*'''Batch size''' – value for Mass Mailing, or how many emails to send at once.&lt;br /&gt;
*'''From''' – email address to put into From: field in an email. Acceptable formats are example@email.com or John Smith &amp;lt;example@email.com&amp;gt;.&lt;br /&gt;
*'''Test email sending''' – save settings and press this to test email sending. Do not forget to save settings first! &lt;br /&gt;
&lt;br /&gt;
P.S. Remember to set the admin's e-mail in the admin's personal settings. Without this test email sending will not work!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=Tax=&lt;br /&gt;
[[File:M2 Tax.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*Settings are explained here: [[Multi-Tax system]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Security=&lt;br /&gt;
[[File:M2_settings_security.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Use strong passwords for users''' - password must contain at least one numeric value, capital and lowercase symbol, and must at be at least 8 characters long.&lt;br /&gt;
* '''Admin login with approved IP only''' - security measure which allows approving IP's that try to [[M4_Login_with_approved_IP%27s|login with Admin Account]].&lt;br /&gt;
* '''Enable IP report warning on login failure''' - show [[M4_Login_Failure_Report|warning]] on unsuccessful login attempts.&lt;br /&gt;
* '''Logout after password change''' - terminates all sessions of the User whose password is changed.&lt;br /&gt;
* '''Do not logout on session IP change''' - do not logout from M4 GUI if IP is changed.&lt;br /&gt;
* '''2FA Enabled''' - Enables two factors authentication. Two factors authentication requires entering emailed code during login to the user account. '''2FA Enabled must be also enabled on individual User settings to make it work for that User.'''&lt;br /&gt;
** '''Email Template''' - [[M4_Emails|email template]] used to send the code.&lt;br /&gt;
** '''Code length (digits)''' - code length.&lt;br /&gt;
** '''Code Enter Attempts Allowed''' - number of attempts to enter the code correctly. The code expires after this number of failed attempts.&lt;br /&gt;
** '''Code Enter Time Allowed''' - code is valid for this amount of time.&lt;br /&gt;
** '''Send Notification Email to Admin on Login''' - allows admin to get email notification on login.&lt;br /&gt;
*** '''Email Template''' - [[M4_Emails|email template]] used to notify admin.&lt;br /&gt;
*** '''On Admin Login''' - get notification on login to Admin's account.&lt;br /&gt;
*** '''On User Login''' - get notification on login to User's accounts.&lt;br /&gt;
** '''Send Notification Email on Login''' - allows this mailbox to get email notification on login.&lt;br /&gt;
*** '''Email Template''' - [[M4_Emails|email template]] used to notify.&lt;br /&gt;
*** '''On Admin Login''' - get notification on login to Admin's account.&lt;br /&gt;
*** '''On User Login''' - get notification on login to User's accounts.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Active Calls=&lt;br /&gt;
[[File:M2_settings_active_calls.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''How many maximum [[ M4 Active Calls|Active Calls]] to show in GUI''' – how many  to show in GUI&lt;br /&gt;
* '''[[ M4 Active Calls|Active Calls]] refresh interval''' – [[ M4 Active Calls|Active Calls]] refresh interval in seconds&lt;br /&gt;
* '''Show [[ M4 Active Calls|Active Calls]] for Users''' – tick if you want to allow users to see [[ M4 Active Calls|Active Calls]]&lt;br /&gt;
* '''Show Servers in [[ M4 Active Calls|Active Calls]]'''&lt;br /&gt;
&lt;br /&gt;
* '''Show Rates in [[ M4 Active Calls|Active Calls]]''' .&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calls List=&lt;br /&gt;
[[File:M2_settings_last_calls.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Show Connection Point and its CallerID''' – shows an additional column in [[Last Calls]] page with Connection Point and its CallerID information. Click to reach that Connection Point settings page.&lt;br /&gt;
* '''Show CallerID sent to TP'''&lt;br /&gt;
* '''Show Answer Time'''&lt;br /&gt;
* '''Show End Time'''&lt;br /&gt;
* '''Show PDD'''&lt;br /&gt;
* '''Show Terminated by'''&lt;br /&gt;
* '''Show Duration''' - shows additional Duration column.&lt;br /&gt;
* '''Show Release Cause''' - when enabled, the Call List in M4 shows an additional sortable Release Cause column with the SIP release code per call. A Release Cause (SIP) filter is also available on the list.&lt;br /&gt;
* '''Show Usernames on PDF/CSV Export Files''' – if checked, when a particular User in the Last Calls page search is selected, the Last Calls PDF/CSV file name will be composed also of the Name of the selected User. If you are looking for All Users, no User Name will be used. (Name of the User will be shown in Name of the CSV/PDF file). &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Calls Dashboard=&lt;br /&gt;
[[File:M2 Call Dashboard.jpg]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the System Settings, several adjustments can be made in order to customize the Calls Dashboard.&lt;br /&gt;
*'''Calls Dashboard refresh interval''': how often the statistics are updated (a positive integer representing minutes).&amp;lt;br/&amp;gt;&lt;br /&gt;
*'''ASR''': as in the example, when lower than 30%, the cells will be colored red, and greater than 50% value will result in a green color. Everything between will be set to yellow (only integers are allowed).&amp;lt;br/&amp;gt;&lt;br /&gt;
*'''ACD''': as in the example, when lower than 60 seconds, the cells will be colored red, and greater than 119 seconds value will result in a green color. Everything between will be set to yellow (only integers are allowed).&amp;lt;br/&amp;gt;&lt;br /&gt;
*'''Margin''': as in the example, no coloring will be applied on Margin cells.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Note:''' partial coloring is also possible. For example, when the ASR is set to Red &amp;lt; 30 and Green &amp;gt; is left blank, only red coloring will be present for the ASR cells.&lt;br /&gt;
More information about [[M4 Calls Dashboard]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=CDR Management=&lt;br /&gt;
This functionality is [[M4 CDR Management#Configuration|described here]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=Visual=&lt;br /&gt;
[[File:M2 settings visual.png]]&lt;br /&gt;
* '''Items per page''' – the number of items to display per one page&lt;br /&gt;
* '''[[Global_date_format| Default date format]]''' – System default date format&lt;br /&gt;
* '''Default Time Format''' – System default time format&lt;br /&gt;
* '''Default Hour Format''' – System default hour format&lt;br /&gt;
* '''Number digits''' – how many digits to display after a comma&lt;br /&gt;
* '''Currency Amount Number Digits (Decimal Places)''' - how many digits to display after a comma in monetary terms.&lt;br /&gt;
* '''Show Full Source (CallerID Name and Number)'''&lt;br /&gt;
* '''Default Number Decimal''' – with this option you can set the default number decimal for all GUI.&lt;br /&gt;
* '''Show Detailed Quick Stats''' - shows detailed Quick Stats on main page.&lt;br /&gt;
* '''Cache ES Sync Status for last''' - caches ES Sync status for last X minutes. If value 0 is entered, then ES Sync Status will be changed with every refresh.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=User Settings=&lt;br /&gt;
[[File:M4_settings_user_settings.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Hide Connection Point passwords for users''' – do not display Connection Point passwords for users.&lt;br /&gt;
* '''Show user_billsec for Users instead of billsec''' – shows user_billsec instead of billsec in Users invoices and last calls. Notice that Billsec shows real Call duration, and user_billsec shows Call duration after minimal time or increment applied. For example, if the user tariff has a 60-second minimal time and the user made a Call for 20 sec, then billsec will show 20 sec and user_billsec will show 60 sec (minimal time is applied).&lt;br /&gt;
* '''Show Calls statistics to User for last''' – number of Calls statistics to show in days. For example, if you enter 5 days, users will only see 5 days old calls, they will not be able to check older calls.  &lt;br /&gt;
*'''Change ANSWER to FAILED if HGC not equal to 16 for Users''' – changes the Hangupcause for users in call reports from Answered to Failed if Hangupcause is not 16. &lt;br /&gt;
*'''Show User Tariffs without taxes''' – exclude taxes when the User checks his tariffs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Various=&lt;br /&gt;
[[File:M2 settings various.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Agreement number length''' – number length in digits. &lt;br /&gt;
* '''Server free space limit''' - if server free space is lower than this limit, the warning will be displayed globally and an email sent to the admin every hour. The default value is 20%.&lt;br /&gt;
* '''Call Tracing Server''' - which server to use for call tracing. Useful if the GUI server is on a different server than the Radius server.&lt;br /&gt;
* '''Delete outdated Rates older than''' - delete rates for which the effective date is older than x days and for which exists the same prefix with the newer effective date. The default is 0, which means never deleting.&lt;br /&gt;
* '''Use Tariff currency in CSV export''' - uses tariff currency in CSV export.&lt;br /&gt;
* '''Delete Automatic Tariff Import Inbox Messages older than''' - deletes automatic tariff import inbox messages older than set days.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=API=&lt;br /&gt;
[[File:M2 settings api.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Allow API globally''' – should we enable API globally? When it is disabled, all settings below are also disabled and not editable.&lt;br /&gt;
* '''Allow GET API''' – should we allow the GET method to be used for API? Good for testing - but do not use in production! It is unsafe.&lt;br /&gt;
* '''API Secret Key''' – key to [[MOR API hash construction | generate Hash]]&lt;br /&gt;
* '''XML API Extension''' – send XML output with HTML tag - this is used for broken .Net support, keep it unchecked if everything works for you.&lt;br /&gt;
* '''Allow API Login Redirect''' – if login is successful the customer will be redirected to MOR billing the Main site.&lt;br /&gt;
* '''API Allow Payments''' - Allows to create payments via API&lt;br /&gt;
* '''Allow Connection Point to check balance over API''' - Allows Connection Point to check balance over API&lt;br /&gt;
* '''Disable hash checking''' – When it is on API functions can be used without sending hash. Default value: off.&lt;br /&gt;
* '''Uniquehash''' – admin's unique hash.&lt;br /&gt;
'''NOTE''' that M4 does not allow you to enable '''Allow API''' if '''API Secret Key''' is not entered. In such case, you will get a message '''Invalid API secret key'''. '''Enter API Secret Key''' in order to fix this.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Backups=&lt;br /&gt;
[[File:M2 settings backups.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If Run Backup according below schedule is checked, the following settings become active:&lt;br /&gt;
&lt;br /&gt;
*'''Exclude Archived Calls table''' – archived calls will not be present in the backup (calls_old table will be ignored).&lt;br /&gt;
*'''Store Backups on FTP server''' - stores Backups on FTP server. Please fill in FTP server details at [http://wiki.kolmisoft.com/index.php/M4_settings#FTP FTP] tab.&lt;br /&gt;
*'''Month''' – in which month backup should be made.&lt;br /&gt;
*'''Day of every month''' – which day of every month backup should be made.&lt;br /&gt;
*'''Day of week''' – which day of the week backup should be made.&lt;br /&gt;
*'''Hour''' – which hour backup should be made?&lt;br /&gt;
*'''Keep on local server''' – how many backups to keep on the server. The system deletes the oldest one if the limit is reached.&lt;br /&gt;
*'''Don't start backup if disk space less than''' – checks disk space before making an auto backup.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=CSV Settings=&lt;br /&gt;
[[File:M2 settings csvsettings.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''CSV Column Separator''' – how columns are separated in imported/exported CSV files.&lt;br /&gt;
* '''CSV Decimal Separator''' – how decimal parts in numbers are separated in imported/exported CSV files.&lt;br /&gt;
* ''' Archive CSV file when size reaches''' – if the CSV file reaches a certain size, the system will archive it to save time to download it (0 means to archive never)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Server Load=&lt;br /&gt;
[[File:M2 settings serverload.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Settings for GUI Server and Database Server&lt;br /&gt;
&lt;br /&gt;
* '''HDD utilization higher than''' – Percentage of CPU time during which I/O requests were issued to the device (bandwidth utilization for the device), as reported by '''iostat''' %util column.&lt;br /&gt;
* '''CPU General Load higher than''' – Percentage of the CPU for user processes as reported by '''top''' %us column.&lt;br /&gt;
* '''CPU Load Stats 1 higher than''' – average load for '''one minute''' on the system as reported by '''top''' command&lt;br /&gt;
* '''CPU MySQL process higher than''' –  Percentage of the CPU for MySQL process as reported by '''top''' command &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Delete Server Load Stats older than''' – deletes internal servers load statistics older than a defined number of days.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Privacy=&lt;br /&gt;
[[File:M2 settings gdpr.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* '''GDPR Activated''' – hides User data with notification &amp;quot;Data hidden due GDPR. Press to show data (action will be logged)&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payments=&lt;br /&gt;
[[File:M2_paypal_settings.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Activate Paypal Payments''' - yes or no. This will add the PayPal payment menu in the Users accounts Start page.&lt;br /&gt;
* '''Paypal Client ID''' - Paypal client ID (provided by Paypal).&lt;br /&gt;
* '''Secret Paypal Key''' - key to verify transactions (provided by Paypal).&lt;br /&gt;
* '''Default Currency''' - set default PayPal currency.&lt;br /&gt;
'''NOTE: Current tab is visible if PayPal addon is activated.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More details: [[M4 PayPal Addon|PayPal Addon]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:M4_stripe.png]]&lt;br /&gt;
&lt;br /&gt;
More details: [[M4_Stripe|Stripe]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=FTP=&lt;br /&gt;
[[File:M2_FTP.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please fill up the FTP server details if you want to store Archived calls and or/and Backups to the FTP server.&lt;br /&gt;
&lt;br /&gt;
* '''IP''' - Enter FTP server IP.&lt;br /&gt;
* '''Port''' - Enter FTP server Port.&lt;br /&gt;
* '''Username''' - Enter FTP server Username.&lt;br /&gt;
* '''Password''' - Enter FTP server Password.&lt;br /&gt;
* '''Path for Archived Calls''' - Enter Path for Archived Calls.&lt;br /&gt;
* '''Path for Backups''' - Enter path for Backups.&lt;br /&gt;
* '''Path for CDR Export''' - Enter path where to export CDRs.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=SFTP=&lt;br /&gt;
[[File:m4_sftp.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please fill up SFTP server details if you want to use SFTP for [[M4 Automatic CDR Export]].&lt;br /&gt;
&lt;br /&gt;
* '''IP''' - IP of the SFTP server.&lt;br /&gt;
* '''Port''' - Port of the SFTP server.&lt;br /&gt;
* '''Username''' - Username to connect to SFTP server.&lt;br /&gt;
* '''Password''' - Password to connect to SFTP server.&lt;br /&gt;
* '''Use SSH key''' - Use SSH key configured as described [[Configure SSH connection between servers|here]].&lt;br /&gt;
* '''Path for CDR Export''' - Path in SFTP server where to export CDRs.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mobile Number Portability=&lt;br /&gt;
&lt;br /&gt;
* More details: [[M4 Mobile Number Portability]]&lt;br /&gt;
&lt;br /&gt;
[[File:mnp_settings.png]]&lt;br /&gt;
* '''Use Number Portability''' - Enable number portability.&lt;br /&gt;
* '''Server IP''' - The IP address of the MNP server that M4 will connect to.&lt;br /&gt;
* '''Port''' - The port number of the MNP server's DB that M4 will connect to.&lt;br /&gt;
* '''Username''' - The user name of the account used to connect to the MNP server's DB.&lt;br /&gt;
* '''Password''' - The password of the account used to connect to the MNP server's DB.&lt;br /&gt;
* '''DB Name''' - The name of MNP DB where MNP data is stored.&lt;br /&gt;
* '''Table Name''' - The table name from MNP '''DB Name''' DB where data is stored.&lt;br /&gt;
* '''Search Field''' - The name of the column in '''Table Name''' where number will be searched.&lt;br /&gt;
* '''Result Field''' - The name of the column in '''Table Name''' from where information about the number's portability will be retrieved.&lt;br /&gt;
* '''Supported Prefixes''' - Either '''All Prefixes''' (default) or '''Only these prefixes'''. If the '''Only these prefixes''' option is enabled, only selected prefixes will be active for MNP check.&lt;br /&gt;
&lt;br /&gt;
'''Add to List'''  button allows to add prefixes for '''Only these prefixes''' option.&lt;br /&gt;
&lt;br /&gt;
'''Test DB Connection''' button allows us to test the DB connection and check if DB details are correct or not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Local Number Portability=&lt;br /&gt;
&lt;br /&gt;
* [[M4 Local Number Portability]]&lt;br /&gt;
&lt;br /&gt;
[[File:lnp_settings.png]]&lt;br /&gt;
* '''Use Local Number Portability''' - Enable local number portability (in most cases for USA jurisdictional routing)&lt;br /&gt;
* '''Server IP''' - The IP address of the LNP server's DB that M4 will connect to.&lt;br /&gt;
* '''Port''' - The port number of the LNP server's DB that M4 will connect to.&lt;br /&gt;
* '''Username''' - The user name of the account used to connect to the LNP server's DB.&lt;br /&gt;
* '''Password''' - The password of the account used to connect to the LNP server's DB.&lt;br /&gt;
* '''DB Name''' - The name of LNP DB where LNP data is stored.&lt;br /&gt;
* '''Table Name''' - The table name from LNP '''DB Name''' DB where data is stored.&lt;br /&gt;
* '''Search Field''' - The name of the column in '''Table Name''' where destination number will be searched.&lt;br /&gt;
* '''Result Field''' - The name of the column in '''Table Name''' from where information about the number's local portability (routing number) will be retrieved.&lt;br /&gt;
* '''Supported Prefixes''' - Either '''All Prefixes''' (default) or '''Only these prefixes'''. If '''Only these prefixes''' option is enabled, only selected prefixes will be active for LNP check.&lt;br /&gt;
&lt;br /&gt;
'''Add to List'''  button allows to add prefixes for '''Only these prefixes''' option.&lt;br /&gt;
&lt;br /&gt;
'''Test DB Connection''' button allows us to test the DB connection and check if DB details are correct or not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Redis=&lt;br /&gt;
* '''Use Redis''' - set to Yes if Redis is available. It is needed for features like Real-time Concurrent Calls / CPS statistics to work.&lt;br /&gt;
* '''IP''' - IP of Redis server. Usually, the same as the Radius server.&lt;br /&gt;
* '''Port''' - TCP 6379 is the Default port for the Redis server.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=White Label=&lt;br /&gt;
[[File:white_lable_settings.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Logo''' - replaces the logo shown in the top left corner. Max size: 125x40, supported types: PNG, JPG.&lt;br /&gt;
* '''Favicon''' - replaces icon shown in browsers tab. Max size: 64x64, supported type: ICO.&lt;br /&gt;
* '''Footer''' - text is shown at the bottom of the page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=SIP Trunking=&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4_settings_sip_trunking.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=DIDs=&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:M4 Settings DIDs.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:M2_settings_last_calls.png&amp;diff=31469</id>
		<title>File:M2 settings last calls.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:M2_settings_last_calls.png&amp;diff=31469"/>
		<updated>2026-03-23T12:29:04Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:M2 settings last calls.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:RateNotificationTemplate3.png&amp;diff=31468</id>
		<title>File:RateNotificationTemplate3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:RateNotificationTemplate3.png&amp;diff=31468"/>
		<updated>2026-03-23T09:36:25Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:RateNotificationTemplate3.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_two_factor_authentication&amp;diff=31464</id>
		<title>M4 two factor authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_two_factor_authentication&amp;diff=31464"/>
		<updated>2026-03-17T08:58:00Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
'''Two-factor (2FA) authentication''' improves security by assigning an additional method (factor) for authentication.&lt;br /&gt;
M4 supports two methods of Two-factor authentication:&lt;br /&gt;
* Sending verification code over email&lt;br /&gt;
* Authenticator App, using time-based one-time password (TOTP) &lt;br /&gt;
&lt;br /&gt;
Examples of apps that support TOTP protocol:&lt;br /&gt;
* Google Authenticator&lt;br /&gt;
* Microsoft Authenticator&lt;br /&gt;
* LastPass Authenticator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
==Globally enabling 2FA==&lt;br /&gt;
In order to configure 2FA, firstly it must be globally enabled in [[M4_Settings#Security|MAINTENANCE-&amp;gt;Settings Security section]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:2FAM4globalsettings.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable this setting, email must be [[M4_Settings#Emails|globally enabled]] too.&lt;br /&gt;
&lt;br /&gt;
==Enabling for Users==&lt;br /&gt;
Once 2FA is globally enabled, Admin can Enable/Disable 2FA for specific Users in the [[M4_Users#General|User's Details Page]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:2FAuserfromadmin.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration from User's Account==&lt;br /&gt;
If 2FA is enabled by Admin for User, this User can configure 2FA from the '''Personal details''' page:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:2FAM4userpersonaldetails.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:2FAM4userpersonaldetailspage.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When 2FA is enabled for the User, by default 2FA is set to Email. In this case, no additional configuration is needed.&lt;br /&gt;
&lt;br /&gt;
To Enable 2FA by '''Authenticator app''', the User has to do these steps:&lt;br /&gt;
* Set Authentication method to: '''Authenticator app'''&lt;br /&gt;
* Press '''UPDATE''' button&lt;br /&gt;
* New window will appear where Users can scan QR code or enter the key manually.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;[[File:2FAM4appauthentication.png]]&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
* Open Authentication App (Google Authenticator, Microsoft Authenticator, etc) and scan the QR code. If you are unable to scan the QR code, enter the key manually in the App.&lt;br /&gt;
* Account will be added to your Authenticator App and App will generate the code that must be entered into the Code section.&lt;br /&gt;
* Click '''Submit''' button to verify the operation. &lt;br /&gt;
&lt;br /&gt;
If the operation is successful, Authenticator App 2FA authentication will be enabled and the User will need to enter the code from the App (this code changes every few seconds) on every login.&lt;br /&gt;
&lt;br /&gt;
If the verification operation fails for some reason (the user is unable to add the key to the app, close the browser window, etc), on the next login User will be authenticated using Email 2FA.&lt;br /&gt;
&lt;br /&gt;
==Configuration for System Admin==&lt;br /&gt;
Configuration is [[M4_two_factor_authentication#Configuration_from_User's_Account|the same]] as for simple Users and is available from  Personal Menu under the Admin account.&lt;br /&gt;
&lt;br /&gt;
[[File:2FAM4adminconfig.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only difference is that Admin can disable/enable 2FA for his own account, while a simple User can only change the 2FA type if it is enabled by Admin for the User account.&lt;br /&gt;
&lt;br /&gt;
==Configuration from Mangers==&lt;br /&gt;
&lt;br /&gt;
[[File:2FAM4managerconfig.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:2FAM4managerconfig.png&amp;diff=31463</id>
		<title>File:2FAM4managerconfig.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:2FAM4managerconfig.png&amp;diff=31463"/>
		<updated>2026-03-17T08:57:58Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:2FAM4globalsettings.png&amp;diff=31462</id>
		<title>File:2FAM4globalsettings.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:2FAM4globalsettings.png&amp;diff=31462"/>
		<updated>2026-03-17T08:07:08Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:2FAM4globalsettings.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=DID_Management&amp;diff=31461</id>
		<title>DID Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=DID_Management&amp;diff=31461"/>
		<updated>2026-03-16T09:09:54Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Forward */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
&lt;br /&gt;
DID is an external number to have incoming calls to your VoIP network reach a particular device.&lt;br /&gt;
&lt;br /&gt;
'''VERY IMPORTANT RULE: DIDs in MOR MUST be in E.164 format.'''&lt;br /&gt;
&lt;br /&gt;
You can reach window, with list of all DIDs, in '''SETTINGS –&amp;gt; Billing –&amp;gt; DIDs''':&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dids updated.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
User/Dial Plan and Device show who will answer when dialing this DID.&lt;br /&gt;
&lt;br /&gt;
Clicking on User or Device brings you to their settings. If you click on the [[Image:callflow.png]] icon, you will go to the device's [[Call Flow]] window.&lt;br /&gt;
&lt;br /&gt;
In this page you can &lt;br /&gt;
*[[DID_Management#Add_new_DID(s) | Add new DID(s)]]&lt;br /&gt;
*Reach [[DID_Management#DID_bulk_management | Bulk management]]&lt;br /&gt;
*Export DIDs to CSV&lt;br /&gt;
*Reach page to change DID [[DID Billing | Rates]]&lt;br /&gt;
*Update DID [[DID_Management#Settings | settings]]&lt;br /&gt;
*Search only by DID Owner, when using search field called ''Owner'', or search by either DID Owner or DID Reseller at once, when using search field called ''User''.&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X5---&amp;gt;&lt;br /&gt;
*Hide Terminated DIDs. When option &amp;quot;Hide Terminated DIDs&amp;quot; is checked, terminated dids will be hidden until option is unchecked. Clear search button or relogin will not clear the checked option.&lt;br /&gt;
* Search by User type.&lt;br /&gt;
* Search by inclusive Balance range (only for Owners).&lt;br /&gt;
* Search by User status (only for Owners).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Special cases =&lt;br /&gt;
&lt;br /&gt;
Single DIDs can be added with a-z or A-Z values.&lt;br /&gt;
&lt;br /&gt;
DID must consist only of 0-9, a-z, A-Z, and begin with a number.&lt;br /&gt;
&lt;br /&gt;
Example DID: 0B69847249887528&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' when number contains letters and you do not want to cut destination, enable '''clean_destination = 0''' in '''/etc/asterisk/mor.conf'''.&amp;lt;br&amp;gt;&lt;br /&gt;
More information [[Mor.conf]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Status =&lt;br /&gt;
[[Image:dids2.png|right]]&lt;br /&gt;
Status is very important. For every just-created DID, the status is Free.&lt;br /&gt;
&lt;br /&gt;
A DID can have several statuses:&lt;br /&gt;
&lt;br /&gt;
* '''Free''' – this status means that the DID is free to be reserved for any user/device. You can also Terminate it.&lt;br /&gt;
* '''Reserved''' – the DID is reserved but NOT actually used for a user. &amp;quot;Reserved&amp;quot; is useful at the negotiation stage before signing a contract. When a user decides to sign up, we Activate the DID. We can also make the DID Free.&lt;br /&gt;
* '''Active''' – the DID is assigned to a Device and is functional. We can Close it.&lt;br /&gt;
* '''Closed''' – the DID is no longer functional, so that all calls going to this DID will get Hangup. One important feature of this state: when a DID is Closed, it will be closed for a set time (the default is 90 days) in case the user changes his mind and decides to use this DID again. This is useful when a user is not paying for services, as we can suspend the DID by using Closed. MOR will make it Free after the Closed period runs out. You can manually make it Free or Terminate this DID.&lt;br /&gt;
* '''Terminated''' – the DID is no longer used in MOR. It remains only for historical purposes. You can make it Free if you want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Add new DID(s) =&lt;br /&gt;
&lt;br /&gt;
In the main DIDs window, if you want to add new DID(s), click on [[Image:add.png]] '''New DID''':&lt;br /&gt;
&lt;br /&gt;
[[Image:dids5.png]]&lt;br /&gt;
&lt;br /&gt;
In this window you can:&lt;br /&gt;
&lt;br /&gt;
# Select DID(s) [[DID_Management#Details | details]]&lt;br /&gt;
# Add one DID or series of DIDs&lt;br /&gt;
# [[ DID_Import_from_CSV | Import DID(s) from CSV file]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''NOTE:''' You should select the Provider which sold you this DID. DID Provider is ONLY for informational purposes. If you do not know which Provider to assign - create dummy Provider to represent company from which you buy DID. If this is fake DID - assign any Provider you want. If your DID Provider has several IP addresses (as DIDWW) and you configured several Providers in MOR - assign ANY configured Provider.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== VIDEO: How to create a DID ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/SVJS_stEgBQ&amp;quot; frameborder=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
&lt;br /&gt;
*'''Provider''' – DID Provider is ONLY for informational purposes. If you do not know which Provider to assign - create dummy Provider to represent company from which you buy DID. If this is fake DID - assign any Provider you want. If your DID Provider has several IP addresses (as DIDWW) and you configured several Providers in MOR - assign ANY configured Provider.&lt;br /&gt;
&lt;br /&gt;
*'''Language''' – option to set language for voice prompts in the Asterisk Dial Plan&lt;br /&gt;
&lt;br /&gt;
*'''Call limit''' – describes how many simultaneous calls DID can '''receive'''. 0 (zero) means that calls are unlimited.&lt;br /&gt;
&lt;br /&gt;
*'''Max Call Duration (Timeout)''' – a number of seconds before a Call via DID is terminated ('''NOTE:''' due to a global safeguard Calls are terminated ~3 sec. earlier than this setting).&lt;br /&gt;
&lt;br /&gt;
*'''Comment''' – option to save some notes about DID.&lt;br /&gt;
&lt;br /&gt;
*'''[[Sound files | Sound file]]''' – here you can add [[IVR Greeting for DID]]. There are two options:&lt;br /&gt;
# Answer and play.&lt;br /&gt;
# Early media.&lt;br /&gt;
*'''PIN''' – a numeric PIN code to secure a DID.&lt;br /&gt;
&lt;br /&gt;
*'''PIN retries''' – a number of allowed attempts to enter a PIN code.&lt;br /&gt;
&lt;br /&gt;
*'''[[Sound files | Sound file]] to reenter PIN''' – a Sound File that is played before the next attempt to enter a PIN Code.&lt;br /&gt;
&lt;br /&gt;
*'''MOH instead of Ringing''' – if [[Music on Hold|MOH]] is selected, Music on Hold will be played instead of ringing when DID number is dialled. &lt;br /&gt;
&lt;br /&gt;
*'''[[IVR_system | IVR]] if PIN fails''' – an IVR the Call is transferred to when all attempts to enter a PIN Code fail. '''NOTE:''' when all PIN attempts fail and '''IVR if PIN fails''' is None, a Call is terminated with a [[Hangupcause_Codes|Hangupcause Code]] '''275'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 9---&amp;gt;&lt;br /&gt;
*'''Grace Time''' – if call duration is less than Grace Time, it will not be accounted, for example: '''Grace Time''' = 3s, call duration &amp;lt;= 3s, then price for the call = 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 10---&amp;gt;&lt;br /&gt;
*'''Timeout Digit''' – the maximum amount of time permitted between digits when the user is typing in a number. When this timeout expires after the user has started to type in a number, the number will be considered complete, and will be interpreted (sent to the system). Works both with entering destination and ANI/PIN.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 10---&amp;gt;&lt;br /&gt;
*'''Timeout Response''' – the maximum amount of time permitted for user to START entering a number. If the user does not begin typing a number in this amount of time, system will notify that nothing was entered. Once the user begins to type a number, system will wait for &amp;lt;b&amp;gt;Digit Timeout&amp;lt;/b&amp;gt; to be reached, and &amp;lt;b&amp;gt;Response Timeout&amp;lt;/b&amp;gt; has no effect no more. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 11---&amp;gt;&lt;br /&gt;
*'''CallerID Name Prefix''' – option to add a CallerID Name prefix to the incoming CallerID.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 12---&amp;gt;&lt;br /&gt;
*'''Tone zone''' – option to set tone zones. Tone zone is a different ring tone depending on destination (country).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 12---&amp;gt;&lt;br /&gt;
*'''Tariff for Calling Card''' – option to set a tariff for DID which will be applied for a calling card. It will not be important what tariff is assigned for that card's group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X11---&amp;gt;&lt;br /&gt;
*'''Active from''' – DID will become active from this date. If DID is not active yet, call is routed like there is no matching DID number.&lt;br /&gt;
&lt;br /&gt;
*'''Active till''' – DID will be active till this date. Expiration does not change DID status, call is routed like there is no matching DID number.&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X13---&amp;gt;&lt;br /&gt;
* '''Blacklist Source Number Pool''' - this will set [[Number Pool]] for Blacklist Source. When calling this DID, if Source Number match number in this pool, call will be rejected with '''HGC 283 - Source number is in DID blacklist'''.&lt;br /&gt;
&lt;br /&gt;
* '''Send call anonymously''' - default no. Ability to show Anonymous on incoming call.&lt;br /&gt;
&lt;br /&gt;
* '''Send CallerID in UUI header''' - default no. The ability to show the caller ID on all calls in Sip UUI messaging.&lt;br /&gt;
Header example:&lt;br /&gt;
 User-to-User: hexCallerid;pd=XX;encoding=hex;purpose=isdn-uui;content=isdn-uui&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= DID Wildcard =&lt;br /&gt;
&lt;br /&gt;
It is possible to use Wildcard '''*''' to match several DID numbers.&amp;lt;br&amp;gt;&lt;br /&gt;
For example, DID '''37088888*''' would match 37088888'''81''' 37088888'''72''' 37088888'''93''' 37088888'''5555555''', etc. &amp;lt;br&amp;gt;&lt;br /&gt;
'''IMPORTANT''' DID numbers without a Wildcard have higher priority.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Did wildcard.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Settings = &lt;br /&gt;
&lt;br /&gt;
If you want to edit a DID's settings, click on the [[Image:edit.png]] icon. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:dids4.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The above window is for Free DID. You can:&lt;br /&gt;
&lt;br /&gt;
# Change [[DID_Management#Details | details]]&lt;br /&gt;
# [[DID_Management#Reserve_DID_for_User | Reserve DID for User]].&lt;br /&gt;
# [[DID_Management#Assign_to_Dial_Plan | Assign to Dial Plan]].&lt;br /&gt;
# Terminate a DID.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reserve DID for User==&lt;br /&gt;
&lt;br /&gt;
When a DID is assigned to a Device (Reserve for User first), you have a few different choices:&lt;br /&gt;
&lt;br /&gt;
[[File:DidAssign5.png]]&lt;br /&gt;
&lt;br /&gt;
Here you can:&lt;br /&gt;
&lt;br /&gt;
# Change [[DID_Management#Details | details]].&lt;br /&gt;
# Assign DID to device. Here you can select different Devices for the same user. For select Trunk Device is next section.&lt;br /&gt;
# Assign DID to Trunk. Here you can select different Trunk Devices for the same user.&lt;br /&gt;
# Stop a DID subscription and reserve the DID for 90 days (by default) to this user in case he changes his mind and wants to get the DID back.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assign to Dial Plan==&lt;br /&gt;
&lt;br /&gt;
When DID is assigned to [[Dial_Plans | Dial Plan]], in DID settings you can:&lt;br /&gt;
# Change [[DID_Management#Details | details]].&lt;br /&gt;
# Make DID free.&lt;br /&gt;
&lt;br /&gt;
When you have [[Quickforwards_rules | Quickforward Rule]] for this DID, in DID edit you will see additional notice:&lt;br /&gt;
&lt;br /&gt;
[[Image:DID_edit_collisions_with_qf_rule.png‎]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Delete DID = &lt;br /&gt;
&lt;br /&gt;
At first, mark it as &amp;quot;not used&amp;quot; (Free). Then terminate it. When you do, you will see [[Image:delete.png]] next to the DID in the main DID window. By clicking on it, you can delete the DID.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' you cannot delete DIDs that are associated with calls. You can only Terminate these DIDs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DID bulk management =&lt;br /&gt;
In the main DIDs window, click [[Image:edit.png]] Bulk Management and you will be able to perform various actions either on:&lt;br /&gt;
*'''DIDs interval''' - this will apply action on selected DID interval,&lt;br /&gt;
*'''DIDs pattern''' - this will apply action on selected pattern. Supported wildcard symbols in pattern:&lt;br /&gt;
** '''%'''  matches any symbols, for example '''370%''' will match any number starting with '''370'''&lt;br /&gt;
** '''_'''  matches one symbol, for example '''370_1334455''' will match numbers in format '''370x1334455''', where '''x''' is any number.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:dids6.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here you can choose which DIDs to update and what to do:&lt;br /&gt;
*'''Update''' - option to change some of DID details, Reserve DID for User (only free DIDs can be reserved) or Make DID free.&lt;br /&gt;
*'''Delete''' - option to delete DIDs by Provider or make DIDs Free/Terminated/Closed.&lt;br /&gt;
*'''Manage rates''' - option to change Rates for [[DID Billing]].&lt;br /&gt;
*'''[[Assign DID to Trunk]]'''.&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 9---&amp;gt;&lt;br /&gt;
*'''Reserve for User''' - option to reserve DID for User (only free DIDs can be reserved).&lt;br /&gt;
*'''Assign Dial Plan''' - option for Assign DID to [[Dial_Plans | Dial Plan]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Allowing Users to route their DIDs =&lt;br /&gt;
Since '''MOR X5''' users are able to route their DID to a Device or an External Server . &lt;br /&gt;
This functionality can be enabled in '''SETTINGS -&amp;gt; Setup -&amp;gt; Visual''' by checking the 'Allow User to assign DID to Device:' setting.&lt;br /&gt;
&lt;br /&gt;
Once the functionality is enabled, the user will be able to see an Edit icon, in his DIDs list.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Dids_list_with_did_routing.png‎]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By pressing the icon, the user will be redirected to a page where he will be able to route his DID either to one of his MOR Devices, or to a Device on an external server (eg. SIP/370xxxxxx@123.123.123.123).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Did_routing_panel.png‎]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Reseller's DID list permissions are independent from Resellers' User, this means that Resellers' User can view DID list (if permissions are enabled for them) even when Resellers cannot.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs Call Flow =&lt;br /&gt;
&lt;br /&gt;
DID Call Flows allow you to add a call flow on a specific DID.&lt;br /&gt;
&lt;br /&gt;
Available from '''MOR X18''' with the PBX Addon enabled.&lt;br /&gt;
&lt;br /&gt;
An Accountant needs to have permissions: manage DID and manage PBX functions.&lt;br /&gt;
&lt;br /&gt;
Reseller needs to have a DID assigned to him or his user.&lt;br /&gt;
&lt;br /&gt;
A simple user needs to have DIDs permission enabled and a DID assigned to him.&lt;br /&gt;
&lt;br /&gt;
DID call flow only works with DIDs that are linked to a device.&lt;br /&gt;
&lt;br /&gt;
If call flow is set on both DID and DID Device, then DID call flow will have higher priority - DID Device call flows will be ignored. It does not provide two levels of Call Flow, either only DID Call Flow works (if there is Action on '''any''' State), or only Device Call Flow works (if there is nothing set on DID).&lt;br /&gt;
&lt;br /&gt;
[[File:DIDs_call_flow.png‎]]&lt;br /&gt;
&lt;br /&gt;
A call has several States as:&lt;br /&gt;
&lt;br /&gt;
* '''Before Call'''  – call has not reached device.&lt;br /&gt;
* '''Call''' – call to device is in progress.&lt;br /&gt;
* '''Answered''' – call was answered.&lt;br /&gt;
* '''No Answer''' – call was not answered and ended after timeout.&lt;br /&gt;
* '''Busy''' – callee was busy.&lt;br /&gt;
* '''Failed''' – call to device failed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The possible actions are:&lt;br /&gt;
&lt;br /&gt;
* '''Empty'''&lt;br /&gt;
* '''Forward'''&lt;br /&gt;
* '''Voicemail'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Actions ==&lt;br /&gt;
&lt;br /&gt;
=== Empty ===&lt;br /&gt;
&lt;br /&gt;
Empty – means no action should be taken.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Forward ===&lt;br /&gt;
&lt;br /&gt;
'''Forward to'''&lt;br /&gt;
&lt;br /&gt;
Call can be forwarded to Local device or External number:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:DIDs_call_flow_forward.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the &amp;quot;forward&amp;quot; action, it is easy to implement:&lt;br /&gt;
&lt;br /&gt;
* '''Unconditional forward''' – when forward is used in the Before Call state.&lt;br /&gt;
* '''Forward on no answer/busy/failed''' – when forward is used in No Answer, Busy, or Failed states.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''CallerID options'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following options are available to manage CallerID for a forwarded call:&lt;br /&gt;
&lt;br /&gt;
* '''From device''' - puts CallerID from the Device that is forwarding the call (Device assigned to the DID).&lt;br /&gt;
* '''Same as comes - unchanged''' - leaves the CallerID as it comes from the original caller.&lt;br /&gt;
* '''Same as comes - with Diversion''' - leaves the CallerID as it comes from the original caller and additionally adds SIP header Diversion from the initial SIP To URI. Diversion header can be customized by changing the value in the input field. For example value '''${MOR_SIP_TO};reason=unconditional''' will result in Diversion header with an additional parameter ''';reason=unconditional''' (here '''${MOR_SIP_TO}''' will be expanded to initial SIP To URI &amp;lt;nowiki&amp;gt;&amp;lt;sip:xxxxxx&amp;gt;&amp;lt;/nowiki&amp;gt;). If no value is set, then the default value '''${MOR_SIP_TO}''' (initial SIP To URI) will be used. Other Asterisk/MOR core variables can be used here as well.&lt;br /&gt;
* '''Custom''' - enters any CallerID.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Voicemail ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:DIDs_call_flow_voicemail.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The ''Voicemail Action'' sends the Call directly to the [[Voicemail]]. The Action can be set on ''Before Call'', ''No Answer'', ''Busy'' and/or ''Failed'' states of Callflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See Also=&lt;br /&gt;
&lt;br /&gt;
*[[DID Billing]]&lt;br /&gt;
*[[DIDs Usage]]&lt;br /&gt;
*[[MOR_API_did_create | Create DID through API]]&lt;br /&gt;
*[[MOR_API_did_device_assign | Assign Device to DID through API]]&lt;br /&gt;
*[[MOR_API_did_device_unassign | Unassign Device from DID through API]]&lt;br /&gt;
*[[Providers#Provider_Grace_Time|Provider Grace Time]]&lt;br /&gt;
*[[Grace_time|Device Grace Time]]&lt;br /&gt;
*[[Example - Configuring DID to ring some Device]]&lt;br /&gt;
*[[DID is not working]]&lt;br /&gt;
*[[ DID_Import_from_CSV | Import DID(s) from CSV file]]&lt;br /&gt;
*[[Number Pool]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:DIDs_call_flow_forward.png&amp;diff=31460</id>
		<title>File:DIDs call flow forward.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:DIDs_call_flow_forward.png&amp;diff=31460"/>
		<updated>2026-03-16T09:07:32Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:DIDs call flow forward.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:Warning_balance_user_edit_from_reseller.png&amp;diff=30886</id>
		<title>File:Warning balance user edit from reseller.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:Warning_balance_user_edit_from_reseller.png&amp;diff=30886"/>
		<updated>2026-02-20T08:28:59Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:Warning balance user edit from reseller.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=30885</id>
		<title>Warning balance</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=30885"/>
		<updated>2026-02-20T08:22:21Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* From Reseller Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description=&lt;br /&gt;
&lt;br /&gt;
This function allows a number of actions to be taken when a user's balance drops lower than the set value.&lt;br /&gt;
&lt;br /&gt;
You can edit '''Warning Balance''' in [[User Details]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== From Admin Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning balance user edit.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&amp;lt;!---Admin and Accountant are able to get warning emails from MOR X5---&amp;gt;&lt;br /&gt;
Upon activation, the User, Admin, and Responsible Accountant will receive an email when the User balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – an email will be sent every day at a selected time (in user's time zone) while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
'''Play when balance drops lower than''' lets to set the balance limit for the above option.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
* '''Admin Webhook''' – together with the Warning Balance email, a request is sent to the specified URL with data according to the URL config. Webhook URL: '''http://''' or '''https://''' required.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== From Reseller Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning_balance_user_edit_from_reseller.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&lt;br /&gt;
Upon activation, the User and Reseller will receive an email when the User's balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – email will be sent every day at a selected time (in user's time zone),  while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Other notes=&lt;br /&gt;
&lt;br /&gt;
*Emails are sent hourly that means that it might take some time for you to receive an email after the balance drops.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[User Details]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=30884</id>
		<title>Warning balance</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=30884"/>
		<updated>2026-02-20T07:48:40Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* From Reseller Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description=&lt;br /&gt;
&lt;br /&gt;
This function allows a number of actions to be taken when a user's balance drops lower than the set value.&lt;br /&gt;
&lt;br /&gt;
You can edit '''Warning Balance''' in [[User Details]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== From Admin Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning balance user edit.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&amp;lt;!---Admin and Accountant are able to get warning emails from MOR X5---&amp;gt;&lt;br /&gt;
Upon activation, the User, Admin, and Responsible Accountant will receive an email when the User balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – an email will be sent every day at a selected time (in user's time zone) while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
'''Play when balance drops lower than''' lets to set the balance limit for the above option.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
* '''Admin Webhook''' – together with the Warning Balance email, a request is sent to the specified URL with data according to the URL config. Webhook URL: '''http://''' or '''https://''' required.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== From Reseller Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning_balance_user_edit_from_reseller.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&lt;br /&gt;
Upon activation, the User and Reseller will receive an email when the User's balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – email will be sent every day at a selected time (in user's time zone),  while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
* '''Admin Webhook''' – together with the Warning Balance email, a request is sent to the specified URL with data according to the URL config. Webhook URL: '''http://''' or '''https://''' required.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Other notes=&lt;br /&gt;
&lt;br /&gt;
*Emails are sent hourly that means that it might take some time for you to receive an email after the balance drops.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[User Details]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=30883</id>
		<title>Warning balance</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Warning_balance&amp;diff=30883"/>
		<updated>2026-02-20T07:48:27Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* From Admin Account */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description=&lt;br /&gt;
&lt;br /&gt;
This function allows a number of actions to be taken when a user's balance drops lower than the set value.&lt;br /&gt;
&lt;br /&gt;
You can edit '''Warning Balance''' in [[User Details]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== From Admin Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning balance user edit.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&amp;lt;!---Admin and Accountant are able to get warning emails from MOR X5---&amp;gt;&lt;br /&gt;
Upon activation, the User, Admin, and Responsible Accountant will receive an email when the User balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – an email will be sent every day at a selected time (in user's time zone) while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
'''Play when balance drops lower than''' lets to set the balance limit for the above option.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
* '''Admin Webhook''' – together with the Warning Balance email, a request is sent to the specified URL with data according to the URL config. Webhook URL: '''http://''' or '''https://''' required.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== From Reseller Account ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning_balance_user_edit_from_reseller.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check '''Active''' to activate this function. &lt;br /&gt;
&lt;br /&gt;
Upon activation, the User and Reseller will receive an email when the User's balance drops lower than the balance set in the fields after: '''Send email when balance drops lower than'''.&lt;br /&gt;
&lt;br /&gt;
Select when to send such an email and for whom:&lt;br /&gt;
&lt;br /&gt;
* '''Only once when balance drops lower than''' – email will be sent only one time when balance drops lower than defined value.&lt;br /&gt;
* '''Every day at''' – email will be sent every day at a selected time (in user's time zone),  while the balance is lower than defined value.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can play an audio message whenever the user makes a call if the balance drops below the setup Warning Balance.&lt;br /&gt;
&lt;br /&gt;
Check '''Play before every call''' and select the audio file to play.&lt;br /&gt;
&lt;br /&gt;
Use this with caution - not many users will like this!&lt;br /&gt;
&lt;br /&gt;
* '''Warning Balance Email''' – This Email is used as a primary email to send the Warning Balance email. If this email is empty '''Email''' in the Registration Address section is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Other notes=&lt;br /&gt;
&lt;br /&gt;
*Emails are sent hourly that means that it might take some time for you to receive an email after the balance drops.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[User Details]]&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:Warning_balance_user_edit_from_reseller.png&amp;diff=30882</id>
		<title>File:Warning balance user edit from reseller.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:Warning_balance_user_edit_from_reseller.png&amp;diff=30882"/>
		<updated>2026-02-20T07:28:06Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:Warning balance user edit from reseller.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:Warning_balance_user_edit.png&amp;diff=30881</id>
		<title>File:Warning balance user edit.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:Warning_balance_user_edit.png&amp;diff=30881"/>
		<updated>2026-02-20T07:11:16Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:Warning balance user edit.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:Select_chan_spy_device.png&amp;diff=30827</id>
		<title>File:Select chan spy device.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:Select_chan_spy_device.png&amp;diff=30827"/>
		<updated>2026-01-19T09:18:18Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:Select chan spy device.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Spy_real-time_calls&amp;diff=30826</id>
		<title>Spy real-time calls</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Spy_real-time_calls&amp;diff=30826"/>
		<updated>2026-01-19T09:14:23Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* About */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=About=&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 11---&amp;gt;&lt;br /&gt;
This functionality is a part of [[Monitorings Addon]] addon and is used to spy user's real-time calls. &lt;br /&gt;
&lt;br /&gt;
MOR user's which are allowed to use this functionality:&lt;br /&gt;
&lt;br /&gt;
* Admin&lt;br /&gt;
* Accountant (with Allow Spy Calls (Monitoring) permission)&lt;br /&gt;
* Reseller (active calls must be enabled for resellers)&lt;br /&gt;
* User (with Active Calls permission)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''Technical Troubleshooting''' – Service providers and engineers can monitor test calls in real time to identify issues like echo, packet loss, or one-way audio.  &lt;br /&gt;
* '''Enterprise Quality Assurance''' – Companies can monitor staff calls for quality assurance or regulatory compliance.  &lt;br /&gt;
* '''Call Center Supervision''' – Supervisors can listen to agents’ calls in real time to evaluate service quality, check compliance, and ensure scripts are followed.  &lt;br /&gt;
* '''Training &amp;amp; Onboarding''' – Trainers can silently monitor calls of new employees. In &amp;quot;whisper mode,&amp;quot; they can coach the agent without the customer hearing.  &lt;br /&gt;
* '''Live Support Escalation''' – Managers can &amp;quot;barge in&amp;quot; during critical calls to assist agents with difficult situations, ensuring better customer satisfaction.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==How this functionality works?==&lt;br /&gt;
&lt;br /&gt;
1. The manager selects a device where he will receive calls from the system when he wants to spy his user (this has to be done only once).&lt;br /&gt;
&lt;br /&gt;
2. Manager configures his phone to be able to answer it.&lt;br /&gt;
&lt;br /&gt;
3. Manager goes to active calls and presses a Spy icon on a desired call:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Active_calls_spy.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
4. MOR system sends a call to a device set in step 1.&lt;br /&gt;
&lt;br /&gt;
5. Manager answer's the call from the system and is able listen.&lt;br /&gt;
&lt;br /&gt;
Manager can also switch between different SPY modes by pressing:&lt;br /&gt;
&lt;br /&gt;
digit 4 - spy mode (listen only);&lt;br /&gt;
&lt;br /&gt;
digit 5 - whisper mode (spying channel can talk to the spied-on channel);&lt;br /&gt;
&lt;br /&gt;
digit 6 - barge mode (talk to both channels involved in the call).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Please note that it is not possible to spy calls if their Server IDs do not match Spy Device Server ID of the user (admin/reseller) who is viewing the calls. Icons for such calls are fainted:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Activecalls spy.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enable/disable this functionality==&lt;br /&gt;
&lt;br /&gt;
===Enable===&lt;br /&gt;
&lt;br /&gt;
1. For administrator select Spy device in Personal Menu -&amp;gt; Details. &lt;br /&gt;
&lt;br /&gt;
2. For Resellers login as Reseller and go to PERSONAL MENU -&amp;gt; Personal Details.&lt;br /&gt;
&lt;br /&gt;
Select a desired device where you want the system to send a call being spied:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Select_chan_spy_device.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Disable===&lt;br /&gt;
&lt;br /&gt;
You can also globally disable ChanSpy. Go to '''Setup''' -&amp;gt; '''Settings''' -&amp;gt; '''Variuos'''. You will see this setting:&lt;br /&gt;
&lt;br /&gt;
[[File:Chanspy.jpg]]&lt;br /&gt;
&lt;br /&gt;
Tick &amp;quot;Chanspy is disabled globaly:&amp;quot; and click &amp;quot;Save changes&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What is needed to use this feature?==&lt;br /&gt;
&lt;br /&gt;
* '''Admin''': System must have [[Monitorings Addon]]&lt;br /&gt;
* '''Reseller''': System must have [[Monitorings Addon]] and [[Active_Calls|active calls must be enabled]] for resellers.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other setttings==&lt;br /&gt;
&lt;br /&gt;
When spying you '''can press #''' to increase/decrease sound volume.&lt;br /&gt;
&lt;br /&gt;
Available sound levels:&lt;br /&gt;
&lt;br /&gt;
1 2 3 4 -4 -3 -2 -1 '''0'''(default)&lt;br /&gt;
&lt;br /&gt;
'''Here''':&lt;br /&gt;
&lt;br /&gt;
'''-4''' - is the quietest&lt;br /&gt;
&lt;br /&gt;
'''4''' - is the loudest&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
If you have 2 Asterisk servers in your system, both devices for the &amp;quot;Spy action&amp;quot; have to registered to the same Asterisk server.&lt;br /&gt;
&lt;br /&gt;
If source of few calls is same Device/Provider it is possible to SPY on one of those calls only.&lt;br /&gt;
&lt;br /&gt;
If you have a system with a proxy, Spy functionality will not work.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Monitorings_Addon|Monitorings addon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:AccountantPermissions.png&amp;diff=30825</id>
		<title>File:AccountantPermissions.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:AccountantPermissions.png&amp;diff=30825"/>
		<updated>2026-01-19T09:08:24Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: Edvardas uploaded a new version of File:AccountantPermissions.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_v2_Calls&amp;diff=30824</id>
		<title>MOR API v2 Calls</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_v2_Calls&amp;diff=30824"/>
		<updated>2026-01-16T11:30:50Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: /* Returns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Documentation=&lt;br /&gt;
&lt;br /&gt;
Full MOR REST API Documentation is available in '''/billing/api/v2/api-docs'''.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API retrieves the list of calls in the selected time period for the specified User/Device.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Availability:''' This API is available from '''MOR X19''' onwards.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=API=&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API accepts parameters in JSON format. Responses are also returned in JSON format.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* '''limit'''&lt;br /&gt;
* '''only_did'''&lt;br /&gt;
* '''order_by'''&lt;br /&gt;
* '''order_desc'''&lt;br /&gt;
* '''page'''&lt;br /&gt;
* '''period_end'''&lt;br /&gt;
* '''period_start'''&lt;br /&gt;
* '''s_call_type'''&lt;br /&gt;
* '''s_callback_uniqueid'''&lt;br /&gt;
* '''s_destination'''&lt;br /&gt;
* '''s_device'''&lt;br /&gt;
* '''s_did'''&lt;br /&gt;
* '''s_hgc'''&lt;br /&gt;
* '''s_provider'''&lt;br /&gt;
* '''s_reseller'''&lt;br /&gt;
* '''s_uniqueid'''&lt;br /&gt;
* '''s_user'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Authentication==&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API requires user authentication - basic authentication (username/password) and JWT token authentication.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Basic authentication===&lt;br /&gt;
&lt;br /&gt;
Basic authentication uses the User's username and password to access API endpoints.&lt;br /&gt;
&lt;br /&gt;
Username and password must be provided in HTTP '''Authorization''' header, &amp;quot;username:password&amp;quot; string encoded in Base64. For example:&lt;br /&gt;
&lt;br /&gt;
 POST http://x.x.x.x/billing/api/v2/authentication/login HTTP/1.1&lt;br /&gt;
 Authorization: Basic cmljYXJkYxM6OWtBWFpadT9yak1iayRSaA==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JWT authentication===&lt;br /&gt;
&lt;br /&gt;
JWT authentication uses a token (generated by MOR) with each request to endpoints. The API client must obtain a JWT token by calling the '''/authentication/login''' endpoint and then use this token in other endpoints for authentication until the token expires. The authentication token is valid for 15 minutes. Once the token has expired, a new token must be obtained from '''/authentication/refresh''' endpoint. Therefore, you need to run the refresh method every 15 minutes. The refresh token is valid for 7 days.&lt;br /&gt;
&lt;br /&gt;
JWT token must be provided in HTTP Authorization header when requesting '''calls''' parameters. For example:&lt;br /&gt;
&lt;br /&gt;
 get http://x.x.x.x/billing/api/v2/calls?limit=500&amp;amp;period_end=1768549495&amp;amp;period_start=948008695&lt;br /&gt;
 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhc3NpZ25lZF9kZXZpY2VzIjoiMiw4LDEwLDEyLDE4LDI2LDM2IiwiZXhwIjoxNzUyNTU1Njk4LCJpYXQiOjE3NTI0NjkyOTgsImlzcyI6IkZsYXNoIENhbGxzIEFQSSIsInN1YiI6InJpY2FyZGFzIn0.I3Sy1zrJx0mAsTLthitY8dyZfythsWzJ4V1CVfNJmYU&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Returns ===&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;calls&amp;quot;: {&lt;br /&gt;
     &amp;quot;pagename&amp;quot;: &amp;quot;Calls&amp;quot;,&lt;br /&gt;
     &amp;quot;language&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
     &amp;quot;error_msg&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
     &amp;quot;userid&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;username&amp;quot;: &amp;quot;admin&amp;quot;,&lt;br /&gt;
     &amp;quot;total_calls&amp;quot;: 1,&lt;br /&gt;
     &amp;quot;limit&amp;quot;: 50,&lt;br /&gt;
     &amp;quot;max_limit&amp;quot;: 500,&lt;br /&gt;
     &amp;quot;page&amp;quot;: &amp;quot;1/1&amp;quot;,&lt;br /&gt;
     &amp;quot;currency&amp;quot;: &amp;quot;EUR&amp;quot;,&lt;br /&gt;
     &amp;quot;calls_stat&amp;quot;: {&lt;br /&gt;
       &amp;quot;period&amp;quot;: {&lt;br /&gt;
         &amp;quot;period_start&amp;quot;: &amp;quot;2026-01-16 00:00:00&amp;quot;,&lt;br /&gt;
         &amp;quot;period_end&amp;quot;: &amp;quot;2026-01-16 23:59:59&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;show_user&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_device&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_status&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_provider&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_hgc&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_reseller&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_did&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_destination&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
       &amp;quot;calls&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
           &amp;quot;calldate2&amp;quot;: &amp;quot;2026-01-16 07:18:42&amp;quot;,&lt;br /&gt;
           &amp;quot;timezone&amp;quot;: &amp;quot;GMT +00:00&amp;quot;,&lt;br /&gt;
           &amp;quot;clid&amp;quot;: &amp;quot;\&amp;quot;test\&amp;quot; &amp;lt;101&amp;gt;&amp;quot;,&lt;br /&gt;
           &amp;quot;destination&amp;quot;: &amp;quot;Lithuania - Special Services&amp;quot;,&lt;br /&gt;
           &amp;quot;did&amp;quot;: &amp;quot;37060000001&amp;quot;,&lt;br /&gt;
           &amp;quot;did_inc_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;did_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;did_prov_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;dispod&amp;quot;: &amp;quot;ANSWERED(16)&amp;quot;,&lt;br /&gt;
           &amp;quot;dst&amp;quot;: &amp;quot;37060000001&amp;quot;,&lt;br /&gt;
           &amp;quot;dst_user_id&amp;quot;: 0,&lt;br /&gt;
           &amp;quot;lega_call_id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;legb_call_id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;nice_billsec&amp;quot;: 16,&lt;br /&gt;
           &amp;quot;nice_reseller&amp;quot;: &amp;quot; &amp;quot;,&lt;br /&gt;
           &amp;quot;originator_codec&amp;quot;: &amp;quot;ulaw&amp;quot;,&lt;br /&gt;
           &amp;quot;prefix&amp;quot;: &amp;quot;3706&amp;quot;,&lt;br /&gt;
           &amp;quot;privacy&amp;quot;: 0,&lt;br /&gt;
           &amp;quot;profit&amp;quot;: &amp;quot;0.0000&amp;quot;,&lt;br /&gt;
           &amp;quot;provider_name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;provider_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;provider_rate&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;reseller_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;reseller_rate&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;server_id&amp;quot;: 1,&lt;br /&gt;
           &amp;quot;src&amp;quot;: &amp;quot;123456&amp;quot;,&lt;br /&gt;
           &amp;quot;terminated_by&amp;quot;: &amp;quot;originator&amp;quot;,&lt;br /&gt;
           &amp;quot;terminator_codec&amp;quot;: &amp;quot;ulaw&amp;quot;,&lt;br /&gt;
           &amp;quot;tp_src&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;user&amp;quot;: &amp;quot;Test User #1&amp;quot;,&lt;br /&gt;
           &amp;quot;user_currency&amp;quot;: &amp;quot;EUR&amp;quot;,&lt;br /&gt;
           &amp;quot;user_exchange_rate&amp;quot;: &amp;quot;1.000000000000000&amp;quot;,&lt;br /&gt;
           &amp;quot;user_id&amp;quot;: 2,&lt;br /&gt;
           &amp;quot;user_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;user_rate&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;uniqueid&amp;quot;: &amp;quot;1768547922.0&amp;quot;,&lt;br /&gt;
           &amp;quot;originator_codec_name&amp;quot;: &amp;quot;G.711 u-law&amp;quot;,&lt;br /&gt;
           &amp;quot;terminator_codec_name&amp;quot;: &amp;quot;G.711 u-law&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Additional notes=&lt;br /&gt;
More examples and responses are available in the MOR REST API Documentation, which is available in '''/billing/api/v2/api-docs'''.&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_v2_Calls&amp;diff=30823</id>
		<title>MOR API v2 Calls</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_v2_Calls&amp;diff=30823"/>
		<updated>2026-01-16T11:30:23Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Documentation=&lt;br /&gt;
&lt;br /&gt;
Full MOR REST API Documentation is available in '''/billing/api/v2/api-docs'''.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API retrieves the list of calls in the selected time period for the specified User/Device.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Availability:''' This API is available from '''MOR X19''' onwards.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=API=&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API accepts parameters in JSON format. Responses are also returned in JSON format.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* '''limit'''&lt;br /&gt;
* '''only_did'''&lt;br /&gt;
* '''order_by'''&lt;br /&gt;
* '''order_desc'''&lt;br /&gt;
* '''page'''&lt;br /&gt;
* '''period_end'''&lt;br /&gt;
* '''period_start'''&lt;br /&gt;
* '''s_call_type'''&lt;br /&gt;
* '''s_callback_uniqueid'''&lt;br /&gt;
* '''s_destination'''&lt;br /&gt;
* '''s_device'''&lt;br /&gt;
* '''s_did'''&lt;br /&gt;
* '''s_hgc'''&lt;br /&gt;
* '''s_provider'''&lt;br /&gt;
* '''s_reseller'''&lt;br /&gt;
* '''s_uniqueid'''&lt;br /&gt;
* '''s_user'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Authentication==&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API requires user authentication - basic authentication (username/password) and JWT token authentication.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Basic authentication===&lt;br /&gt;
&lt;br /&gt;
Basic authentication uses the User's username and password to access API endpoints.&lt;br /&gt;
&lt;br /&gt;
Username and password must be provided in HTTP '''Authorization''' header, &amp;quot;username:password&amp;quot; string encoded in Base64. For example:&lt;br /&gt;
&lt;br /&gt;
 POST http://x.x.x.x/billing/api/v2/authentication/login HTTP/1.1&lt;br /&gt;
 Authorization: Basic cmljYXJkYxM6OWtBWFpadT9yak1iayRSaA==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JWT authentication===&lt;br /&gt;
&lt;br /&gt;
JWT authentication uses a token (generated by MOR) with each request to endpoints. The API client must obtain a JWT token by calling the '''/authentication/login''' endpoint and then use this token in other endpoints for authentication until the token expires. The authentication token is valid for 15 minutes. Once the token has expired, a new token must be obtained from '''/authentication/refresh''' endpoint. Therefore, you need to run the refresh method every 15 minutes. The refresh token is valid for 7 days.&lt;br /&gt;
&lt;br /&gt;
JWT token must be provided in HTTP Authorization header when requesting '''calls''' parameters. For example:&lt;br /&gt;
&lt;br /&gt;
 get http://x.x.x.x/billing/api/v2/calls?limit=500&amp;amp;period_end=1768549495&amp;amp;period_start=948008695&lt;br /&gt;
 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhc3NpZ25lZF9kZXZpY2VzIjoiMiw4LDEwLDEyLDE4LDI2LDM2IiwiZXhwIjoxNzUyNTU1Njk4LCJpYXQiOjE3NTI0NjkyOTgsImlzcyI6IkZsYXNoIENhbGxzIEFQSSIsInN1YiI6InJpY2FyZGFzIn0.I3Sy1zrJx0mAsTLthitY8dyZfythsWzJ4V1CVfNJmYU&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Returns ===&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;calls&amp;quot;: {&lt;br /&gt;
     &amp;quot;pagename&amp;quot;: &amp;quot;Calls&amp;quot;,&lt;br /&gt;
     &amp;quot;language&amp;quot;: &amp;quot;en&amp;quot;,&lt;br /&gt;
     &amp;quot;error_msg&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
     &amp;quot;userid&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;username&amp;quot;: &amp;quot;admin&amp;quot;,&lt;br /&gt;
     &amp;quot;total_calls&amp;quot;: 1,&lt;br /&gt;
     &amp;quot;limit&amp;quot;: 50,&lt;br /&gt;
     &amp;quot;max_limit&amp;quot;: 500,&lt;br /&gt;
     &amp;quot;page&amp;quot;: &amp;quot;1/1&amp;quot;,&lt;br /&gt;
     &amp;quot;currency&amp;quot;: &amp;quot;EUR&amp;quot;,&lt;br /&gt;
     &amp;quot;calls_stat&amp;quot;: {&lt;br /&gt;
       &amp;quot;period&amp;quot;: {&lt;br /&gt;
         &amp;quot;period_start&amp;quot;: &amp;quot;2026-01-16 00:00:00&amp;quot;,&lt;br /&gt;
         &amp;quot;period_end&amp;quot;: &amp;quot;2026-01-16 23:59:59&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;show_user&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_device&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_status&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_provider&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_hgc&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_reseller&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_did&amp;quot;: &amp;quot;all&amp;quot;,&lt;br /&gt;
       &amp;quot;show_destination&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
       &amp;quot;calls&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
           &amp;quot;calldate2&amp;quot;: &amp;quot;2026-01-16 07:18:42&amp;quot;,&lt;br /&gt;
           &amp;quot;timezone&amp;quot;: &amp;quot;GMT +00:00&amp;quot;,&lt;br /&gt;
           &amp;quot;clid&amp;quot;: &amp;quot;\&amp;quot;test\&amp;quot; &amp;lt;101&amp;gt;&amp;quot;,&lt;br /&gt;
           &amp;quot;destination&amp;quot;: &amp;quot;Lithuania - Special Services&amp;quot;,&lt;br /&gt;
           &amp;quot;did&amp;quot;: &amp;quot;47065465895&amp;quot;,&lt;br /&gt;
           &amp;quot;did_inc_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;did_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;did_prov_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;dispod&amp;quot;: &amp;quot;ANSWERED(16)&amp;quot;,&lt;br /&gt;
           &amp;quot;dst&amp;quot;: &amp;quot;37060000001&amp;quot;,&lt;br /&gt;
           &amp;quot;dst_user_id&amp;quot;: 0,&lt;br /&gt;
           &amp;quot;lega_call_id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;legb_call_id&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;nice_billsec&amp;quot;: 16,&lt;br /&gt;
           &amp;quot;nice_reseller&amp;quot;: &amp;quot; &amp;quot;,&lt;br /&gt;
           &amp;quot;originator_codec&amp;quot;: &amp;quot;ulaw&amp;quot;,&lt;br /&gt;
           &amp;quot;prefix&amp;quot;: &amp;quot;3706&amp;quot;,&lt;br /&gt;
           &amp;quot;privacy&amp;quot;: 0,&lt;br /&gt;
           &amp;quot;profit&amp;quot;: &amp;quot;0.0000&amp;quot;,&lt;br /&gt;
           &amp;quot;provider_name&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;provider_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;provider_rate&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;reseller_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;reseller_rate&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;server_id&amp;quot;: 1,&lt;br /&gt;
           &amp;quot;src&amp;quot;: &amp;quot;123456&amp;quot;,&lt;br /&gt;
           &amp;quot;terminated_by&amp;quot;: &amp;quot;originator&amp;quot;,&lt;br /&gt;
           &amp;quot;terminator_codec&amp;quot;: &amp;quot;ulaw&amp;quot;,&lt;br /&gt;
           &amp;quot;tp_src&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
           &amp;quot;user&amp;quot;: &amp;quot;Test User #1&amp;quot;,&lt;br /&gt;
           &amp;quot;user_currency&amp;quot;: &amp;quot;EUR&amp;quot;,&lt;br /&gt;
           &amp;quot;user_exchange_rate&amp;quot;: &amp;quot;1.000000000000000&amp;quot;,&lt;br /&gt;
           &amp;quot;user_id&amp;quot;: 2,&lt;br /&gt;
           &amp;quot;user_price&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;user_rate&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
           &amp;quot;uniqueid&amp;quot;: &amp;quot;1768547922.0&amp;quot;,&lt;br /&gt;
           &amp;quot;originator_codec_name&amp;quot;: &amp;quot;G.711 u-law&amp;quot;,&lt;br /&gt;
           &amp;quot;terminator_codec_name&amp;quot;: &amp;quot;G.711 u-law&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Additional notes=&lt;br /&gt;
More examples and responses are available in the MOR REST API Documentation, which is available in '''/billing/api/v2/api-docs'''.&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_v2_Calls&amp;diff=30820</id>
		<title>MOR API v2 Calls</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_v2_Calls&amp;diff=30820"/>
		<updated>2026-01-16T11:21:28Z</updated>

		<summary type="html">&lt;p&gt;Edvardas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Documentation=&lt;br /&gt;
&lt;br /&gt;
Full MOR REST API Documentation is available in '''/billing/api/v2/api-docs'''.&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API retrieves the list of calls in the selected time period for the specified User/Device.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Availability:''' This API is available from '''MOR X19''' onwards.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=API=&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API accepts parameters in JSON format. Responses are also returned in JSON format.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* '''limit'''&lt;br /&gt;
* '''only_did'''&lt;br /&gt;
* '''order_by'''&lt;br /&gt;
* '''order_desc'''&lt;br /&gt;
* '''page'''&lt;br /&gt;
* '''period_end'''&lt;br /&gt;
* '''period_start'''&lt;br /&gt;
* '''s_call_type'''&lt;br /&gt;
* '''s_callback_uniqueid'''&lt;br /&gt;
* '''s_destination'''&lt;br /&gt;
* '''s_device'''&lt;br /&gt;
* '''s_did'''&lt;br /&gt;
* '''s_hgc'''&lt;br /&gt;
* '''s_provider'''&lt;br /&gt;
* '''s_reseller'''&lt;br /&gt;
* '''s_uniqueid'''&lt;br /&gt;
* '''s_user'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Authentication==&lt;br /&gt;
&lt;br /&gt;
The '''Calls''' API requires user authentication - basic authentication (username/password) and JWT token authentication.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Basic authentication===&lt;br /&gt;
&lt;br /&gt;
Basic authentication uses the User's username and password to access API endpoints.&lt;br /&gt;
&lt;br /&gt;
Username and password must be provided in HTTP '''Authorization''' header, &amp;quot;username:password&amp;quot; string encoded in Base64. For example:&lt;br /&gt;
&lt;br /&gt;
 POST http://x.x.x.x/billing/api/v2/authentication/login HTTP/1.1&lt;br /&gt;
 Authorization: Basic cmljYXJkYxM6OWtBWFpadT9yak1iayRSaA==&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JWT authentication===&lt;br /&gt;
&lt;br /&gt;
JWT authentication uses a token (generated by MOR) with each request to endpoints. The API client must obtain a JWT token by calling the '''/authentication/login''' endpoint and then use this token in other endpoints for authentication until the token expires. The authentication token is valid for 15 minutes. Once the token has expired, a new token must be obtained from '''/authentication/refresh''' endpoint. Therefore, you need to run the refresh method every 15 minutes. The refresh token is valid for 7 days.&lt;br /&gt;
&lt;br /&gt;
JWT token must be provided in HTTP Authorization header when requesting '''calls''' parameters. For example:&lt;br /&gt;
&lt;br /&gt;
 get http://x.x.x.x/billing/api/v2/calls?limit=500&amp;amp;period_end=1768549495&amp;amp;period_start=948008695&lt;br /&gt;
 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhc3NpZ25lZF9kZXZpY2VzIjoiMiw4LDEwLDEyLDE4LDI2LDM2IiwiZXhwIjoxNzUyNTU1Njk4LCJpYXQiOjE3NTI0NjkyOTgsImlzcyI6IkZsYXNoIENhbGxzIEFQSSIsInN1YiI6InJpY2FyZGFzIn0.I3Sy1zrJx0mAsTLthitY8dyZfythsWzJ4V1CVfNJmYU&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Edvardas</name></author>
	</entry>
</feed>