Music On Hold

The Music On Hold object is supported by the MiRTA PBX OpenAPI endpoint. This object is normally tenant-scoped. With a global API key, use global=1 to manage the shared/global record set. Tenant writes still require tenant=CANISTRACCI.

Object Summary

PropertyValue
Objectmusiconhold
Primary path/musiconholds
ID fieldmu_id
Label fieldmu_name
Primary source tablemu_musiconholds
Required on createmu_name
Path aliases/moh, /music, /musiconholds, /music_on_hold, /music_on_holds

Endpoint Patterns

ActionExample pattern
ListGET https://pbx.example.com/pbx/openapi.php/musiconholds?tenant=CANISTRACCI
Get by IDGET https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI
CreatePOST https://pbx.example.com/pbx/openapi.php/musiconholds?tenant=CANISTRACCI
UpdatePATCH https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI
DeleteDELETE https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI

Accepted Field Aliases

Request fieldSource field
namemu_name
custommu_custom
volumemu_volume
randomizeordermu_randomizeorder
streamenginemu_streamengine
formatformat
applicationapplication
modemode

Destination Fields

Destination fields accept one destination string or an array of destination strings such as EXT-100, VOICEMAIL-100, or another supported destination type and ID pair.

Destination typeAccepted aliases
MUSICONHOLDmediafile, mediafiles, destination

Examples

List Music On Hold Classes

Returns the music on hold classes visible to the key and scope.

curl -H "X-API-Key: TENANT_API_KEY" \
  "https://pbx.example.com/pbx/openapi.php/musiconholds?tenant=CANISTRACCI"

Get Music On Hold

Reads one object by its internal ID.

curl -H "X-API-Key: TENANT_API_KEY" \
  "https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI"

Create Music On Hold

Creates a new object. Use the short aliases shown above or the source field names.

curl -X POST \
  -H "X-API-Key: TENANT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Docs API Music On Hold",
  "custom": "yes",
  "volume": 0,
  "mode": "playlist",
  "format": "slin"
}' \
  "https://pbx.example.com/pbx/openapi.php/musiconholds?tenant=CANISTRACCI"

Edit Music On Hold

Updates only the supplied fields.

curl -X PATCH \
  -H "X-API-Key: TENANT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "volume": -3
}' \
  "https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI"

Delete Music On Hold

Deletes the object. Check references before deleting configuration used by routing or reporting.

curl -X DELETE \
  -H "X-API-Key: TENANT_API_KEY" \
  "https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI"

List Global Music On Hold Classes

Uses the shared/global record set for object types that support global rows.

curl -H "X-API-Key: GLOBAL_API_KEY" \
  "https://pbx.example.com/pbx/openapi.php/musiconholds?global=1"

Music On Hold Destination

Updates the MUSICONHOLD destination. The same value can also be sent inside a destinations object.

curl -X PATCH \
  -H "X-API-Key: TENANT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mediafile": [
    22
  ]
}' \
  "https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI"

Music On Hold Entries and Default

Replaces music-on-hold entries and marks the class as the default class for the scope.

curl -X PATCH \
  -H "X-API-Key: TENANT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "entries": [
    {
      "me_id": 22,
      "order": 1
    },
    {
      "me_id": 23,
      "order": 2
    }
  ],
  "default": true
}' \
  "https://pbx.example.com/pbx/openapi.php/musiconholds/OBJECT_ID?tenant=CANISTRACCI"

Common Errors

ErrorMeaning
missing_api_keyNo API key was supplied in the query string, X-API-Key, or bearer token.
invalid_api_keyThe supplied key does not match the tenant or global API key.
tenant_requiredA tenant code is required for tenant-scoped writes or tenant-key reads.
read_only_api_keyThe key can read data but cannot create, update, or delete objects.
missing_required_fieldA required create field is missing.

Revision #18
Created 2026-06-06 07:32:17 UTC by Admin
Updated 2026-07-03 15:49:10 UTC by Admin