<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.7kas.com/index.php?action=history&amp;feed=atom&amp;title=OperatorAPI</id>
	<title>OperatorAPI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.7kas.com/index.php?action=history&amp;feed=atom&amp;title=OperatorAPI"/>
	<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=OperatorAPI&amp;action=history"/>
	<updated>2026-09-06T23:15:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.7kas.com/index.php?title=OperatorAPI&amp;diff=938&amp;oldid=prev</id>
		<title>Maintenance script: Operator API reference (generated from func=help)</title>
		<link rel="alternate" type="text/html" href="https://wiki.7kas.com/index.php?title=OperatorAPI&amp;diff=938&amp;oldid=prev"/>
		<updated>2026-08-19T08:16:07Z</updated>

		<summary type="html">&lt;p&gt;Operator API reference (generated from func=help)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Note|1=New here? Start with &amp;#039;&amp;#039;&amp;#039;[[OperatorAPI help|the self-discovery endpoint]]&amp;#039;&amp;#039;&amp;#039;. This whole reference is generated from the service&amp;#039;s own &amp;lt;code&amp;gt;func=help&amp;lt;/code&amp;gt;, so it never drifts from the code.}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Operator API&amp;#039;&amp;#039;&amp;#039; (newadmapi / Helm) is the REST API a brand operator uses to manage its services. &amp;#039;&amp;#039;&amp;#039;HTTPS, GET or POST, JSON.&amp;#039;&amp;#039;&amp;#039; One route, one dispatch parameter:&lt;br /&gt;
 https://YOUR_HOST:9089/newadm?func=NAME&amp;amp;...&lt;br /&gt;
&lt;br /&gt;
== Authentication ==&lt;br /&gt;
Every request carries your &amp;#039;&amp;#039;&amp;#039;API key&amp;#039;&amp;#039;&amp;#039; - as &amp;lt;code&amp;gt;X-API-Key: YOUR_KEY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Authorization: Bearer YOUR_KEY&amp;lt;/code&amp;gt;, or the &amp;lt;code&amp;gt;ukey&amp;lt;/code&amp;gt; query parameter. The key identifies the operator and its tenant (root); the service NEVER trusts a tenant supplied in the request body. Write paths always stamp the caller&amp;#039;s own root.&lt;br /&gt;
&lt;br /&gt;
== Response envelope ==&lt;br /&gt;
Every answer is a JSON envelope. Success: &amp;lt;code&amp;gt;{&amp;quot;ok&amp;quot;:true,&amp;quot;data&amp;quot;:{...}}&amp;lt;/code&amp;gt; (an empty result set is still &amp;lt;code&amp;gt;ok:true&amp;lt;/code&amp;gt;). Refusal: &amp;lt;code&amp;gt;{&amp;quot;ok&amp;quot;:false,&amp;quot;code&amp;quot;:&amp;quot;...&amp;quot;,&amp;quot;message&amp;quot;:&amp;quot;...&amp;quot;}&amp;lt;/code&amp;gt;. &amp;#039;&amp;#039;&amp;#039;Branch on &amp;lt;code&amp;gt;code&amp;lt;/code&amp;gt;, never on the message text&amp;#039;&amp;#039;&amp;#039; - the message is human-facing and may change; the code is the contract.&lt;br /&gt;
&lt;br /&gt;
== Error codes ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auth_missing&amp;lt;/code&amp;gt; || no API key was sent&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auth_invalid&amp;lt;/code&amp;gt; || the key is not valid&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;auth_busy&amp;lt;/code&amp;gt; || the key&amp;#039;s concurrency limit is reached - retry later&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;forbidden&amp;lt;/code&amp;gt; || the key&amp;#039;s role may not do this&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;readonly&amp;lt;/code&amp;gt; || this key may only read&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;unknown_func&amp;lt;/code&amp;gt; || no such function&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;invalid_param&amp;lt;/code&amp;gt; || a value is out of range or the wrong type (named)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;unknown_param&amp;lt;/code&amp;gt; || a field that is not part of this section/function&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;count_mismatch&amp;lt;/code&amp;gt; || a bulk delete&amp;#039;s stated count did not match the set&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;server_busy&amp;lt;/code&amp;gt; || the pool is momentarily exhausted - retry later&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;server_error&amp;lt;/code&amp;gt; || a server-side fault; retrying the same request will not help&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How the sections work ==&lt;br /&gt;
Most data lives in &amp;#039;&amp;#039;&amp;#039;sections&amp;#039;&amp;#039;&amp;#039; (bonos, cli, tucloudpbx, didstock, ...). Two discovery calls, then the generic verbs:&lt;br /&gt;
* [[OperatorAPI sections]] - which sections you can see, and what you may do in each.&lt;br /&gt;
* [[OperatorAPI options]] - one section&amp;#039;s published fields, pickers, search, export and what a delete would cascade to.&lt;br /&gt;
* then [[OperatorAPI list]] / [[OperatorAPI get]] / [[OperatorAPI insert]] / [[OperatorAPI update]] / [[OperatorAPI delete]] / [[OperatorAPI export]] / [[OperatorAPI lookup]] operate over any section via &amp;lt;code&amp;gt;section=&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== Discovery &amp;amp; meta ===&lt;br /&gt;
* [[OperatorAPI help]] &amp;amp;mdash; Lists the API functions this key&amp;#039;s role may call, with parameters, an example and the response shape.&lt;br /&gt;
=== Generic verbs (over any section) ===&lt;br /&gt;
* [[OperatorAPI delete]] &amp;amp;mdash; Removes one row, addressed by id, within your tenant.&lt;br /&gt;
* [[OperatorAPI export]] &amp;amp;mdash; The SAME query as list, rendered as a delimited file.&lt;br /&gt;
* [[OperatorAPI get]] &amp;amp;mdash; One row of a section, by id, tenant-scoped and projected through the SAME declared field list as list - so an edit form can never receive a column the grid would not show.&lt;br /&gt;
* [[OperatorAPI insert]] &amp;amp;mdash; Creates a row in a section.&lt;br /&gt;
* [[OperatorAPI list]] &amp;amp;mdash; Lists any served section.&lt;br /&gt;
* [[OperatorAPI lookup]] &amp;amp;mdash; One writable field&amp;#039;s picker, served for a GIVEN root instead of baked into the func=options contract for your own.&lt;br /&gt;
* [[OperatorAPI options]] &amp;amp;mdash; What a SECTION offers, and what THIS caller may do with it: the readable fields with their types and whether each is sortable or searchable, the writable fields with required/immutable, the group writes demand, the export choices, and what a delete would cascade to.&lt;br /&gt;
* [[OperatorAPI sections]] &amp;amp;mdash; Every section this service serves, with what each offers and what THIS caller may do with it.&lt;br /&gt;
* [[OperatorAPI update]] &amp;amp;mdash; Changes declared fields of one row, addressed by id.&lt;br /&gt;
=== Login &amp;amp; session ===&lt;br /&gt;
* [[OperatorAPI login]] &amp;amp;mdash; Exchanges an operator ukey for a short, revocable session.&lt;br /&gt;
* [[OperatorAPI poll]] &amp;amp;mdash; Polls a login started with func=request.&lt;br /&gt;
* [[OperatorAPI request]] &amp;amp;mdash; Starts an operator login.&lt;br /&gt;
* [[OperatorAPI session:menu]] &amp;amp;mdash; The menu this operator may see, NESTED as the legacy renders it: the rows of web_menus for their root, filtered by their groups, built into containers and leaves.&lt;br /&gt;
=== PBX / TuCloud ===&lt;br /&gt;
* [[OperatorAPI aindirecto:list]] &amp;amp;mdash; Lists indirect-access / preassignment records.&lt;br /&gt;
* [[OperatorAPI cli:list]] &amp;amp;mdash; Lists the inbound numbers of the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI click2call:list]] &amp;amp;mdash; Lists the click-to-call entries of the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI click2callinmovilla:list]] &amp;amp;mdash; Lists the Inmovilla click-to-call agency links.&lt;br /&gt;
* [[OperatorAPI didhist:list]] &amp;amp;mdash; Numbering history - when each DID was opened and closed.&lt;br /&gt;
* [[OperatorAPI didstock:list]] &amp;amp;mdash; Lists the numbering STOCK.&lt;br /&gt;
* [[OperatorAPI end:list]] &amp;amp;mdash; Lists customer endpoints.&lt;br /&gt;
* [[OperatorAPI extensions:list]] &amp;amp;mdash; Lists the DIALPLAN - voip_extensions_conf, the rows that make a number ring.&lt;br /&gt;
* [[OperatorAPI incomingcalls:list]] &amp;amp;mdash; Lists inbound call history.&lt;br /&gt;
* [[OperatorAPI llamadasac:list]] &amp;amp;mdash; Lists ALL calls in progress, from view_voip_calls_active - a DIFFERENT view and a DIFFERENT TENANT COLUMN (r_root, not root), both verified against information_schema.&lt;br /&gt;
* [[OperatorAPI llamadasacentrantes:list]] &amp;amp;mdash; Lists inbound calls IN PROGRESS - the same view as incomingcalls with the same flags bit SET rather than clear (&amp;quot;flags &amp;amp; 8 = 8&amp;quot;).&lt;br /&gt;
* [[OperatorAPI pas:list]] &amp;amp;mdash; Lists the bridge/callback gateway entries of the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI pbx:list]] &amp;amp;mdash; Lists virtual PBXs (centralitas).&lt;br /&gt;
* [[OperatorAPI pbxext:list]] &amp;amp;mdash; Lists REAL PBX extensions - wcl_clientes_ext narrowed by the legacy&amp;#039;s own two unconditional restrictions: virt = 0, and context &amp;lt;&amp;gt; the CALLER&amp;#039;S OWN dialplan context.&lt;br /&gt;
* [[OperatorAPI pbxfax:list]] &amp;amp;mdash; Lists the fax-to-email extensions of the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI pbxsal:list]] &amp;amp;mdash; Conference rooms.&lt;br /&gt;
* [[OperatorAPI pbxvirext:list]] &amp;amp;mdash; Lists VIRTUAL extensions - wcl_clientes_ext narrowed by the legacy&amp;#039;s own unconditional restriction virt = 1, carried in Extra.&lt;br /&gt;
* [[OperatorAPI porta:list]] &amp;amp;mdash; Number portability requests.&lt;br /&gt;
* [[OperatorAPI tucdevices:list]] &amp;amp;mdash; Lists the TuCloud devices of the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI tucfiles:list]] &amp;amp;mdash; Lists device configuration files.&lt;br /&gt;
* [[OperatorAPI tucloudpbx:list]] &amp;amp;mdash; Lists the TuCloud cloud PBXs.&lt;br /&gt;
* [[OperatorAPI tucloudpbxcli:list]] &amp;amp;mdash; Lists the numbers attached to each cloud PBX.&lt;br /&gt;
* [[OperatorAPI tucloudpbxen:list]] &amp;amp;mdash; Lists the cloud PBXs.&lt;br /&gt;
* [[OperatorAPI voicemail:list]] &amp;amp;mdash; Customer voicemail boxes.&lt;br /&gt;
* [[OperatorAPI vtun:list]] &amp;amp;mdash; Lists customer VPN tunnels.&lt;br /&gt;
=== Platform ===&lt;br /&gt;
* [[OperatorAPI opap:list]] &amp;amp;mdash; Which groups reach each application - the access-control data itself.&lt;br /&gt;
* [[OperatorAPI opme:list]] &amp;amp;mdash; Which groups reach each menu option.&lt;br /&gt;
* [[OperatorAPI opus:list]] &amp;amp;mdash; Lists the ADMIN ACCOUNTS of the adm application - wad_admins, the table every caller authenticates against.&lt;br /&gt;
* [[OperatorAPI ssipdevices:list]] &amp;amp;mdash; Lists the SecureSIP devices.&lt;br /&gt;
=== Rates ===&lt;br /&gt;
* [[OperatorAPI destinos:list]] &amp;amp;mdash; Lists the shared dialling-plan destinations.&lt;br /&gt;
* [[OperatorAPI pro:list]] &amp;amp;mdash; Lists the upstream carriers.&lt;br /&gt;
* [[OperatorAPI protar:list]] &amp;amp;mdash; Lists the DRAFT provider rates - the staging copy edited before promotion.&lt;br /&gt;
* [[OperatorAPI protarde:list]] &amp;amp;mdash; Lists the LIVE provider rates - the promoted copy the platform buys at.&lt;br /&gt;
* [[OperatorAPI usertardraft:list]] &amp;amp;mdash; Lists STAGED customer sale rates - the drafts sys_update_all_rates makes live once entrance &amp;lt;= now.&lt;br /&gt;
* [[OperatorAPI usertaresp:list]] &amp;amp;mdash; Lists the special-price IMPORT STAGING rows.&lt;br /&gt;
=== Tariffs ===&lt;br /&gt;
* [[OperatorAPI usertar:list]] &amp;amp;mdash; Lists the customer tariffs of the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI usertarde:list]] &amp;amp;mdash; Lists LIVE customer sale rates (the draft&amp;#039;s twin, over view_voip_rates).&lt;br /&gt;
=== Billing ===&lt;br /&gt;
* [[OperatorAPI bbonos:list]] &amp;amp;mdash; Call consumption for customers holding bundles.&lt;br /&gt;
* [[OperatorAPI billing:list]] &amp;amp;mdash; Lists BILLED CALL HISTORY.&lt;br /&gt;
* [[OperatorAPI billingbyday:list]] &amp;amp;mdash; Daily consumption per customer, for the OPERATOR audience: the _r view, scoped by r_root.&lt;br /&gt;
* [[OperatorAPI billingbymonth:list]] &amp;amp;mdash; Monthly consumption per customer, operator audience.&lt;br /&gt;
* [[OperatorAPI billingday:list]] &amp;amp;mdash; The same grid and the same decoded mask as billing, over view_voip_calls instead of view_voip_calls_hist - today&amp;#039;s calls rather than the archive.&lt;br /&gt;
* [[OperatorAPI recman:list]] &amp;amp;mdash; Lists manual credit entries (prepaid top-ups).&lt;br /&gt;
=== Bundles (bonos) ===&lt;br /&gt;
* [[OperatorAPI bonos:list]] &amp;amp;mdash; Lists the VoIP minute bundles of the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI bonoscounter:list]] &amp;amp;mdash; Lists per-period bundle consumption counters.&lt;br /&gt;
* [[OperatorAPI bonosdst:list]] &amp;amp;mdash; Lists the destination prefixes belonging to a VoIP bundle, for the caller&amp;#039;s tenant.&lt;br /&gt;
* [[OperatorAPI bonosusers:list]] &amp;amp;mdash; Lists which customer extensions hold which bundle.&lt;br /&gt;
=== SIP ===&lt;br /&gt;
* [[OperatorAPI sip:list]] &amp;amp;mdash; Lists the SIP configurations of the caller&amp;#039;s tenant.&lt;br /&gt;
=== Payments ===&lt;br /&gt;
* [[OperatorAPI recargas:list]] &amp;amp;mdash; Lists TPV recharges - every payment of the tenant, unfiltered, which is the legacy&amp;#039;s own lock.&lt;br /&gt;
=== Customers ===&lt;br /&gt;
* [[OperatorAPI user:list]] &amp;amp;mdash; Lists the customers of the caller&amp;#039;s tenant.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Generated from &amp;lt;code&amp;gt;func=help&amp;lt;/code&amp;gt; as the operator role. Regenerate after any change to the service&amp;#039;s registered functions.&amp;#039;&amp;#039;&lt;br /&gt;
[[Category:OperatorAPI]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>