Package: tinyCUCM
tinyCUCMCisco Unified Call Manager AXL Methods Collection.Table of ContentsAbout The ProjectInstallationUsageInstance CreateAXL CollectionAdd MethodsDo MethodsGet MethodsRemove MethodsReset MethodsRestart MethodsRIS MethodsUpdate MethodsSQL CollectionExecute QueryUpdate QueryPredefined QueriesCreate Your Own MethodsLicenseContactAbout The ProjectThis project is for informational purposes only and is intended to study the capabilities of the Cisco Unified Call Manager's API.
Methods have been tested on CUCM ver. 11.5.Cisco UCM AXL Schemas & SQL Data Dictionaries Documentation(back to top)InstallationInstallation is as simple as:pipinstalltinyCUCM(back to top)UsageCisco UCM WSDL Services:WSDL FilePathSOAPMonitorServicehttps://x.x.x.x:8443/realtimeservice/services/SOAPMonitorService?wsdlRisPorthttps://x.x.x.x:8443/realtimeservice/services/RisPort?wsdlRisPort70https://x.x.x.x:8443/realtimeservice/services/RisPort70?wsdlRisService70https://x.x.x.x:8443/realtimeservice2/services/RISService70?wsdlPerfmonPorthttps://x.x.x.x:8443/perfmonservice/services/PerfmonPort?wsdlControlCenterServiceshttps://x.x.x.x:8443/controlcenterservice/services/ControlCenterServicesPort?wsdlLogCollectionServicehttps://x.x.x.x:8443/logcollectionservice/services/LogCollectionPort?wsdlCDRonDemandhttps://x.x.x.x:8443/CDRonDemandService/services/CDRonDemand?wsdlDimeGetFilehttps://x.x.x.x:8443/logcollectionservice/services/DimeGetFileService?wsdlDownloadCisco AXL Toolkitfrom the station (Application->Plugins) and put it into the folder with your project.CopyRISService70and createRISService70.xmlfile, put file it intoaxlsqltoolkitfolder.Create an Cisco UCM application account or local end user withStandard CCM Super Usersprivileges
(Assign access control group toYour-CUCM-Account).Instance CreateCreate a new instance of theCucmAxlClientclass and assigns this object to the local variablecucm.Don't store sensitive information in source code. For example use ".env" file.Code Example:frompathlibimportPathfromtinyCUCMimportCucmAxlClientBASE_DIR=Path(__file__).resolve().parentsettings={"pub_fqdn":"cucm.example.com","pub_version":"11.5","user_login":"Your-CUCM-Account","user_password":"You%wILL#&neVeR!gUEss","toolkit_path":BASE_DIR/"axlsqltoolkit","cert_path":BASE_DIR/"cucm.crt","session_verify":False,"session_timeout":15,"ris_wsdl_filename":"wsdlRISService70_test.xml",}if__name__=="__main__":cucm=CucmAxlClient(**settings)# Get All AXL Method Namesprint("Result:",cucm.axlAllMethods())# Result: (#     'addAarGroup',#     'addAdvertisedPatterns',#     'addAnnouncement',#     'addAppServerInfo',#     'addAppUser',#     ...,#     'updateWifiHotspot',#     'updateWirelessAccessPointControllers',#     'updateWlanProfileGroup',#     'wipePhone'# )(back to top)AXL CollectionAdd MethodsaxlAddCallPickupGroupkeywords argsrequired:callPickupGroupnamepatternexpected:descriptionroutePartitionNamememberspickupNotificationpickupNotificationTimercallInfoForPickupNotificationaxlAddDeviceProfilekeywords argsrequired:deviceProfilenameproductclassprotocolprotocolSidephoneTemplateNameexpected:namedescriptionuserHoldMohAudioSourceIdvendorConfigtraceFlagmlppDomainIdmlppIndicationStatuspreemptionlinesline- collection of:required:indexdirnpatternroutePartitionNameexpected:labeldisplayringSettingconsecutiveRingSettingringSettingIdlePickupAlertringSettingActivePickupAlertdisplayAsciie164MaskmwlPolicymaxNumCallsbusyTriggercallInfoDisplayrecordingProfileNamemonitoringCssNamerecordingFlagaudibleMwispeedDialpartitionUsageassociatedEndusersmissedCallLoggingrecordingMediaSourcespeeddialsbusyLampFieldsblfDirectedCallParksaddOnModulesuserLocalesingleButtonBargejoinAcrossLinesloginUserIdignorePresentationIndicatorsdndOptiondndRingSettingdndStatusemccCallingSearchSpacealwaysUsePrimeLinealwaysUsePrimeLineForVoiceMessagesoftkeyTemplateNamecallInfoPrivacyStatusservicesfeatureControlPolicyaxlAddLinekeywords argsrequired:linepatternusageexpected:descriptionroutePartitionNameaarNeighborhoodNameaarDestinationMaskaarKeepCallHistoryaarVoiceMailEnabledcallForwardAllcallForwardBusycallForwardBusyIntcallForwardNoAnswercallForwardNoAnswerIntcallForwardNoCoveragecallForwardNoCoverageIntcallForwardOnFailurecallForwardAlternatePartycallForwardNotRegisteredcallForwardNotRegisteredIntcallPickupGroupNameautoAnswernetworkHoldMohAudioSourceIduserHoldMohAudioSourceIdalertingNameasciiAlertingNamepresenceGroupNameshareLineAppearanceCssNamevoiceMailProfileNamepatternPrecedencereleaseClausehrDurationhrIntervalcfaCssPolicydefaultActivatedDeviceNameparkMonForwardNoRetrieveDnparkMonForwardNoRetrieveIntDnparkMonForwardNoRetrieveVmEnabledparkMonForwardNoRetrieveIntVmEnabledparkMonForwardNoRetrieveCssNameparkMonForwardNoRetrieveIntCssNameparkMonReversionTimerpartyEntranceTonedirectoryURIsallowCtiControlFlagrejectAnonymousCallpatternUrgencyconfidentialAccessexternalCallControlProfileenterpriseAltNume164AltNumpstnFailovercallControlAgentProfileuseEnterpriseAltNumuseE164AltNumactiveaxlAddLineGroupkeywords argsrequired:lineGroupnamedistributionAlgorithmrnaReversionTimeOuthuntAlgorithmNoAnswerhuntAlgorithmBusyhuntAlgorithmNotAvailableexpected:membersautoLogOffHuntaxlAddPhonekeywords argsrequired:phonenameproductclassprotocolprotocolSidedevicePoolNamecommonPhoneConfigNamelocationNameuseTrustedRelayPointphoneTemplateNameprimaryPhoneNamebuiltInBridgeStatuspacketCaptureModecertificateOperationdeviceMobilityModeexpected:descriptioncallingSearchSpaceNamecommonDeviceConfigNamenetworkLocationmediaResourceListNamenetworkHoldMohAudioSourceIduserHoldMohAudioSourceIdautomatedAlternateRoutingCssNameaarNeighborhoodNameloadInformationvendorConfigversionStamptraceFlagmlppDomainIdmlppIndicationStatuspreemptionretryVideoCallAsAudiosecurityProfileNamesipProfileNamecgpnTransformationCssNameuseDevicePoolCgpnTransformCssgeoLocationNamegeoLocationFilterNamesendGeoLocationlinesline- collection of:required:indexdirnpatternroutePartitionNameexpected:labeldisplayringSettingconsecutiveRingSettingringSettingIdlePickupAlertringSettingActivePickupAlertdisplayAsciie164MaskmwlPolicymaxNumCallsbusyTriggercallInfoDisplayrecordingProfileNamemonitoringCssNamerecordingFlagaudibleMwispeedDialpartitionUsageassociatedEndusersmissedCallLoggingrecordingMediaSourcespeeddialsbusyLampFieldsringSettingIdleBlfAudibleAlertringSettingBusyBlfAudibleAlertblfDirectedCallParksaddOnModulesuserLocalenetworkLocaleidleTimeoutauthenticationUrldirectoryUrlidleUrlinformationUrlmessagesUrlproxyServerUrlservicesUrlservicessoftkeyTemplateNamedefaultProfileNameenableExtensionMobilitysingleButtonBargejoinAcrossLinescallInfoPrivacyStatushlogStatusownerUserNameignorePresentationIndicatorspacketCaptureDurationsubscribeCallingSearchSpaceNamererouteCallingSearchSpaceNameallowCtiControlFlagpresenceGroupNameunattendedPortrequireDtmfReceptionrfc2833DisabledauthenticationModekeySizekeyOrderecKeySizeauthenticationStringupgradeFinishTimeremoteDevicedndOptiondndRingSettingdndStatusisActiveisDualModemobilityUserIdNamephoneSuitephoneServiceDisplayisProtectedmtpRequiredmtpPreferedCodecdialRulesNamesshUserIdsshPwddigestUseroutboundCallRolloverhotlineDevicesecureInformationUrlsecureDirectoryUrlsecureMessageUrlsecureServicesUrlsecureAuthenticationUrlsecureIdleUrlalwaysUsePrimeLinealwaysUsePrimeLineForVoiceMessagefeatureControlPolicydeviceTrustModeearlyOfferSupportForVoiceCallrequireThirdPartyRegistrationblockIncomingCallsWhenRoaminghomeNetworkIdAllowPresentationSharingUsingBfcpconfidentialAccessrequireOffPremiseLocationallowiXApplicableMediacgpnIngressDNuseDevicePoolCgpnIngressDNmsisdnenableCallRoutingToRdWhenNoneIsActivewifiHotspotProfilewirelessLanProfileGroupelinGroupaxlAddeRemoteDestinationkeywords argsrequired:remoteDestinationdestinationanswerTooSoonTimeranswerTooLateTimerdelayBeforeRingingCellownerUserIdremoteDestinationProfileNameexpected:nameenableUnifiedMobilityenableExtendAndConnectctiRemoteDeviceNamedualModeDeviceNameisMobilePhoneenableMobileConnectlineAssociationstimeZonetodAccessNamemobileSmartClientNamemobilityProfileNamesingleNumberReachVoicemaildialViaOfficeReverseVoicemailringScheduleaccessListNameaxlAddRemoteDestinationProfilekeywords argsrequired:remoteDestinationProfilenameproductclassprotocolprotocolSidedevicePoolNamecallInfoPrivacyStatususerIdexpected:descriptioncallingSearchSpaceNamenetworkHoldMohAudioSourceIduserHoldMohAudioSourceIdlinesline- collection of:required:indexdirnpatternroutePartitionNameexpected:labeldisplayringSettingconsecutiveRingSettingringSettingIdlePickupAlertringSettingActivePickupAlertdisplayAsciie164MaskmwlPolicymaxNumCallsbusyTriggercallInfoDisplayrecordingProfileNamemonitoringCssNamerecordingFlagaudibleMwispeedDialpartitionUsageassociatedEndusersmissedCallLoggingrecordingMediaSourceignorePresentationIndicatorsrerouteCallingSearchSpaceNamecgpnTransformationCssNameautomatedAlternateRoutingCssNameuseDevicePoolCgpnTransformCssuserLocalenetworkLocaleprimaryPhoneNamedndOptiondndStatusmobileSmartClientProfileNameaxlAddTranslationPatternkeywords argsrequired:transPatternpatternroutePartitionNameusageexpected:descriptionblockEnablecalledPartyTransformationMaskcallingPartyTransformationMaskuseCallingPartyPhoneMaskcallingPartyPrefixDigitsdialPlanNamedigitDiscardInstructionNamepatternUrgencyprefixDigitsOutrouteFilterNamecallingLinePresentationBitcallingNamePresentationBitconnectedLinePresentationBitconnectedNamePresentationBitpatternPrecedenceprovideOutsideDialtonecallingPartyNumberingPlancallingPartyNumberTypecalledPartyNumberingPlancalledPartyNumberTypecallingSearchSpaceNameresourcePriorityNamespaceNamerouteNextHopByCgpnrouteClasscallInterceptProfileNamereleaseClauseuseOriginatorCssdontWaitForIDTOnSubsequentHopsisEmergencyServiceNumberaxlAddUserkeywords argsrequired:useruseridlastNamepresenceGroupNameexpected:firstNamedisplayNamemiddleNamepasswordpinmailiddepartmentmanageruserLocaleassociatedDevicesprimaryExtensionassociatedPcassociatedGroupsenableCtidigestCredentialsphoneProfilesdefaultProfilesubscribeCallingSearchSpaceNameenableMobilityenableMobileVoiceAccessmaxDeskPickupWaitTimeremoteDestinationLimitpasswordCredentialspinCredentialsenableEmccctiControlledDeviceProfilespatternPrecedencenumericUserIdmlppPasswordcustomUserFieldshomeClusterimAndPresenceEnableserviceProfilelineAppearanceAssociationForPresencesdirectoryUritelephoneNumbertitlemobileNumberhomeNumberpagerNumberextensionsInfoselfServiceuserProfilecalendarPresenceldapDirectoryNameuserIdentitynameDialingipccExtensionconvertUserAccountaccountTypeauthenticationTypeenableUserToHostConferenceNowattendeesAccessCodezeroHopCode Example:cucm=...print("Result:",cucm.axlAddCallPickupGroup(**{"callPickupGroup":{"name":"...","pattern":"..."}}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}print("Result:",cucm.axlAddLine(**{"line":{"pattern":"...","usage":"Device"}}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}print("Result:",cucm.axlAddLineGroup(**{"lineGroup":{"name":"...","distributionAlgorithm":"Broadcast","rnaReversionTimeOut":10,"huntAlgorithmNoAnswer":"Try next member; then, try next group in Hunt List","huntAlgorithmBusy":"Try next member; then, try next group in Hunt List","huntAlgorithmNotAvailable":"Try next member; then, try next group in Hunt List",}}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}print("Result:",cucm.axlAddPhone(**{"phone":{"name":"...","product":"Cisco 7821","class":"Phone","protocol":"SIP","protocolSide":"User","devicePoolName":"Default","commonPhoneConfigName":"Standard Common Phone Profile","locationName":"Hub_None","useTrustedRelayPoint":"Default","phoneTemplateName":"Standard 7821 SIP","primaryPhoneName":None,"builtInBridgeStatus":"Default","packetCaptureMode":"None","certificateOperation":"No Pending Operation","deviceMobilityMode":"Default"}}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}print("Result:",cucm.axlAddRemoteDestination(**{"remoteDestination":{"destination":"...","answerTooSoonTimer":1500,"answerTooLateTimer":19000,"delayBeforeRingingCell":4000,"ownerUserId":"...","remoteDestinationProfileName":"..."}}))# Result: <Response [200]>print("Result:",cucm.axlAddRemoteDestinationProfile(**{"remoteDestinationProfile":{"name":"...","product":"Remote Destination Profile","class":"Remote Destination Profile","protocol":"Remote Destination","protocolSide":"User","devicePoolName":"...","callInfoPrivacyStatus":"Default","userId":"..."}}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}# Pattern without `routePartitionName`print("Result:",cucm.axlAddTranslationPattern(**{"transPattern":{"pattern":"...","routePartitionName":"","usage":"Translation"}}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}print("Result:",cucm.axlAddUser(**{"user":{"userid":"...","lastName":"...","presenceGroupName":"Standard Presence group"}}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}(back to top)Do MethodsaxlDoAuthenticateUserkeywords argsrequired:useridpasswordorpinaxlDoDeviceLoginkeywords argsrequired:deviceNameloginDuration"0"- Logout disabled"36000"- Logout after 10h (or any other positive value in milliseconds)profileNameuserIdaxlDoDeviceLogoutkeywords argsrequired:deviceNameaxlDoLdapSynckeywords argsrequired:uuidornamesyncTrue- Start SynchronizationFalse- Cancel the Synchronization which is currently under processCode Example:cucm=...print("Result:",cucm.axlDoAuthenticateUser(userid="...",pin="..."))print("Result:",cucm.axlDoAuthenticateUser(**{"userid":"...","password":"..."}))# Result: {'return': {'userAuthenticated': 'true', 'code': 0, 'daysToExpiry': 0, 'isWarningNeeded': 'false'}, 'sequence': None}# Result: {'return': {'userAuthenticated': 'false', 'code': 1, 'daysToExpiry': 0, 'isWarningNeeded': 'false'}, 'sequence': None}print("Result:",cucm.axlDoDeviceLogin(**{"deviceName":"SEP...","loginDuration":"...","profileName":"...","userid":"..."}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}print("Result:",cucm.axlDoDeviceLogout(**{"deviceName":"SEP..."}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}print("Result:",cucm.axlDoLdapSync(**{"uuid":"........-....-....-....-............","sync":True}))# Result: {'return': 'Sync initiated successfully', 'sequence': None}(back to top)Get MethodsaxlGetCallPickupGroupkeywords argsrequired:uuidornameorpatternor (pattern,routePartitionName)axlGetDeviceProfilekeywords argsrequired:uuidornameaxlGetLinekeywords argsrequired:uuidorpatternor (pattern,routePartitionName)axlGetLineGroupkeywords argsrequired:uuidornameaxlGetPhonekeywords argsrequired:uuidornameaxlGetRemoteDestinationkeywords argsrequired:uuidordestinationaxlGetRemoteDestinationProfilekeywords argsrequired:uuidornameaxlGetTranslationPatternkeywords argsrequired:uuidorpatternor (pattern,routePartitionName)axlGetUserkeywords argsrequired:uuidoruseridCode Example:cucm=...print("Result:",cucm.axlGetPhone(name="SEP..."))print("Result:",cucm.axlGetPhone(**{"uuid":"........-....-....-....-............"}))# Result: {#     'name': '...',#     ...,#     'lines': {#         'line': [#             {#                 'index': 1,#                  ...,#                 'dirn': {#                     'pattern': '...',#                     'routePartitionName': {'_value_1': '...', 'uuid': '{........-....-....-....-............}'},#                     'uuid': '{........-....-....-....-............}'#                 },#                 'uuid': '{........-....-....-....-............'#             }#         ],#         'lineIdentifier': None#     },#     'uuid': '{........-....-....-....-............}'# }(back to top)Remove MethodsaxlRemoveCallPickupGroupkeywords argsrequired:uuidornameorpatternor (pattern,routePartitionName)axlRemoveDeviceProfilekeywords argsrequired:uuidornameaxlRemoveLinekeywords argsrequired:uuidorpatternor (pattern,routePartitionName)axlRemoveLineGroupkeywords argsrequired:uuidornameaxlRemovePhonekeywords argsrequired:uuidornameaxlRemoveRemoteDestinationkeywords argsrequired:uuidordestinationaxlRemoveRemoteDestinationProfilekeywords argsrequired:uuidornameaxlRemoveTranslationPatternkeywords argsrequired:uuidorpatternor (pattern,routePartitionName)axlRemoveUserkeywords argsrequired:uuidoruseridCode Example:cucm=...print("Result:",cucm.axlRemovePhone(name="SEP..."))print("Result:",cucm.axlRemovePhone(**{"uuid":"........-....-....-....-............"}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}(back to top)Reset MethodsaxlResetPhonekeywords argsrequired:uuidornameCode Example:cucm=...print("Result:",cucm.axlResetPhone(name="SEP..."))print("Result:",cucm.axlResetPhone(**{"uuid":"........-....-....-....-............"}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}(back to top)Restart MethodsaxlRestartPhonekeywords argsrequired:uuidornameCode Example:cucm=...print("Result:",cucm.axlRestartPhone(name="SEP..."))print("Result:",cucm.axlRestartPhone(**{"uuid":"........-....-....-....-............"}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}(back to top)RIS MethodsRIS - Real-time Information Server retrieve information stored in all RIS nodes in the cluster.https://developer.cisco.com/docs/sxml/#!risport70-apirisGetCtikeywords argsrequired:collection_name- values:DevNamesorDirNumbersitems_collection- Collection of Dictionaries. Depending on the type of collection, dictionaries should
contain the keynameforDevNamesor the keypatternforDirNumberscti_mgr_class- values:ProviderorDeviceorLinerisGetPhonekeywords argsrequired:phone_namerisGetPhoneskeywords argsrequired:devices_collection- Collection of Dictionaries. Dictionaries should contain the keynameCode Example:cucm=...print("Result:",cucm.risGetCti(collection_name="DirNumbers",items_collection=({"pattern":"..."},{"pattern":"..."},...),cti_mgr_class="Line"))# Result: {#     'SelectCtiItemResult': {#         'TotalItemsFound': 6,#         'CtiNodes': {...}#     },#     'StateInfo': '<StateInfo><Node Name="cucm.example.com" ...'# }print("Result:",cucm.risGetPhone(phone_name="CSF...",is_raw_resp=False))# Result: {#     'DeviceName': 'CSF...',#     'Status': 'Registered',#     'Model': 503,#     'Product': 390,#     'IP': 'xxx.xxx.xxx.xxx',#     'NodeName': 'cucm.example.com',#     'ActiveLoadID': '...',#     'InactiveLoadID': '...'# }print("Result:",cucm.risGetPhones(devices_collection=({"name":"TCT..."},{"name":"CSF..."},...),is_raw_resp=False))# Result = (#     {#         'name': 'TCT...',#         'ris': {#             'DeviceName': 'TCT...',#             'Status': 'UnRegistered',#             'Model': 562,#             'Product': 449,#             'IP': 'xxx.xxx.xxx.xxx',#             'NodeName': 'cucm.example.com',#             'ActiveLoadID': '...',#             'InactiveLoadID': '...'#         }#     },#     {#         'name': 'CSF...',#         'ris': {#             'DeviceName': 'CSF...',#             'Status': 'Registered',#             'Model': 503,#             'Product': 390,#             'IP': 'xxx.xxx.xxx.xxx',#             'NodeName': 'cucm.example.com',#             'ActiveLoadID': '...',#             'InactiveLoadID': '...'#         }#     },#     {#         'name': 'SEP...',#         'ris': {'DeviceName': None, 'Status': None, ...}#     },#     {#         'name': 'RDP...',#         'ris': {'DeviceName': None, 'Status': None, ...}#     },#     {#         'name': 'UDP...',#         'ris': {'DeviceName': None, 'Status': None, ...}#     }# )(back to top)Update MethodsaxlUpdateCallPickupGroupkeywords argsrequired:uuidornameorpatternor (pattern,routePartitionName)expected:newPatterndescriptionnewRoutePartitionNameremoveMembersaddMembersmemberspickupNotificationpickupNotificationTimercallInfoForPickupNotificationnewNameaxlUpdateDeviceProfilekeywords argsrequired:uuidornameexpected:newNamedescriptionuserHoldMohAudioSourceIdvendorConfigmlppDomainIdmlppIndicationStatuspreemptionlinesline- collection of:required:indexdirnpatternroutePartitionNameexpected:labeldisplayringSettingconsecutiveRingSettingringSettingIdlePickupAlertringSettingActivePickupAlertdisplayAsciie164MaskmwlPolicymaxNumCallsbusyTriggercallInfoDisplayrecordingProfileNamemonitoringCssNamerecordingFlagaudibleMwispeedDialpartitionUsageassociatedEndusersmissedCallLoggingrecordingMediaSourcephoneTemplateNamespeeddialsbusyLampFieldsblfDirectedCallParksaddOnModulesuserLocalesingleButtonBargejoinAcrossLinesloginUserIdignorePresentationIndicatorsdndOptiondndRingSettingdndStatusemccCallingSearchSpacealwaysUsePrimeLinealwaysUsePrimeLineForVoiceMessagesoftkeyTemplateNamecallInfoPrivacyStatusservicesfeatureControlPolicy`axlUpdateLinekeywords argsrequired:uuidorpatternor (pattern,routePartitionName)expected:newPatterndescriptionnewRoutePartitionNameaarNeighborhoodNameaarDestinationMaskaarKeepCallHistoryaarVoiceMailEnabledcallForwardAllcallForwardBusycallForwardBusyIntcallForwardNoAnswercallForwardNoAnswerIntcallForwardNoCoveragecallForwardNoCoverageIntcallForwardOnFailurecallForwardAlternatePartycallForwardNotRegisteredcallForwardNotRegisteredIntcallPickupGroupNameautoAnswernetworkHoldMohAudioSourceIduserHoldMohAudioSourceIdalertingNameasciiAlertingNamepresenceGroupNameshareLineAppearanceCssNamevoiceMailProfileNamepatternPrecedencereleaseClausehrDurationhrIntervalcfaCssPolicydefaultActivatedDeviceNameparkMonForwardNoRetrieveDnparkMonForwardNoRetrieveIntDnparkMonForwardNoRetrieveVmEnabledparkMonForwardNoRetrieveIntVmEnabledparkMonForwardNoRetrieveCssNameparkMonForwardNoRetrieveIntCssNameparkMonReversionTimerpartyEntranceTonedirectoryURIsallowCtiControlFlagrejectAnonymousCallpatternUrgencyconfidentialAccessexternalCallControlProfileenterpriseAltNume164AltNumpstnFailovercallControlAgentProfileuseEnterpriseAltNumuseE164AltNumactiveaxlUpdateLineGroup- required keywords args:uuidornamekeywords argsrequired:uuidornameexpected:distributionAlgorithmrnaReversionTimeOuthuntAlgorithmNoAnswerhuntAlgorithmBusyhuntAlgorithmNotAvailableremoveMembersaddMembersmembersnewNameautoLogOffHuntaxlUpdatePhonekeywords argsrequired:uuidornameexpected:newNamedescriptioncallingSearchSpaceNamedevicePoolNamecommonDeviceConfigNamecommonPhoneConfigNamenetworkLocationlocationNamemediaResourceListNamenetworkHoldMohAudioSourceIduserHoldMohAudioSourceIdautomatedAlternateRoutingCssNameaarNeighborhoodNameloadInformationvendorConfigversionStamptraceFlagmlppDomainIdmlppIndicationStatuspreemptionuseTrustedRelayPointretryVideoCallAsAudiosecurityProfileNamesipProfileNamecgpnTransformationCssNameuseDevicePoolCgpnTransformCssgeoLocationNamegeoLocationFilterNamesendGeoLocationremoveLinesaddLineslinesline- collection of:required:indexdirnpatternroutePartitionNameexpected:labeldisplayringSettingconsecutiveRingSettingringSettingIdlePickupAlertringSettingActivePickupAlertdisplayAsciie164MaskmwlPolicymaxNumCallsbusyTriggercallInfoDisplayrecordingProfileNamemonitoringCssNamerecordingFlagaudibleMwispeedDialpartitionUsageassociatedEndusersmissedCallLoggingrecordingMediaSourcephoneTemplateNamespeeddialsbusyLampFieldsprimaryPhoneNameringSettingIdleBlfAudibleAlertringSettingBusyBlfAudibleAlertblfDirectedCallParksaddOnModulesuserLocalenetworkLocaleidleTimeoutauthenticationUrldirectoryUrlidleUrlinformationUrlmessagesUrlproxyServerUrlservicesUrlservicessoftkeyTemplateNamedefaultProfileNameenableExtensionMobilitysingleButtonBargejoinAcrossLinesbuiltInBridgeStatuscallInfoPrivacyStatushlogStatusownerUserNameignorePresentationIndicatorspacketCaptureModepacketCaptureDurationsubscribeCallingSearchSpaceNamererouteCallingSearchSpaceNameallowCtiControlFlagpresenceGroupNameunattendedPortrequireDtmfReceptionrfc2833DisabledcertificateOperationauthenticationModekeySizekeyOrderecKeySizeauthenticationStringupgradeFinishTimedeviceMobilityModeremoteDevicedndOptiondndRingSettingdndStatusisActivemobilityUserIdNamephoneSuitephoneServiceDisplayisProtectedmtpRequiredmtpPreferedCodecdialRulesNamesshUserIdsshPwddigestUseroutboundCallRolloverhotlineDevicesecureInformationUrlsecureDirectoryUrlsecureMessageUrlsecureServicesUrlsecureAuthenticationUrlsecureIdleUrlalwaysUsePrimeLinealwaysUsePrimeLineForVoiceMessagefeatureControlPolicydeviceTrustModeearlyOfferSupportForVoiceCallrequireThirdPartyRegistrationblockIncomingCallsWhenRoaminghomeNetworkIdAllowPresentationSharingUsingBfcpconfidentialAccessrequireOffPremiseLocationallowiXApplicableMediacgpnIngressDNuseDevicePoolCgpnIngressDNmsisdnenableCallRoutingToRdWhenNoneIsActivewifiHotspotProfilewirelessLanProfileGroupelinGroupaxlUpdateRemoteDestinationkeywords argsrequired:uuidordestinationexpected:newNamenewDestinationanswerTooSoonTimeranswerTooLateTimerdelayBeforeRingingCellownerUserIdenableUnifiedMobilityremoteDestinationProfileNameenableExtendAndConnectctiRemoteDeviceNamedualModeDeviceNameisMobilePhoneenableMobileConnectlineAssociationstimeZonetodAccessNamemobileSmartClientNamemobilityProfileNamesingleNumberReachVoicemaildialViaOfficeReverseVoicemailremoveRingScheduleaddRingScheduleringScheduleaccessListNameaxlUpdateRemoteDestinationProfilekeywords argsrequired:uuidornameexpected:newNamedescriptioncallingSearchSpaceNamedevicePoolNamenetworkHoldMohAudioSourceIduserHoldMohAudioSourceIdlinesline- collection of:required:indexdirnpatternroutePartitionNameexpected:labeldisplayringSettingconsecutiveRingSettingringSettingIdlePickupAlertringSettingActivePickupAlertdisplayAsciie164MaskmwlPolicymaxNumCallsbusyTriggercallInfoDisplayrecordingProfileNamemonitoringCssNamerecordingFlagaudibleMwispeedDialpartitionUsageassociatedEndusersmissedCallLoggingrecordingMediaSourcecallInfoPrivacyStatususerIdignorePresentationIndicatorsrerouteCallingSearchSpaceNamecgpnTransformationCssNameautomatedAlternateRoutingCssNameuseDevicePoolCgpnTransformCssuserLocalenetworkLocaleprimaryPhoneNamedndOptiondndStatusmobileSmartClientProfileNameaxlUpdateTranslationPatternkeywords argsrequired:uuidorpatternor (pattern,routePartitionName)expected:dialPlanNamerouteFilterNamenewPatterndescriptionnewRoutePartitionNameblockEnablecalledPartyTransformationMaskcallingPartyTransformationMaskuseCallingPartyPhoneMaskcallingPartyPrefixDigitsnewDialPlanNamedigitDiscardInstructionNamepatternUrgencyprefixDigitsOutnewRouteFilterNamecallingLinePresentationBitcallingNamePresentationBitconnectedLinePresentationBitconnectedNamePresentationBitpatternPrecedenceprovideOutsideDialtonecallingPartyNumberingPlancallingPartyNumberTypecalledPartyNumberingPlancalledPartyNumberTypecallingSearchSpaceNameresourcePriorityNamespaceNamerouteNextHopByCgpnrouteClasscallInterceptProfileNamereleaseClauseuseOriginatorCssdontWaitForIDTOnSubsequentHopsisEmergencyServiceNumberaxlUpdateUserkeywords argsrequired:uuidoruseridexpected:firstNamedisplayNamemiddleNamelastNamenewUseridpasswordpinmailiddepartmentmanageruserLocaleassociatedDevicesprimaryExtensionassociatedPcassociatedGroupsenableCtidigestCredentialsphoneProfilesdefaultProfilepresenceGroupNamesubscribeCallingSearchSpaceNameenableMobilityenableMobileVoiceAccessmaxDeskPickupWaitTimeremoteDestinationLimitpasswordCredentialspinCredentialsenableEmccctiControlledDeviceProfilespatternPrecedencenumericUserIdmlppPasswordcustomUserFieldshomeClusterimAndPresenceEnableserviceProfilelineAppearanceAssociationForPresencesdirectoryUritelephoneNumbertitlemobileNumberhomeNumberpagerNumberremoveExtensionsInfoaddExtensionsInfoextensionsInfoselfServiceuserProfilecalendarPresenceldapDirectoryNameuserIdentitynameDialingipccExtensionconvertUserAccountaccountTypeauthenticationTypeenableUserToHostConferenceNowattendeesAccessCodezeroHopCode Example:cucm=...print("Result:",cucm.axlUpdatePhone(name="SEP",description="New Description"))print("Result:",cucm.axlUpdatePhone(**{"uuid":"........-....-....-....-............","description":"New Description"}))# Result: {'return': '{........-....-....-....-............}', 'sequence': None}(back to top)SQL CollectionExecute QueryCode Example:cucm=...sql_query="""SELECT d.pkid, d.name, d.descriptionFROM device dWHERE d.name LIKE '%value%'"""print("Result:",cucm.sqlExecuteQuery(sql_query=sql_query))# Result: (#     {'pkid': '........-....-....-....-............', 'name': 'SEP...', 'description': '...'},#     {'pkid': '........-....-....-....-............', 'name': 'RDP...', 'description': '...'},#     {'pkid': '........-....-....-....-............', 'name': 'UDP...', 'description': '...'},#     {'pkid': '........-....-....-....-............', 'name': 'TCT...', 'description': '...'},#     {'pkid': '........-....-....-....-............', 'name': 'BOT...', 'description': '...'},#     {'pkid': '........-....-....-....-............', 'name': 'CSF...', 'description': '...'},#     {'pkid': '........-....-....-....-............', 'name': 'TAB...', 'description': '...'},#     {'pkid': '........-....-....-....-............', 'name': 'CIPC...', 'description': '...'},# )(back to top)Update QueryCode Example:cucm=...sql_query="""UPDATE device dSET d.description = 'New Description via SQL'WHERE d.name LIKE '%value%'"""print("Result:",cucm.sqlUpdateQuery(sql_query=sql_query))# Result: {#     'return': {#         'rowsUpdated': 1#     },#     'sequence': None# }(back to top)Predefined QueriesListMethods:sqlListCallingSearchSpacesqlListCredentialPolicysqlListDevicePoolsqlListDirGroupsqlListMediaResourceGroupsqlListMediaResourceListsqlListPhoneTemplatesqlListProcessNodesqlListRecordingProfilesqlListRegionsqlListRoutePartitionsqlListSoftkeyTemplatesqlListTelecasterServicesqlListTypeClasssqlListTypeCountrysqlListTypeModelsqlListTypeUserLocalesqlListUcServiceProfilesqlListUcUserProfileSearchMethods:sqlSearchCallPickupGroup- required keywords args:criterion,valueArgcriterion:Name,Description,Pattern,Member Line Number,Member Line DescriptionsqlSearchDevice- required keywords args:criterion,valueArgcriterion:Name,Description,Line Number,Line Description,Userid,Device Pool,Device TypesqlSearchEndUser- required keywords args:criterion,valueArgcriterion:Userid,Display Name,Last Name,First Name,Phone Number,Mobile Number,Email,Directory URIsqlSearchLineGroup- required keywords args:criterion,valueArgcriterion:Name,Member Line Number,Member Line DescriptionsqlSearchTranslationPattern- required keywords args:criterion,valueArgcriterion:Pattern,Description,Partition,Calling Search Space,Called Party Transform Mask,Prefix Digits OutValidateMethods:sqlValidateDeviceEndUserDesignation- required keywords args:device(Type Class: Any)sqlValidateLine- required keywords args:pattern(Type Pattern Usage: Device Only)sqlValidatePattern- required keywords args:pattern(Type Pattern Usage: Any)(back to top)Create Your Own MethodsDon't store sensitive information in source code. For example use ".env" file.Code Example:frompathlibimportPathfromtypingimportUnionfromtinyCUCMimportCucmSettings,cucm_loggingBASE_DIR=Path(__file__).resolve().parentsettings={"pub_fqdn":"cucm.example.com","pub_version":"11.5","user_login":"Your-CUCM-Account","user_password":"You%wILL#&neVeR!gUEss","toolkit_path":BASE_DIR/"axlsqltoolkit","cert_path":BASE_DIR/"cucm.crt","session_verify":False,"session_timeout":15,"ris_wsdl_filename":"wsdlRISService70_test.xml",}classCucmAxlCustom(CucmSettings):def__init__(self,**kwargs):super().__init__(**kwargs)@cucm_loggingdefaxlYourOwnGetMethod(self,**kwargs:Union[dict,...])->dict:"""AXL Your Own `Get` or Any Other Method.:param kwargs:      Required Fields:`kwargs = {"uuid": "uuid"}`or`kwargs = {"name": "name"}`:return:"""returnself._axl.getCallManager(**kwargs)["return"]if__name__=="__main__":cucm=CucmAxlCustom(**settings)print("Result:",cucm.axlYourOwnGetMethod(**{"uuid":"........-....-....-....-............"}))# Result: {#     'callManager': {#         'name': 'CM_...',#         'description': '...',#         'autoRegistration': {...},#         'ports': {...},#         'processNodeName': {...},#         'lbmGroup': {...},#         'ctiid': ...,#         'uuid': '{........-....-....-....-............}'#     }# }(back to top)LicenseDistributed under the MIT License. SeeLICENSEfor more information.(back to top)ContactLuarvick -lu.luarvick@gmail.comProject Link:https://github.com/luarvick/tinyCUCM(back to top)